سؤال

أواجه مشكلة صغيرة في الحصول على ملفات الموارد المترجمة للعمل على Windows Phone 7. إليك ما أفعله:

  1. إنشاء ملف مورد ، قل "strings.resx" (بناء الإجراء: ترجمة)
  2. قم بإنشاء مفتاح ، قل "Testkey" مع قيمة افتراضية لسلسلة فارغة
  3. أضف ملفًا للموارد الإنجليزية في نفس المجلد مع قيمة "بعض السلسلة الإنجليزية": STRINGS.EN-US.RESX (بناء الإجراء: مورد مضمن)
  4. أضف ملف مورد ياباني في نفس المجلد مع قيمة "بعض السلسلة اليابانية": STRINGS.JA-JP.RESX (بناء الإجراء: مورد مضمن)

في جهاز الكمبيوتر الخاص بي Silverlight ، تعمل تطبيقات WPF التي تعمل بشكل جيد عندما أقوم بتغيير thread.currentThread.CurrentCulture. لكن في الهاتف ، يبدو أنني أحصل دائمًا على القيمة الموجودة في ملف strings.resx - سلسلة فارغة.

لقد حاولت استخدام رمز المصمم الذي تم إنشاؤه وتأمين مدير الموارد باليد ولا يبدو أنه مهم. هذا هو الكود الخاص بي:

            Type t = typeof(Strings);

            _resourceManager = new ResourceManager(
                t.Namespace + "." + t.Name,
                t.Assembly);

            _resourceManager.GetString("TestKey");

أخبرني أن الموارد المترجمة مدعومة على الهاتف ... ؛> ماذا أفعل خطأ؟ شكرًا!

تحديث: شكرا أوليفييه لإعادة توجيه الرابط. لقد رأيت ذلك أيضًا ولكن فاتني خطوة مهمة. لم أضف عقدة "زراعة الأدعية" إلى Csproj. أحدث كل الفرق - على أمل أن لا يفقد شخص آخر ساعتين في محاولة لمعرفة ذلك كما فعلت.

<SupportedCultures>de-DE;es-ES;</SupportedCultures>
هل كانت مفيدة؟

المحلول

كتبت منشور مدونة يوفر روابط لمجموعة من أدلة العولمة / التوطين ل WP7. هناك Windows Phone 7 في 7 فيديو تدريبي ساعدني ذلك على فهم الأساسيات. بعد ذلك كان الأمر ببساطة مسألة تعلم كيفية القيام بتجديد البيانات:

توضح لك مقالة MSDN كيفية إعداد الملفات وإنشاء فئة ToldizedStrings ، لكنهم يفترضون بعد ذلك أنك تعرف كيفية استخدام هذه الفئة لربط البيانات. Visual Studio 2010 و Silverlight معالجة البيانات المرتبطة بشكل مختلف عن WinForms ، ويصبح أكثر إرباكًا لأن XAML لديه أيضًا تعريف خاص بالموارد التي تختلف عن موارد .NET التي أنشأتها للتو. يستخدم Silverlight أيضًا مصطلح مورد للإشارة إلى الملفات التي تستخدم عملية إنشاء "المحتوى" ، حيث يتم إغلاق هذه الملفات في ملف .xap على غرار كيفية تضمين الملفات التي تحتوي على "موارد" في مجموعة .dll. (على سبيل المثال: تحميل صورة من ملفات المحتوى أو الموارد). لقد وجدت أنه بدلاً من استخدام text = "{binding path = ResourceFile.ResourCename ، Source = {StaticResource anclizedResources}}" XAML Syntax كان من الأسهل استخدام الخطوات التالية:

  1. افتح صفحة XAML الأساسية (عادةً mainpage.xaml) في مصمم Visual Studio

  2. افتح الخصائص الخاصة بـ PhoneApplicationPage وقم بتعيين DataContext ليكون Application.Resources -> tornizedstrings. ملاحظة: إذا كنت تستخدم بالفعل كائن DataContext ، فيجب عليك دمج فئة LocalizedStrings في هذا الكائن بحيث يكون له دعم توطين.

  3. بمجرد تعيين DataContext الخاص بالصفحة ، يمكنك تغيير ربط البيانات لأي عنصر تحكم على الصفحة ببساطة عن طريق تحديد الخاصية (على سبيل المثال: النص ، والتحقق ، وما إلى ذلك) ، وتحديد "تطبيق ربط البيانات ..." ، وتعيين المسار إلى standizedResources.btntext أو أيا كان اسم قيمة المورد المطلوبة.

نصائح أخرى

بالطبع ، يتم دعم الموارد المحلية على الهاتف:

كيفية: إنشاء تطبيق محلي لـ Windows Phone

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