سؤال

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

لديّ سلسلة من المشاريع التي تشكل جزءًا من حل تقارير كبير يتبع هذا التنسيق

البرنامج المساعد. **** تقرير

  • مرجع (مجلد)
  • DataAccessLayer (مجلد)
  • مجموعات البيانات (مجلد)
  • datawrappers (مجلد)
  • توطين (مجلد)

    *.CS

حيث * هو اسم التقرير الذي سأقوم بإنشائه

يحتوي *.CS على بيان تصدير حتى أتمكن من استلامه باستخدام MEF (لست متأكدًا مما إذا كان هذا مناسبًا ، لكن اعتقد أنه يستحق الذكر). مساحة الاسم في *.CS هي CompanyName.Datashaper.plugin. *تقرير. نظرًا لاسم المشروع ، وموقع الملفات ، قمت بتغيير مساحة الاسم الافتراضية لكل مشروع ليكون CompanyName.datashaper.plugin.*تقرير (كان مجرد مكون إضافي.*تقرير قبل التغيير).

الآن للمشكلة .. داخل *.CS أنا أقوم بتثبيت ResourceManager. هذا يبدو هكذا ...

_resourceManager =
                new ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report",
                    Assembly.GetExecutingAssembly());

داخل ملف مصمم Resx الخاص بي لدي ما يلي ...

internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report", typeof(*Report).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }

مكالمتي إلى مدير الموارد تبدو هكذا ...

string resourceString = _resourceManager.GetString(resourceKey, _currrentCultureInfo);

حيث _CurrentCultureInfo هو كائن CultureInfo الصحيح.

لدي 4 ملفات Resx مختلفة في مجلد التوطين الخاص بي لكل مشروع ، (**** report.resx ، **** report.fr-ca.resx ، **** report.en-gb.resx ، *** *Report.de-de.resx).

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

-> تحديث سريع لسؤالي الأصلي ، ولكن يبدو أن هذا مرتبط بـ MEF. قمت بتثبيت صفي بالطريقة القديمة (تقرير *جديد ()) وجعلت مكالمة التوطين وتعمل بشكل جيد

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

المحلول

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

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