كيف يمكنني التأكد من تحميل إصدار اللغة المناسب لمورد السلسلة في وقت التشغيل?
-
12-11-2019 - |
سؤال
لدي ملف مورد سلسلة يسمى " سلاسل.ريسكس " في بلدي VB.NET مشروع ، يعرف بأنه مورد مضمن.لدي ملف آخر يسمى strings.es.resx
, ، والذي يحتوي على جميع السلاسل نفسها باللغة الإسبانية.أنا تحميل المورد في وقت التشغيل باستخدام التعليمات البرمجية التالية:
MyStrings = New ResourceManager("myprog.strings", GetType(MainForm).Assembly)
لقد قمت بتعيين لغة اللغة إلى إسبانيول في ويندوز وتسجيل الدخول مرة أخرى ، ولكن ما زلت الحصول على الموارد سلسلة الإنجليزية تحميل عند تنفيذ ما سبق.كيف يمكنني تحميل الموارد الإسبانية إذا كانت لغة ويندوز هي وفاق?كنت أتوقع أن يتم التعامل معها تلقائيا.
المحلول
نلقي نظرة على System.Threading.Thread.CurrentThread.CurrentUICulture
الملكية-لديها عادة من كونها ثابتة إلى أون لنا.
إذا كان الأمر كذلك ، فحاول ضبطه على نفس CurrentCulture
.
تحديث
نظرا لأن ذلك لم ينجح ، تحقق من أن مجلد الإخراج للتطبيق الخاص بك يحتوي على es
مجلد ، داخل الذي هو دل دعا سلاسل.الموارد.دلل.إذا لم يكن الأمر كذلك ، إذن ، في الأساس ، لا يجد مدير الموارد مورد السلسلة الخاص بالثقافة ، لأنه غير موجود ، وفي هذه الحالة نسخه ويجب أن يعمل.
نصائح أخرى
إخلاء المسؤولية - هذا كله من الذاكرة وقد لا يكون دقيقا بنسبة 100٪: -)
يتم تحميل صافي الموارد باستخدام Thread.CurrentUICulture
(ما لم تقم بتجاوزه صراحة عند تحميل الموارد في التعليمات البرمجية). Thread.CurrentUICulture
تم تعيينه بواسطة لغة واجهة المستخدم المستخدمة في تثبيت ويندوز ، ولا يمكن تغييرها.هذا ليس هو نفسه Thread.CurrentCulture
, ، والتي تم تعيينها في لوحة التحكم ، ويمكن تغييرها في أي وقت.
على سبيل المثال ، على جهاز الكمبيوتر الخاص بي, CurrentCulture
المرتجعات "en-GB"
لأن هذا هو المكان الذي أنا فيه ، ولكن CurrentUICulture
المرتجعات "en-US"
لأن مايكروسوفت توفر فقط نسخة واحدة باللغة الإنجليزية من ويندوز.