سؤال

يبدو أنه لا توجد طريقة جيدة لتوطين تطبيق WPF.يبدو أن MSDN يعتقد أن تناثر XAML الخاص بي به x:Uidإن إنشاء ملفات CSV، ثم إنشاء تجميعات جديدة (باستخدام نموذج التعليمات البرمجية الخاص بها!) هو الحل.والأسوأ من ذلك أن هذه العملية لا تتناول كيفية ترجمة الصور أو النقط الثنائية (على سبيل المثال، ملفات PDF) أو السلاسل المضمنة في التعليمات البرمجية.

إذًا، كيف يمكنك توطين تطبيق ما:

  1. تحتوي على عدة تجميعات
  2. يحتوي على صور ونقط ثنائية أخرى (على سبيل المثال:مستندات PDF) التي تحتاج إلى الترجمة
  3. يحتوي على بيانات سلسلة غير موجودة في XAML (على سبيل المثال: MessageBox.Show("Hello World");)
هل كانت مفيدة؟

المحلول

لست خبيرًا هنا، ولكن "رمي" xaml الخاص بك باستخدام x:Uids ليس أسوأ من "رمي" تعليمات Windows Forms البرمجية الخاصة بك بكل هراء جدول السلسلة الذي يتعين عليك القيام به لترجمتها.

بقدر ما أفهم ، لا تزال تطبيقات WPF تدعم "جميع موارد CLR الإطارية بما في ذلك الجداول ، والصور ، وما إلى ذلك." مما يعني أنه يمكن أن يكون لديك موارد محلية.

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

نصائح أخرى

يجب عليك إلقاء نظرة على المقالة والرمز المتاح هنا.وهو يصف طرقًا مختلفة لتوطين تطبيقات WPF، باستخدام LocBaml، أو ملحقات العلامات المخصصة، أو الخصائص المرفقة.IMHO الحل الأفضل هو استخدام ملحقات العلامات وموارد Resx.يحتوي الكود على إطار عمل الترجمة للقيام بذلك.

يمكنك استخدام ملفات "ResX" القديمة التي تدعم جميع السيناريوهات المذكورة.كيف يمكن تحقيق ذلك في تطبيق WPF موضح هنا:

إطار تطبيق WPF (WAF) => انظر نموذج الترجمة

جرب أدوات Gnu GetText المساعدة والتطبيقات الداعمة.نعم هو كذلك توليد #C فئات تعتمد على ResourceManager وResourceSets، وبالطبع يمكنك إعادة استخدام الترجمات لأجزاء أخرى من تطبيقك - مثل صفحات الويب، أو التعليمات البرمجية الأصلية، أو iPhone وما إلى ذلك.

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