يمكن ل WPML قراءة ملف إعداد يخبره بما يحتاج إلى ترجمة في القوالب والإضافات. يسمى الملف wpml-config .xml ويتم وضعه في المجلد الجذر للمكون الإضافي أو القالب.
محتوى
- الغرض من ملف إعداد اللغة
- إنشاء ملف wpml-config.xml تلقائيا
- الهيكل وبنية الكود
- استخدام ملف إعداد لغة WPML مع القوالب الفرعية
الهدف
كجزء من تحقيق التوافق مع WPML، يجب عليك أيضا إنشاء ملف إعداد يساعدك في الحفاظ على التوافق في إصداراتك المستقبلية. يمكن ل WPML ترجمة أي شيء على موقع WordPress الخاص بك، ولكن عليك أن تخبره بما يحتاج إلى ترجمة. هذا الملف يفعل ذلك.
انتقل إلى صفحة WPML ← إعدادات.
تخبر هذه الصفحة WPML بكل ما يحتاج إلى معرفته، بما في ذلك الحقول المخصصة التي يجب ترجمتها أو مزامنتها، والمنشورات والتصنيفات المخصصة التي يجب أن تكون متعددة اللغات، وحتى النصوص الإدارية التي يجب ترجمتها.
يتضمن ملف إعداد اللغة هذه المعلومات بحيث لا يحتاج كل مستخدم إلى إدخالها يدويا في صفحة المدير.
بالنسبة لبعض القوالب والمكونات الإضافية ، نستضيف ملفات إعداد اللغة على خوادمنا. يمكنك الاطلاع على قائمة هنا. تم تعيينه لتجاوز ملف إعداد اللغة المحلي الذي يتم وضعه داخل المجلد الجذر للقالب أو المكون الإضافي.
يتيح لك WPML أيضا تجاوز أي إعدادات تم تحميلها بواسطة ملفات إعداد لغة القالب والمكونات الإضافية يدويا. ينطبق هذا على كل من ملفات إعداد اللغة داخل المجلد الجذر للقالب أو المكون الإضافي وملفات إعداد اللغة المستضافة على خوادمنا.
إنشاء ملف wpml-config.xml تلقائيا
إذا لم تكن معتادا على إنشاء ملفات XML ، فقد أنشأ فريقنا المكون الإضافي Multilingual Tools الذي يجعل هذه المهمة أسهل. على الرغم من أنه تم تصميمه في البداية كأداة لمساعدة مؤلفي السمات والمكونات الإضافية على جعل منتجاتهم جاهزة متعددة اللغات ، إلا أنه يمكن استخدامه بسهولة لإنشاء ملف wpml-config.xml الخاص بك.
لمعرفة المزيد حول إنشاء ملف wpml-config.xml ، تفضل بزيارة صفحة المكون الإضافي للأدوات متعددة اللغات. على وجه التحديد، انظر أسفل قسم كيف يمكنني إنشاء ملفات إعداد اللغة باستخدام الأدوات متعددة اللغات؟.
بمجرد حصولك على ملف الإعداد ، قم بإضافته إلى جذر مجلد القالب الخاص بك. إذا كان لديك واحد بالفعل ، فلا تقم بالكتابة فوقه. بدلا من ذلك ، قم بتحرير ملف XML الأصلي وأضف الرمز الذي تم إنشاؤه باستخدام المكون الإضافي Multilingual Tools .
يرجى ملاحظة أن هذا المكون الإضافي غير مخصص للاستخدام في مواقع الإنتاج الحية.
لقراءة هذا البرنامج التعليمي وإنشاء ملفات إعداد اللغة للقوالب والمكونات الإضافية ، يمكنك البدء بهذا المثال – wpml-config.zip.
ستحتاج إلى تحريره ، ولكن يمكنك استخدام أقسام وهيكل هذا الملف.
الهيكل وبنية الكود
يجب وضع محتوى ملف wpml-config.xml داخل هذه العلامات
<wpml-config>
و
</wpml-config>
حاليا، يمكنك تهيئة البيانات التالية وإعدادات الترجمة في ملف الإعداد هذا:
- محتوى منشئ الصفحة
- الحقول المخصصة
- شروط مخصصة
- أنواع مخصصة
- التصنيفات المخصصة
- كتل Gutenberg
- نصوص المدير / wp_options
- إعداد محول اللغة
1. الرموز القصيرة ومحتوى منشئ الصفحات
يتيح لك WPML استخدام ملف wpml-config.xml لتحديد الرموز القصيرة التي يجب إضافتها إلى ترجمة المحتوى.
في الأمثلة أدناه ، نوضح لك كيفية تسجيل الرموز القصيرة لمنشئ الصفحات. يمكنك استخدام نفس بنية الكود لتسجيل جميع أنواع الرموز القصيرة للترجمة.
1.1 ترجمة النصوص
دعنا نفكر في مثال حيث تمت إضافة فاصل نص إلى صفحة باستخدام Visual Composer. هذا الفاصل له عنوان ، ويبدو رمزه القصير كما يلي:
[vc_text_separator title="Separator Title"]
لترجمة عنوان فاصل النص هذا ، نحتاج إلى إضافة بضعة أسطر إلى ملف wpml-config.xml الخاص بنا. بهذه الطريقة، سوف “يعرف” WPML أن عنوان هذا الفاصل يحتاج إلى ترجمة. يتبع هذا في الواقع نفس المنطق المستخدم لأنواع المنشورات المخصصة والحقول المخصصة وغيرها.
الكود التالي هو مثال على ما نحتاج إلى إضافته إلى ملف wpml-config.xml في هذه الحالة.
<wpml-config> <shortcodes> <shortcode> <tag>vc_text_separator</tag> <attributes> <attribute>title</attribute> </attributes> </shortcode> </shortcodes> </wpml-config>
دعنا نذهب من خلال هيكل المثال أعلاه:
- ابدأ بعلامة الرموز القصيرة. يجب وضع أي رموز قصيرة في موقعك تحتاج إلى ترجمة تحت هذه العلامة.
- ثم استخدم علامة الرمز القصير لكى تشمل جميع العلامات التي تنتمي إلى رمز قصير واحد.
- يتم استخدام العلامة المسماة tag لتحديد اسم الرمز القصير. في هذه الحالة هو vc_text_separator. يمكنك إضافة تسميات مخصصة اختيارية لعرضها في كل من محرر الترجمة المتقدم أو محرر الترجمة الكلاسيكي. يتم تضمين هذه التسميات أيضا عند التصدير إلى ملفات XLIFF. راجع المثال أدناه حول تصنيفات العلامات والسمات.
- يمكن أن تحتوي الرموز القصيرة على سمة واحدة أو أكثر ، لذلك نلفها في علامة السمات (الجمع) ونستخدم علامة السمة (المفرد) لتحديد عنوان كل سمة.
يتضمن منشئو الصفحات (أحيانا) عناصر التصميم التي تحتوي على سمات الارتباط.
يمكنك جعل الروابط الداخلية تشير تلقائيا إلى الإصدار المترجم من هذا المنشور باستخدام خيار رابط الرمز القصير الجديد “type=”link الخاص ب wpml-config.xml.
يمكنك استخدام سمة الترميز مع هذه. تتعامل مع الترميز الخاص الذي يستخدمه العديد من منشئي الصفحات. عادة ما تكون سمة الترميز خاصة بمنشئ الصفحة المستخدم. يقبل القيم التالية:
- base64 – الرمز القصير ل HTML الخاص ب Visual Composer. يتم تخزين HTML كنص base64 في الرمز القصير.
- vc_link – تنسيق ارتباط خاص ل Visual Composer .
- av_link – تنسيق رابط خاص ل Enfold.
- allow_html_tags – عادة ما يتم تجريد علامات HTML من سمات الرمز القصير. اضبط الترميز على allow_html_tags إذا كانت سمة الرمز القصير يجب أن تسمح بعلامات HTML. يجب استخدام هذا بحذر لأن السماح بعلامات HTML في بعض المواقف يمكن أن يفسد التنسيق وقد يكون مشكلة أمنية
<wpml-config> <shortcodes> <shortcode> <tag>av_button</tag> <attributes> <attribute>label</attribute> <attribute type="link" encoding="av_link">link</attribute> </attributes> </shortcode> </shortcodes> </wpml-config>
إذا كنت تفكر في استخدام الرموز القصيرة ذات ترميز urlencoded ، فتأكد من قراءة صفحة حول ترجمة الرموز القصيرة المشفرة urlencoded.
<wpml-config> <shortcodes> <shortcode> <tag label="My shortcode label">my_shortcode</tag> <attributes> <attribute label="Shortcode title">title</attribute> </attributes> </shortcode> </shortcodes> </wpml-config>
تتيح لك إضافة تسميات إلى العلامات والسمات عرض تسميات مخصصة في محرر الترجمة المتقدم أو محرر الترجمة الكلاسيكي. يمكن أن يساعد هذا المترجم على فهم سياق النص بشكل أفضل.
1.2 ترجمة الوسائط
يمكنك استخدام ترجمة وسائط WPML لترجمة الصور في محتوى أداة إنشاء الصفحات. يتم ذلك عن طريق تحويل معرفات الصور وعناوين URL للصور. من الضروري إخبار منشئ الصفحة الذي يستخدم الرموز القصيرة بكيفية إجراء هذا التحويل. الكود التالي هو مثال على ما نحتاج إلى إضافته إلى ملف wpml-config.xml في هذه الحالة.
<wpml-config> <shortcodes> <shortcode> <!-- Convert media IDs in `gallery_ids` attribute, and ignore the shortcode content --> <tag ignore-content="1">et_pb_gallery</tag> <attributes> <attribute type="media-ids">gallery_ids</attribute> <attributes> </shortcode> <shortcode> <!-- Convert the media URL in the content, translate some string attributes for `title` and `alt`, convert media URL in `src` attribute --> <tag type="media-url">et_pb_image</tag> <attributes> <attribute>title_text</attribute> <attribute>alt</attribute> <attribute type="media-url">src</attribute> </attributes> </shortcode> </shortcodes> </wpml-config>
يمكنك استخدام القيم التالية:
- ignore-content – يمكن استخدامه داخل عنصر tag . هذه القيمة اختيارية ويمكن أن تكون إما 0 أو 1. يمكنك استخدام هذه السمة لتحقيق التوافق مع الإصدارات السابقة للرموز القصيرة للوسائط الجديدة. إذا تم تعيين القيمة إلى 1 ، فلن تتم معالجة محتوى الرمز القصير.
- type – يمكن استخدامها داخل في عنصر tag . يمكنك أيضا استخدام محتوى الرمز القصير الذي يحتوي على عنوان URL للوسائط كقيمة اختيارية داخل عنوان url للوسائط.
- type – يمكن استخدامه أيضا داخل عنصر سمة . في هذه الحالة ، يمكن أن تحتوي على إحدى القيم الاختيارية التالية:
- media-ids – قائمة مفصولة بفواصل لمعرفات الوسائط.
- media-url – عنوان URL للوسائط
- link – يشير إلى صفحة أخرى من الموقع وسيقوم WPML تلقائيا بتحويله إلى عنوان URL لترجمة الصفحة
1.3 ترجمة ودجات منشئ الصفحات
اعتبارا من WPML 4.4.4، يمكنك الآن تسجيل ودجات أداة إنشاء الصفحات داخل ملف إعداد اللغة الخاص بك. يرجى الاطلاع على صفحة الوثائق الخاصة بنا حول كيفية تسجيل ودجات أدوات إنشاء الصفحات للترجمة.
1.4 تحويل معرفات الرمز القصير تلقائيا
اعتبارا من WPML 4.5.9، يمكنك الإعلان عن معرفات المنشورات أو مصطلحات التصنيف الموجودة في سمات الرمز القصير. يمكن بعد ذلك تحويل هذه المعرفات تلقائيا على الواجهة الأمامية لموقعك.
على سبيل المثال ، عند التفكير في الرمز القصير التالي:
[foo_product_list product_ids="12,34,56"]
يمكننا أن نعلن أن السمة product_ids تحتفظ بمعرفات المنشور عبر الإعداد التالي:
<shortcode> <tag ignore-content="1">foo_product_list</tag> <attributes> <attribute type="post-ids" sub-type="product">product</attribute> </attributes> </shortcode>
في الواجهة الأمامية ، سيتم تحويل الرمز القصير تلقائيا إلى:
[foo_product_list product_ids="13,35,57"]
يمكنك استخدام سمات التكوين التالية:
- type – إما post-ids أو taxonomy-ids
- sub-type (اختياري) – يمكن أن يكون الكيان المحدد لل type إذا كان معروفا بالفعل. على سبيل المثال ، منتج لنوع المنشور المخصص للمنتج . إذا لم يتم تعريفه ، يتم تخمين الكيان المحدد.
تحويل المعرف متعدد الاستخدامات ويحاول التكيف مع معظم التنسيقات الممكنة للمعرفات (single ID, list of IDs, serialized array, JSON encoded array).
2. الحقول المخصصة
يجب توفير اسم الحقل المخصص وكذلك الإجراء الذي من المتوقع أن يتخذه WPML: الترجمة، النسخ، النسخ مرة واحدة، التجاهل.
<wpml-config> <custom-fields> <custom-field action="copy">quantity</custom-field> <custom-field action="translate">custom-title</custom-field> <custom-field action="copy">weight</custom-field> <custom-field action="copy-once">bg-color</custom-field> <custom-field action="translate">custom-description</custom-field> <custom-field action="ignore">date-added</custom-field> </custom-fields> </wpml-config>
يجب أن تكون هذه الكتلة متداخلة تحت <علامة wpml-config> .
يمكنك تعيين خيارات الترجمة التالية للحقول المخصصة:
- ترجمة :يسمح للمستخدم بترجمة قيمة الحقل المخصص. يتم عرض هذه الحقول على شاشة محرر الترجمة ويمكن إرسالها إلى أي من خدمات الترجمة الاحترافية.
- نسخ: ينسخ هذا الإجراء قيمة الحقل المخصص للغة الافتراضية إلى اللغات الثانوية. وهذا يعني أن تحديث قيمة الحقل المخصص للغة الافتراضية سيتم نسخه دائما إلى اللغة الثانوية. لا تظهر الحقول المخصصة التي تم تعيينها نسخ على شاشة محرر الترجمة.
- نسخ مرة واحدة: يتم نسخ قيمة الحقل المخصص إلى اللغة الثانوية في عملية الترجمة الأولية. لن تظهر الحقول المخصصة التي تستخدم إجراء النسخ مرة واحدة على شاشة محرر الترجمة. ومع ذلك ، يمكن للمستخدم تغيير قيمة الحقل المخصص للغة الثانوية لتكون مختلفة عن اللغة الافتراضية باستخدام شاشة تحرير النشر. يفضل تعيين الحقول المخصصة التي تحتوي على إعدادات مثل لون الخلفية ولون الخط وحجم الخط وغيرها ، للنسخ مرة واحدة. يتيح ذلك للمستخدم الحصول على إعدادات مختلفة للمحتوى المترجم عن تلك التي تم تعيينها للمنشورات والصفحات باللغة الافتراضية. على سبيل المثال ، يريد المستخدم تعيين لون الخلفية لنفس العنصر ليكون أصفر في اللغة الافتراضية وأزرق في اللغة الثانوية. يرجى ملاحظة أن تحرير حقل تم تعيينه نسخ مرة واحدة لن يضع علامة على الحقل كحقل يحتاج إلى تحديث. وذلك لأن الحقل لن يتم نسخه إلى ترجمة موجودة، بل يتم نسخه فقط عند إنشاء الترجمة.
- تجاهل: يؤدي هذا الإجراء إلى إزالة الحقل المخصص من النسخ إلى اللغة الثانوية.
يمكنك إضافة سمات إلى <علامات الحقول> المخصصة. تقوم هذه السمات بتخصيص نصوص التعليمات في محرر الترجمة المتقدم أو محرر الترجمة الكلاسيكي.
- يمكن أن يكون الstyle عبارة عن line أو textarea أو visual ، لعرض سطر واحد أو منطقة نص أو WYSIWYG على التوالي.
- يتم عرض التسمية بجوار الحقل.
- تحدد المجموعة ما إذا كان الحقل المخصص ينتمي إلى مجموعة وما يجب أن تكون عليه تسمية المجموعة. عندما يكون الحقل في مجموعة:
* تمت إزالة الحقل من قسم الحقل المخصص
* تمت إضافة الحقل إلى قسم المجموعة ذات الصلة
<wpml-config> <custom-fields> <custom-field action="translate" style="line" label="Title">custom-title</custom-field> <custom-field action="translate" style="textarea" label="Description">custom-description</custom-field> <custom-field action="translate" style="visual" label="Some content" group="Custom group">custom-wysiwyg</custom-field> </custom-fields> </wpml-config>
يمكنك أيضا إضافة سمات ترميز اختيارية لتغيير الترميز من القيمة الافتراضية (بدون ترميز). تقبل سمة الترميز القيم التالية:
- json
- base64
- urlencode
تتيح لك السمة استخدام ترميز متعدد. في هذه الحالة ، يجب فصل القيم بفاصلة ، على سبيل المثال encoding="json,base64"
.
<wpml-config> <custom-fields> <custom-field action="translate" encoding="json,base64">keywords</custom-field> </custom-fields> </wpml-config>
عند استخدام محتوى wpml-config.xml هذا، يتم عرض هذه الحقول المخصصة في محرر الترجمة المتقدم أو محرر الترجمة الكلاسيكي، كما هو موضح في الصورة التالية.
2.1 ترجمة المفاتيح الفرعية في الحقول المخصصة
يترجم WPML جميع المفاتيح الفرعية في الحقول المخصصة بشكل افتراضي. من الممكن تجاوز مثل هذا السلوك عن طريق تحديد المفاتيح الفرعية التي يجب ترجمتها.
<wpml-config> <custom-fields> <custom-field action="translate">with_attributes</custom-field> <custom-field action="translate">with_deep_attributes</custom-field> <custom-field action="translate">no_attributes</custom-field> </custom-fields> <custom-fields-texts> <key name="with_attributes"> <key name="attribute1" /> <key name="attribute2" /> </key> <key name="with_deep_attributes"> <key name="attribute1" /> <key name="attribute2"> <key name="level1"> <key name="level2"> </key> </key> </key> </key> </custom-fields-texts> </wpml-config>
من الممكن أيضا استخدام أحرف البدل بنفس طريقة استخدامها لنصوص المدير:
- قم بمطابقة جميع الحقول الفرعية التي تبدأ بالعنوان باستخدام التعليمات البرمجية:
<key name="title-*" />
- قم بمطابقة جميع الحقول الفرعية وتستخدم بشكل عام لمطابقة فهرس صفيف باستخدام التعليمات البرمجية:
<key name="*" />
- للحصول على
[{"title":"First title"},{"title":"Second title"}]
رمز الاستخدامExample of configuration file with wildcards
<wpml-config> <custom-fields-texts> <key name="key-name"> <key name="*"> <key name="title" /> </key> </key> </custom-fields-texts> </wpml-config>
3. المصطلحات المخصصة
يجب توفير اسم المصطلح المخصص وكذلك الإجراء الذي من المتوقع أن يتخذه WPML: ترجمة، نسخ، نسخ مرة واحدة، تجاهل.
<wpml-config> <custom-term-fields> <custom-term-field action="copy">term_meta_A</custom-term-field> <custom-term-field action="translate">term_meta_B</custom-term-field> <custom-term-field action="ignore">term_meta_C</custom-term-field> <custom-term-field action="copy-once">term_meta_D</custom-term-field> </custom-term-fields> </wpml-config>
يجب أن تكون هذه الكتلة متداخلة تحت <علامة wpml-config> .
يمكنك تعيين خيارات الترجمة التالية للحقول المخصصة:
- ترجمة: يسمح للمستخدم بترجمة قيمة المصطلح المخصص. يتم عرض هذه المصطلحات على شاشة محرر الترجمة ويمكن إرسالها إلى أي من خدمات الترجمة الاحترافية.
- نسخ: ينسخ هذا الإجراء قيمة المصطلح المخصص من اللغة الافتراضية إلى اللغات الثانوية. وهذا يعني أن تحديث قيمة المصطلح المخصص للغة الافتراضية سيتم نسخه دائما إلى اللغة الثانوية. لا تظهر المصطلحات المخصصة التي تم تعيينها للنسخ على شاشة محرر الترجمة.
- نسخ مرة واحدة: يتم نسخ قيمة المصطلح المخصص إلى اللغة الثانوية في عملية الترجمة الأولية. لن تظهر المصطلحات المخصصة التي تستخدم إجراء النسخ مرة واحدة على شاشة محرر الترجمة. ومع ذلك ، يمكن للمستخدم تغيير قيمة المصطلح المخصص للغة الثانوية لتكون مختلفة عن اللغة الافتراضية باستخدام شاشة تحرير المنشور.
- تجاهل: يلغي هذا الإجراء المصطلح المخصص من النسخ إلى اللغة الثانوية.
4. أنواع مخصصة
أنواع المنشورات المخصصة التي يجب أن يترجمها WPML.
<wpml-config> <custom-types> <custom-type translate="1">book</custom-type> <custom-type translate="1">DVD</custom-type> </custom-types> </wpml-config>
يمكنك إضافة سمة “display-as-translated” إلى العلامة لإظهار أنواع المقالات باللغة الافتراضية في حالة عدم وجود ترجمة.
<wpml-config> <custom-types> <custom-type translate="1" display-as-translated="1">movie</custom-type> </custom-types> </wpml-config>
يمكنك إضافة السمة “تلقائي” إلى العلامة لاستبعاد نوع مشاركة من الترجمة التلقائية عند استخدام وضع ترجمة كل شيء . يرجى ملاحظة أنه إذا كنت تستخدم هذه السمة، فلن يعمل ملف إعداد اللغة بالكامل إلا مع إصدارات WPML 4.5.0 والإصدارات الأحدث.
<wpml-config> <custom-types> <custom-type translate="1" automatic="0">contact_form</custom-type> </custom-types> </wpml-config>
5. التصنيفات المخصصة
التصنيفات المخصصة التي قد يستخدمها المكون الإضافي الخاص بك والتي تم تسجيلها بالفعل في WP.
<wpml-config> <taxonomies> <taxonomy translate="1">genre</taxonomy> <taxonomy translate="1">type</taxonomy> <taxonomy translate="0">publisher</taxonomy> </taxonomies> </wpml-config>
ملاحظة: يمكن حذف التصنيفات التي لا تحتاج إلى ترجمة من هذه القائمة.
يمكنك إضافة السمة “display-as-translated” إلى العلامة لإظهار التصنيفات باللغة الافتراضية في حالة عدم وجود ترجمة.
<wpml-config> <taxonomies> <taxonomy translate="1" display-as-translated="1">wild-west</taxonomy> </taxonomies> </wpml-config>
6. كتل Gutenberg
باستخدام محرر Gutenberg ، يمكنك إنشاء محتوى باستخدام الكتل.
يمكنك تحديد أجزاء كتلة Gutenberg التي يجب ترجمتها عن طريق إضافة إعدادات إلى wpml-config.xml.
يستخدم Xpath لتحديد أجزاء النص التي تحتاج إلى ترجمة.
6.1 تسجيل كتل Gutenberg كقابلة للترجمة
لنفترض أن لدينا صورة معروضة باستخدام الكود التالي:
<!-- wp:image {"id":3} --> <figure class="wp-block-image"><img src="http://example.com/wp-content/uploads/2018/07/figure-2.png" alt="Image alt text" class="wp-image-3"/><figcaption>Image Caption</figcaption></figure> <!-- /wp:image -->
نريد ترجمة figcaption
قيم السمات لهذه alt
الصورة.
لتحقيق ذلك ، يجب إدراج الكود التالي في wpml-config.xml:
<wpml-config> <gutenberg-blocks> <gutenberg-block type="core/image" translate="1"> <xpath>//figure/figcaption</xpath> <xpath>//figure/img/@alt</xpath> </gutenberg-block> </gutenberg-blocks> </wpml-config>
يرجى أن تضع في اعتبارك أن النوع هو core/image
وليس wp:image
لأن هذه هي القيمة التي يتم إرجاعها بواسطة واجهة برمجة تطبيقات الكتلة.
يمكنك تحديد حقول كتلة Gutenberg التي هي روابط. سيقوم WPML بعد ذلك باستبدال أي روابط بترجماتها إذا كانت متاحة.
<wpml-config> <gutenberg-blocks> <gutenberg-block type="core/some-block" translate="1"> <xpath type="link">//a/@href</xpath> </gutenberg-block> </gutenberg-blocks> </wpml-config>
6.2 ترجمة سمات الكتلة
فيما يلي مثال واحد على تنسيق لتعريف كتلة المحرر:
<wpml-config> <gutenberg-blocks> <gutenberg-block type="my-plugin/my-block" translate="1"> <xpath label="My Block">//p</xpath> <key name="title" /> <key name="foo"> <key name="bar1" /> <key name="bar2" /> </key> <key name="/^[^_]\S+$/" search-method="regex" /> <key name="something" search-method="wildcards" /> </gutenberg-block> </gutenberg-blocks> </wpml-config>
يمكنك استخدام العنصر الأساسي بنفس الطريقة التي يتم استخدامها مع تكوين نصوص المدير / wp_options . هذا يعني أيضا أنه يمكنك الحصول على عناصر أساسية داخل العناصر الرئيسية الأصلية.
يمكنك استخدام سمة التسمية لإضافة تسميات مخصصة اختيارية يتم عرضها في محرر الترجمة المتقدم بجوار عناصر الكتلة. عندما تكون سمة التسمية جزءا من علامة gutenberg-block ، سيتم استخدامها كتسمية احتياطية لعناصر الكتلة التي لم يتم تعريف تسمية معينة لها.
<wpml-config> <gutenberg-blocks> <gutenberg-block type="my-plugin/mybutton" translate="1" label="My fallback block label"> <xpath>//span</xpath> <xpath>//a@href</xpath> </gutenberg-block> </gutenberg-blocks> </wpml-config>
يمكن أن تحتوي طريقة البحث عن السمات على إحدى القيمتين:
- أحرف البدل (افتراضي)
- regex.
يمكن استخدام أحرف البدل بنفس الطريقة التي يتم استخدامها بها لنصوص المدير. هذا يعني أنه يمكن استخدام العلامة النجمية (*) في سمة الاسم. فيما يلي مثال على كتلة واحدة:
<!-- wp:my-plugin/my-block { "myp": { "mypTitle":"The title", "mypContent":"The Content", "_mypSystem:"Meta attribute to not translate" } } /-->
يمكننا تعيين تعريف الكتلة باستخدام حرف بدل:
<wpml-config> <gutenberg-blocks> <gutenberg-block type="my-plugin/my-block" translate="1"> <key name="myp"> <key name="myp*" /> </key> </gutenberg-block> </gutenberg-blocks> </wpml-config>
سيسمح لنا ذلك بترجمة “العنوان” و “المحتوى” لأن هذه هي السمات الوحيدة التي تبدأ ب myp.
يسمح لنا regex بالحصول على تعبير منتظم في سمة الاسم. يمكن أن يكون هذا مفيدا للغاية للتكوينات المعقدة. فيما يلي مثال على كتلة واحدة:
<!-- wp:my-plugin/my-block { "data": { "title":"The title", "_title":"e980759463943209f6f1ae09a239e353", "content":"The Content", "_content":"1502a7b825dfe7b789c63830609f1701" } } /-->
يمكننا تعيين تعريف الكتلة بتعبير عادي:
<wpml-config> <gutenberg-blocks> <gutenberg-block type="my-plugin/my-block" translate="1"> <key name="data"> <key name="/^[^_]\S+$/" search-method="regex" /> </key> </gutenberg-block> </gutenberg-blocks> </wpml-config>
سيسمح لنا ذلك بترجمة “العنوان” و “المحتوى” نظرا لأن هذه هي السمات الوحيدة التي لا تبدأ ب _.
تحفظ بعض المكونات الإضافية للكتل البيانات في سلسلة JSON مشفرة بعنوان URL داخل سمة الكتلة. تسمح لك سمة الترميز بفك تشفير السلسلة وتسجيل مفاتيحها الفرعية للترجمة.
على سبيل المثال، يخزن المكون الإضافي LazyBlocks محتوى حقل مكرر في سلسلة JSON مشفرة:
<!-- wp:lazyblock/testwpml {"name":"%5B%7B%22firstname%22:%22Shekhare%22,%22lastname%22:%22Bhandari%22%7D,%7B%22firstname%22:%22Compatibility%22,%22lastname%22:%22Escalation%22%7D%5D","blockId":"Z169b0O","blockUniqueClass":"lazyblock-testwpml-Z169b0O"} /-->
يمكنك تسجيل المفاتيح الفرعية الاسم الأول واسم العائلة باستخدام تكوين XML التالي:
<wpml-config> <gutenberg-blocks> <gutenberg-block type="lazyblock/team" translate="1"> <key name="name" encoding="json"> <key name="*"> <key name="firstname" /> <key name="lastname" /> </key> </key> </gutenberg-block> </gutenberg-blocks> </wpml-config>
6.3 كتلة النطاق الاسمي
يمكنك الحصول على إعداد عمومي للنطاق الاسمى للكتلة.
إذا كان إعداد الكتلة هو نفسه لجميع الكتل في نطاق اسمى ، فيمكن كتابتها على النحو التالي:
<wpml-config> <gutenberg-blocks> <gutenberg-block type="my-plugin" translate="1"> <key name="data"> <key name="/^[^_]\S+$/" search-method="regex" /> </key> </gutenberg-block> </gutenberg-blocks> </wpml-config>
6.4 تحويل المعرفات تلقائيا في كتل
تحويل المعرف متعدد الاستخدامات ويحاول التكيف مع معظم التنسيقات الممكنة للمعرفات (single ID, list of IDs, serialized array, JSON encoded array).
النظر في الكتلة التالية:
<!-- wp:foo/form {"ids":[27,28]} --> <div class="wp-block-foo-form-wrap"> <form class="foo-form" action="" method="post"> <input type="hidden" name="foo_form_post_ids" value="27,28" /> <input type="submit" /> </form> </div> <!-- /wp:foo/form -->
يمكننا أن نعلن ، كمعرفات منشور ، معرفات سمات الكتلة وقيمة سمة علامة HTML foo_form_post_ids على النحو التالي:
<gutenberg-block type="foo/form" translate="0"> <key name="ids"> <key name="*" type="post-ids" sub-type="post" /> </key> <xpath type="post-ids" sub-type="post">//*[@name="foo_form_post_ids"]/@value</xpath> </gutenberg-block>
وسيتم تحويل الكتلة بأولوية قصوى على فلتر render_block_data على النحو التالي:
<!-- wp:foo/form {"ids":[42,43]} --> <div class="wp-block-foo-form-wrap"> <form class="foo-form" action="" method="post"> <input type="hidden" name="foo_form_post_ids" value="42,43" /> <input type="submit" /> </form> </div> <!-- /wp:foo/form →
يمكنك استخدام سمات الإعداد التالية:
- النوع – يمكن أن يكون معرفات ما بعد أو معرفات تصنيف
- النوع الفرعي (اختياري): يمكن أن يكون الكيان المحدد للنوع إذا كان معروفا بالفعل. على سبيل المثال ، منتج لنوع المنشور المخصص للمنتج . إذا لم يتم تعريفه ، يتم تخمين الكيان المحدد.
7. نصوص المدير / wp_options
السلاسل التي تشكل جزءا من الخيارات التي تحفظها المكونات الإضافية أو السمات في جدول wp_options .
عندما تستخدم السمات والمكونات الإضافية get_option ، فإنها تقرأ القيم من الجدول wp_options . يمكن ل WPML تصفية هذه المكالمات وتوفير ترجمة لقيم هذه الخيارات.
يعمل هذا إذا كان سجل wp_option عبارة عن سلسلة بسيطة ولكن أيضا عندما يكون صفيفا متسلسلا.
لترجمة خيار واحد ، أضف إدخال مفتاح ضمن نصوص المدير. لترجمة صفيف متسلسل ، أضف عدة مفاتيح أسفل مفتاح ، كما ترى في my_plugin_options في المثال أدناه.
<wpml-config> <admin-texts> <key name="my_plugins_options"> <key name="option_name_1" /> <key name="option_name_2" /> <key name="options_group_1"> <key name="sub_option_name_11" /> <key name="sub_option_name_12" /> </key> <key name="options_group_2"> <key name="sub_option_name_21" /> <key name="sub_option_name_22" /> </key> </key> <key name="simple_string_option"/> </admin-texts> </wpml-config>
من الممكن استخدام حرف البدل * في المفاتيح الفرعية مثل الحالة التالية.
<wpml-config> <admin-texts> <key name="testing_option"> <key name="*"/> </key> </admin-texts> </wpml-config>
إنه يساوي هذا الرمز:
<wpml-config> <admin-texts> <key name="testing_option"> <key name="sub_key_1"/> <key name="sub_key_2"> <key name="sub_sub_21"> <key name="sub_sub_211"/> </key> <key name="sub_sub_21"/> </key> <key name="more_sub_keys"/> </key> </admin-texts> </wpml-config>
يرجى ملاحظة أن حرف البدل * لا يعمل في المفاتيح الأصلية:
<wpml-config> <admin-texts> <key name="some_option_*" /> <key name="*"/> </admin-texts> </wpml-config>
8. إعداد محول اللغة
يتيح إعداد محدد لمحول اللغة المدمج في WPML. يمكن استخدامه أيضا لإعادة تعيين إعداد محول اللغة إذا تم تغييره من الواجهة الخلفية (من قيمه الأولية).
للاطلاع على التغييرات الجديدة، تأكد من النقر على زر الاستعادة الافتراضية أسفل صفحة WPML ← لغات .
<wpml-config> <language-switcher-settings> <key name="additional_css">{inline CSS styles}</key> <key name="link_empty">{0 or 1}</key> <key name="copy_parameters">{parameter1, parameter2}</key> <key name="sidebars"> <key name="{sidebar slug}"> <key name="display_flags">{0 or 1}</key> <key name="display_names_in_current_lang">{0 or 1}</key> <key name="display_names_in_native_lang">{0 or 1}</key> <key name="display_link_for_current_lang">{0 or 1}</key> <key name="widget_title">{widget title}</key> <key name="template">{template slug}</key> <!-- color picker keys --> <key name="background_normal">#{hex color}</key> <key name="border_normal">#{hex color}</key> <key name="font_current_normal">#{hex color}</key> <key name="font_current_hover">#{hex color}</key> <key name="background_current_normal">#{hex color}</key> <key name="background_current_hover">#{hex color}</key> <key name="font_other_normal">#{hex color}</key> <key name="font_other_hover">#{hex color}</key> <key name="background_other_normal">#{hex color}</key> <key name="background_other_hover">#{hex color}</key> </key> </key> <key name="statics"> <key name="footer"> <key name="show">{0 or 1}</key> <key name="display_flags">{0 or 1}</key> <key name="display_names_in_current_lang">{0 or 1}</key> <key name="display_names_in_native_lang">{0 or 1}</key> <key name="display_link_for_current_lang">{0 or 1}</key> <key name="template">{template slug}</key> <!-- color picker keys --> <key name="background_normal">#{hex color}</key> <key name="border_normal">#{hex color}</key> <key name="font_current_normal">#{hex color}</key> <key name="font_current_hover">#{hex color}</key> <key name="background_current_normal">#{hex color}</key> <key name="background_current_hover">#{hex color}</key> <key name="font_other_normal">#{hex color}</key> <key name="font_other_hover">#{hex color}</key> <key name="background_other_normal">#{hex color}</key> <key name="background_other_hover">#{hex color}</key> </key> <key name="post_translations"> <key name="show">{0 or 1}</key> <key name="display_flags">{0 or 1}</key> <key name="display_names_in_current_lang">{0 or 1}</key> <key name="display_names_in_native_lang">{0 or 1}</key> <key name="display_link_for_current_lang">{0 or 1}</key> <key name="display_before_content">{0 or 1}</key> <key name="display_after_content">{0 or 1}</key> <key name="template">{template slug}</key> <key name="availability_text">{string like "See post translations: %s"}</key> </key> <key name="shortcode_actions"> <key name="display_flags">{0 or 1}</key> <key name="display_names_in_current_lang">{0 or 1}</key> <key name="display_names_in_native_lang">{0 or 1}</key> <key name="display_link_for_current_lang">{0 or 1}</key> <key name="template">{template slug}</key> <!-- color picker keys --> <key name="background_normal">#{hex color}</key> <key name="border_normal">#{hex color}</key> <key name="font_current_normal">#{hex color}</key> <key name="font_current_hover">#{hex color}</key> <key name="background_current_normal">#{hex color}</key> <key name="background_current_hover">#{hex color}</key> <key name="font_other_normal">#{hex color}</key> <key name="font_other_hover">#{hex color}</key> <key name="background_other_normal">#{hex color}</key> <key name="background_other_hover">#{hex color}</key> </key> </key> </language-switcher-settings> </wpml-config>
لا يجب أن تكون كل هذه الأقسام موجودة في ملف الإعداد ولكن فقط تلك التي تنطبق على المكون الإضافي أو السمة.
استخدام ملف إعداد لغة WPML مع القوالب الفرعية
إذا كنت تستخدم سمة فرعية، فإن ملف تكوين اللغة للقالب الأب يتجاوز الملف الموجود في القالب التابع. يوفر WPML صفحة إعداد تتيح لك تجاوز ذلك بسهولة باستخدام أي إعدادات مخصصة.
دعونا نفكر في مثال حيث يقوم ملف إعداد اللغة للسمة الأصل بتعيين نوع المنشور المخصص “ملكية” ليكون قابلا للترجمة.
إذا كنت تستخدم قالبا تابعا وتريد تعيين نوع المنشور المخصص “خاصية” ليكون غير قابل للترجمة، فانتقل إلى WPML ← صفحة الإعدادات وانقر على علامة التبويب إعداد XML المخصص. استخدم المحرر لتعيين نوع المنشور المخصص “ملكية” ليكون غير قابل للترجمة. ببساطة ، اضبط قيمة سمة الترجمة على 0 بدلا من 1.
يتم إعطاء الأولوية للإعدادات في علامة التبويب إعداد XML المخصص على الإعدادات الموجودة في ملف إعداد اللغة في القالب الأب.