سؤال

خلفية

يقوم المشروع بتثبيت بعض الملفات التي تحتوي على كافة العناصر اللازمة لتعريف UserControl - بعض مصادر المستخدم، وCodeCompileUnit لكود المصمم، وملف resx.في وقت التشغيل، يتم تجميع هذه الملفات في تجميع ويتم استهلاك الفئات بواسطة تطبيقنا الرئيسي (يتم تحديث التجميع فقط عند الضرورة).

سؤال

يجب أن يكون المشروع معولمًا، وكجزء من هذه العملية، هناك حاجة إلى توفير ترجمة لهذه الملفات.هناك خياران: إما السماح بتضمين ملفات resx إضافية لمواقع مختلفة (إما ضمن نفس الملفات أو كملفات إضافية جنبًا إلى جنب) يمكن تجميعها في تجميع القمر الصناعي للتجميع الرئيسي، أو توفير نسخة من كل ملف كامل لكل لغة مدعومة، وتجميع المجموعة المناسبة للغة المدعومة.

  • هل لدى أي شخص أي خيارات أخرى قد تستحق النظر فيها؟
  • ما هي المشاكل التي قد تكون متأصلة في أي من الحلول التي اقترحتها؟

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

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

المحلول

إنشاء تجميع قمر صناعي منفصل لكل ثقافة.وهذا له فائدتان:

  • يمكنك إنشاء كافة التجميعات دفعة واحدة، والحصول على ملف نهائي لكل رقم إصدار ومجموعة اسم ملف، بدلاً من ذلك أيضًا اعتمادا على الثقافة.
  • يمكن أن يكون لديك تجميعات متعددة في نفس التثبيت، وأن تعتمد اللغة المراد استخدامها على لغة النظام، أو تفضيل المستخدم وما إلى ذلك.وهذا سيجعل التطوير والاختبار أسهل بكثير، حيث لن تحتاج إلى الاستمرار في إعادة بناء الملفات ونسخها فقط من أجل تغيير اللغات.
  • هذه هي الطريقة التي تم بها تصميم .NET i18n للعمل.على الرغم من أنني لست خبيرًا في .NET i18n ("اقرأ كتاب Guy Smith-Ferrier" هو أفضل نصيحة لي!) أجد بشكل عام أن أطر العمل تعمل بشكل أفضل عندما تتبع نموذجها المتوقع.

حتى لو تم تنفيذ الجزء الأخير من "بناء تجميع القمر الصناعي" في وقت التشغيل (هل يمكنك القيام بذلك في ثَبَّتَ الوقت بدلاً من ذلك؟) لا تزال تحصل على مزايا الرصاصة الثانية والثالثة على الأقل.وهذا يعني أيضًا أنه إذا حدث ذلك على الإطلاق يفعل اتبع المسار الأكثر طبيعية لتزويد مجموعات الأقمار الصناعية للبدء بها (بدلاً من بنائها على صندوق المستخدم) سيكون لديك القليل لتغييره.

ومع ذلك أعتذر إذا أخطأت في فهم السؤال...

نصائح أخرى

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

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