سؤال

أنا أعمل على حل ويب ASP.NET 2.0 يدير حاليا لغات EN-GB و ZH-HK مثل اللغات الحالية للموقع. سيتم إضافة الآخرين في وقت لاحق.

أحد المتطلبات هو أن المستخدم يمكن أن يختار تجاوز اللغة المعروضة إلى لغة أخرى. لذلك يمكن للمستخدمين في هونغ كونغ عرض الموقع باللغة الإنجليزية والعكس صحيح.

ملفات الموارد 2 هي

  • Resources.RESX (للترجمات الافتراضية باللغة الإنجليزية)
  • Resources.zh-HK.RESX (للصينيين)

ينفذ الموقع هذا المنطق

  1. تحميل تفاصيل المستخدم
  2. تحقق مما إذا كان المستخدم قد تجاوز اللغة المفضلة
  3. إذا كان لديهم، اضبط Thread.currentthread.currentuiculture لهذه اللغة.
  4. إذا لم يفعلوا ذلك، فاستخدم المتصفحات الافتراضية.

يتم تنفيذ ذلك في التعليمات البرمجية التالية:

//This method is written in a base page, which all pages in the site derive from
protected override void InitializeCulture()
{ 
    User user = /*Load custom user object...*/;
    string threadLanguage = Thread.CurrentThread.CurrentUICulture.IetfLanguageTag;

    //If the browser is using a different language, 
    //but the has chosen a preferred language, 
    //change the CurrentUICulture over.
    if (!threadLanguage.Equals(user.Language, StringComparison.OrdinalIgnoreCase))
    {
        CultureInfo userLanguageCulture = CultureInfo.CreateSpecificCulture(user.Language);
        Thread.CurrentThread.CurrentUICulture = userLanguageCulture;
    }

    base.InitializeCulture();
}

لقد قمت أيضا بتكوين Web.config لالتقاط Uicuction Ecuction تلقائيا

<globalization uiCulture="auto"/>

بالنسبة لبعض الأسباب الغريبة للغاية، فإن بعض المستخدمين (حتى مستخدمي EN-GB) يجدون اللغة هي تبديل ZH-HK دون سبب أيا من ذلك - في بعض الأحيان بين الصفحات! لقد أضفت بعض رمز تصحيح الأخطاء إلى هذه الصفحات التي يجب أن تكشف عن مزيد من المعلومات في الأيام المقبلة. كل ما كشف عنه حتى الآن هو أن المستخدمين ليسوا بالضرورة من ZH-HK، وبعضهم من ZH-CN أو ZH-TW. على الرغم من أن هذا قد يساعد، لأن مستخدمي EN-GB يرون ZH-HK، أعتقد أنه مجرد رنجة حمراء.

ما لاحظته هو أن التبديل يحدث في محتوى الصفحة (أولئك الذين يرثون من الصفحة الأساسية، والتي توجد طريقة intializeculture ()). عناصر تحكم المستخدم المخصصة التي كتبتها لا تواجه هذه المشكلة وتظهر باللغة الصحيحة التي تم تكوينها بواسطة المستخدم. لذلك، ستحتوي صفحة على مجموعات من المحتوى الإنجليزي والصيني - EEK!

هل يمكن لأي شخص أن يقدم إرشادات فيما إذا كنت أرميز هذا بشكل صحيح، أو طريقة بديلة للتعبير عن المتطلبات.

شكرا مقدما،

دومينيك

PS هذه مشكلة متقطعة وليس دائم. يبدو أن هناك أي إجراء شائع تكرر هذه المشكلة. يحدث فقط.

PPS هنا صورة للمشكلة في العمل:

Web page showing Chinese/English problem


تحديث 23 سبتمبر 09:

بعد محاولة تغييره إلى الصفحة. ثقيل، ما زلت أواجه المزيد من المشاكل المتقطعة.

لدي بعض الأفكار في سبب حدوث ذلك، لكنني غير قادر على تبرير "فرضيتك":

  • نحن نستخدم وضع العزلة IIS 5.0، وهذا يعني فقط ASPNENT_WP.EXE قيد التشغيل وليس W3WP.exe لكل مثيل IIS.
  • تعمل خدمات التقارير أيضا على الخادم، وتوليد تقارير لهونغ كونغ.
  • يحدث الخطأ بشكل متكرر أكثر عندما كان الموقع تحت الحمل الثقيل - أفترض بسبب التقارير الكبيرة التي يتم إنشاؤها.

بصرف النظر عن ذلك، لا أعرف ماذا يمكن أن يسبب المشكلة. وأود أن أظهر لقطة شاشة أخرى، ولكن المشكلة متطابقة وتظهر في نفس المكان حيث أظهر لقطة شاشة سابقة.

تحديث 25 سبتمبر 09:

أعتقد أننا قد ألغيت ذلك. في Web.config لدينا، هناك علامة تم تكوينها على النحو التالي:

<globalization uiCulture="auto" culture="auto"/>

بعد إزالة ذلك، بعد الاختبار الأولي، لم يحضر بعد!

تحديث 13 أكتوبر 09:

لقد تحولت المشكلة مرة أخرى :-(

تحديث 26 أكتوبر 09:

يبدو أنه إذا تغير مستخدم آخر في الموقع لغته المفضلة، فإنه يؤثر على جميع المستخدمين الآخرين على الموقع! على الرغم من أن لغتهم المفضلة تم تعيين، يؤثر مفتاح لغة شخص آخر بطريقة أو بأخرى على المستخدمين الآخرين للموقع!

هل كانت مفيدة؟

المحلول 2

بعد فترة طويلة، عملت أخيرا في النهاية لماذا حدثت هذه المشكلة.

بدأ الموقع ك Frameset.asp، استضافة 3 .NET إطارات - أعلى، منتصف، أسفل. ما لاحظته، هو أن .NET ولدت 3 جلسات، وبالتالي أثرت أي تغييرات فقط على إطار واحد فقط.

بطريقة ما، فإنه لا يفسر تماما سبب عمل أجزاء فقط من الصفحة، لكنها حلت بعض القضايا ببعض القضايا المتعلقة ببعض عمليات إعادة البيع الغريب.

باختصار، تم تشغيل الإطار .asp، مع إطارات Frameset.aspx، مما يولد معرف ملف تعريف الارتباط / جلسة واحدة لجميع الإطارات.

نصائح أخرى

لا ينبغي أن يكون استخدام الصفحة. كثرة، وليس موضوع؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top