سؤال

لقد حصلت على الإعداد غير القياسي التالي (VS2008، .NET 3.5 SP1):

يوجد مشروع ويب رئيسي يسمى MainSite وهناك العديد من مشاريع الويب "المكونات الإضافية" بأسماء مختلفة.

عند إنشاء هذه المكونات الإضافية، لدي خطوة إنشاء مخصصة تستدعي aspnet_compiler.exe و aspnet_merge.exe.ينتج عن هذا ملفين .DLL - plugin_name.dll و plugin_name_deploy.dll.الأول يحتوي على فئات codebehind، والثاني يحتوي على التعليمات البرمجية التي تم إنشاؤها من ملفات .ascx.

يتم بعد ذلك نسخ ملفات DLL الإضافية هذه إلى /MainSite/bin/Plugins/ مجلد.في وقت التشغيل (بدء تشغيل التطبيق)، يبحث تطبيق MainSite في هذا المجلد ويقوم بتحميل كافة ملفات .DLL هناك ديناميكيًا.

جميع النماذج الخاصة بي موجودة في المكونات الإضافية، في ملفات ascx.التطبيق الرئيسي هو مجرد هيكل يقوم بتحميل عناصر تحكم المستخدم .ascx حسب الحاجة.

والآن تأتي الحاجة إلى التوطين.من الناحية المثالية أود الحصول على ما يلي:

  • عند إنشاء الموارد في Visual Studio، يجب أن يكون هناك ملف موارد منفصل لكل نموذج (ملف .ascx) بحيث يسهل على الأشخاص ترجمة النماذج بشكل متوازٍ.
  • الجيد meta:resourcekey تعتبر الطريقة في ملفات .ascx مريحة للغاية لتوطين عناصر التحكم؛
  • يجب أن تكون آلية التراجع التلقائية للغة/ثقافة المصدر في .NET قابلة للاستخدام؛
  • يجب أن تكون نتيجة التجميع بحيث يمكن نسخ الملفات من جميع المكونات الإضافية إلى ملف /MainSite/bin/Plugins/ مجلد.إذا كان هناك ملف .DLL لكل لغة/ثقافة ويجب وضعه في بعض المجلدات الفرعية المحددة - فلا بأس طالما أن ملفات .DLL من المكونات الإضافية المختلفة لا تحتوي على أسماء متضاربة.

هل هناك أي أفكار حول كيفية تحقيق ذلك؟

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

المحلول

يبدو أنه من الممكن تنفيذ موفري الموارد المخصصة في .NET. هنا عبارة عن مقالة تحتوي على روابط لمقالات أخرى متنوعة تشرح العملية برمتها.في الواقع، يمكنك أخذ القيمة من meta:resourcekey والحصول على القيمة من أي مكان تريد.المقالة أعلاه، على سبيل المثال، تخزن جميع معلومات الترجمة في قاعدة بيانات.

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