سؤال

لقد عملت مع إعدادات العولمة في الماضي ولكن ليس داخل بيئة .NET ، وهو موضوع هذا السؤال. ما أراه هو بالتأكيد بسبب المعرفة التي لم أتعلمها بعد ، لذا سأقدر الإضاءة على ما يلي.


الإعداد: إعداد لغتي الافتراضية هو اللغة الإنجليزية (en-US على وجه التحديد). أضفت لغة ثانية (دنماركية) على نظام التطوير الخاص بي (WinXP) ثم فتحت شريط اللغة حتى أتمكن من الاختيار إما في الإرادة.


لقد اخترت الدنماركي على شريط اللغة ، ثم فتحت المفكرة ووجدت أن اللغة عادت إلى اللغة الإنجليزية على شريط اللغة. أنا أفهم أن إعداد اللغة هو لكل تطبيق, ، لذلك بدا أن المفكرة تعيد الافتراضي إلى اللغة الإنجليزية. (لقد وجدت ذلك غريبًا منذ استخدام Windows وبالتالي يتم استخدام المفكرة في جميع أنحاء العالم.) أعادت إغلاق المفكرة الإعداد على شريط اللغة إلى الدنماركي. لقد قمت بعد ذلك بتشغيل تطبيق WinForm المفتوح المخصص-وهو ما أعرف أنه لا يحدد اللغة-و ايضا عاد من اللغة الإنجليزية إلى الدنماركية عند فتحه ، ثم العودة إلى الدنماركي عند إنهاء!

السؤال رقم 1 أ: كيف يمكنني الحصول على تطبيق WinForm عند الإطلاق لترث الإعداد الحالي لشريط اللغة؟ يبدو أن تجربتي تشير إلى أن كل تطبيق يبدأ مع النظام الافتراضي ويتطلب من المستخدم تغييره يدويًا بمجرد تشغيل التطبيق-يبدو أن هذا الأمر يمثل إزعاجًا كبيرًا لأي شخص يريد العمل مع أكثر من لغة واحدة!

السؤال رقم 1 ب: إذا كان على المرء ، في الواقع ، تعيين اللغة يدويًا في سيناريو متعدد اللغات ، كيف يمكنني تغيير لغة النظام الافتراضية (على سبيل المثال إلى دنماركي) حتى أتمكن من اختبار إطلاق تطبيقي بلغة أخرى؟


أضفت عرض اللغة الحالية في طلبي لهذه التجربة التالية. على وجه التحديد قمت بتعيين أ MouseEnter معالج على ملصق يضبط تلميح الأدوات الخاص به على CultureInfo.CurrentCulture.Name لذلك في كل مرة أظن أنني اعتقدت أنني يجب أن أرى إعداد اللغة الحالية. منذ تعيين اللغة قبل إطلاق تطبيقي لم ينجح ، قمت بتشغيله ثم قمت بتعيين اللغة على الدنماركي. لقد وجدت أن بعض الأشياء (مثل الكتابة في مربع النص) تكرمت هذا الإعداد الدنماركي. لكن mousing على الملصقات المخصصة لا يزال يظهر en-us!

السؤال رقم 2 أ: لماذا CultureInfo.CurrentCulture.Name لا تعكس التغيير من شريط لغتي بينما يبدو أن أجزاء أخرى من تطبيقي تدرك التغيير؟ (محاولة CultureInfo.CurrentUICulture.Name أنتجت نفس النتيجة.)

السؤال رقم 2 ب: هل هناك حدث يطلق النار على تغييرات على شريط اللغة حتى أتمكن من التعرف على تطبيقي عندما يتغير إعداد اللغة؟


2010.05.13 تحديث

المعلومات القصيرة ولكن الحلوة التي قدمها Eric من Microsoft (انظر إجابته أدناه) تناولت مباشرة واحدة فقط من أسئلتي الأربعة (#2A) لكنها وفرت الدافع فقط الذي كنت بحاجة إلى الخوض أكثر ومعرفة الباقي. لصالح الآخرين الذين قد يكونون أيضًا مشهورين من هذا ، إليك ما اكتشفته:

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

الإجابة رقم 1 ب: يتم تعيين لغة الإدخال الافتراضية عبر لوحة التحكم الإقليمية وخيارات اللغة >> علامة التبويب اللغات >> التفاصيل >> علامة التبويب "إعدادات" >> لغة الإدخال الافتراضية.

الإجابة #2A: تم الرد عليها من قبل إريك ، فإن الثقافة الحالية متميزة عن لغة الإدخال الحالية التي تنعكس على شريط اللغة ؛ تتأثر الكتابة في مربع نص فقط بلغة الإدخال الحالية.

الإجابة رقم 2 ب: لا يوجد حدث محدد مسبقًا إما لغة الإدخال أو إشعار تغيير الثقافة الحالي. من الحقيقة المهمة أن نلاحظ هنا هي أن تغييرات لغة الإدخال يتم التعرف عليها تلقائيًا على الفور بينما لا تكون التغييرات الحالية للثقافة. يجب عليك إعادة تشغيل طلبك لتغيير الثقافة الحالية ليتحول سريان-إلا إذا يمكنك ملاحظة التغيير والعمل عليه بنفسك. تحقيقا لهذه الغاية ، وجدت مقالة MSDN (الوجوه العديدة لفئة الثقافة) الذي يوفر مثل هذا الخطاف فقط لتلاحظ التغيير.

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

المحلول

هناك ثلاثة إعدادات لغة منفصلة في اللعب. يتحكم شريط اللغة في لغة الإدخال (لغة الإدخال) التي تختلف عن اللغة لعرض واجهة المستخدم (زراعة الحالية) والتي تتميز عن لغة الفرز/التنسيق/التحليل (الثقافة الحالية).

صحيح أن هذا مربك.

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