سؤال

لقد قمت بإنشاء القسم الخاص بي (قل "الشركة") تحت المشرف system_config

<config>
    <sections>
        <company translate="label">
            <label>Company</label>
            <tab>service</tab>
            <frontend_type>text</frontend_type>
            <sort_order>400</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
        </company >
    </sections>
</config>

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

وحدة 1 :

<config>
    <adminhtml>
        <translate>
            <modules>
                <company>
                    <files>
                        <default>Company_Module1.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>

والوحدة 2 :

<config>
    <adminhtml>
        <translate>
            <modules>
                <company>
                    <files>
                        <default>Company_Module2.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>

حتى هنا هو مشكلتي :لقد قمت بإنشاء الوحدة 2 قبل الوحدة 1.طالما أن الوحدة 2 كانت وحدها في قسم الشركة، فقد تمت ترجمة سلاسلي بشكل صحيح.بمجرد أن أنشأت الوحدة 1 وأضفت مجموعتها ضمن قسم الشركة، تمت ترجمة تسميات وتعليقات الوحدة 1 فقط.

ويبدو أن فقط Company_Module1.csv يستخدم.أي سلسلة في Company_Module2.csv يتم تجاهله.إذا قمت بنسخ بلدي Company_Module2.csv المحتوى في Company_Module1.csv الملف، ثم تمت الآن ترجمة الوحدة 2 بشكل صحيح.إنه أمر غريب جدًا لأنني قمت بتكوين الوحدة 2 بشكل صريح للترجمة منها Company_Module2.csv وليس من Company_Module1.csv.

هل يمكن لأحد أن يفسر هذا السلوك؟في النهاية سيساعدني هذا على فهم الخطأ الذي ارتكبته وإصلاحه.شكرًا !

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

المحلول

لفهم هذا السلوك، عليك أن تعرف كيف يقرأ Magento ملفات التكوين الخاصة به.

أولاً، يتم دمج جميع ملفات XML في بنية واحدة كبيرة.تبدو النتيجة كما يلي:

<config>
    <adminhtml>
        <translate>
            <modules>
                <company>
                    <files>
                        <default>Company_Module1.csv</default>
                        <default>Company_Module2.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>

ثم يتم الوصول إلى معظم القيم عبر XPath أو تحويلها إلى بنية صفيف ترابطي.سيكون هذا الهيكل شيء من هذا القبيل

'files' => array(
    'default' => 'Company_Module1.csv',
    'default' => 'Company_Module2.csv',
 )

لكن لا يمكن للمصفوفة أن تحتوي على نفس المفتاح مرتين، لذلك ينتهي الأمر بقيمة واحدة فقط.

حل

دائما يستخدم فريد المعرفات الموجودة في ملفات التكوين الخاصة بك، أينما يمكنك اختيارها بنفسك.

ينبغي أن يكون:

<config>
    <adminhtml>
        <translate>
            <modules>
                <company_module1>
                    <files>
                        <default>Company_Module1.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>

و

<config>
    <adminhtml>
        <translate>
            <modules>
                <company_module2>
                    <files>
                        <default>Company_Module2.csv</default>
                    </files>
                </company>
            </modules>
        </translate>
    </adminhtml>
</config>

أيضًا، في system.xml، لم تحدد الوحدة النمطية التي يجب استخدامها، وقد يمنحك هذا سلوكًا غير متوقع في حالة وجود ترجمات متعارضة.أحسن:

    <company translate="label" module="Company_Module1">

لكن هذا لا علاقة له بمشكلتك

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