استخدم عمليات إعادة الكتابة الدولية ("إعادة كتابة i18n") لخدمة محتوى مختلف اعتمادًا على بلد المستخدم أو اللغة المفضلة. فيما يلي بعض أمثلة التكوينات التي يمكنك إعدادها:
تقديم نفس المحتوى الفرنسي لجميع المستخدمين الذين يفضلون اللغة الفرنسية (بغض النظر عن البلد).
مثال: صفحة رئيسية تحتوي على نص فرنسيقم بتقديم المحتوى الفرنسي القياسي للمستخدمين الذين يفضلون اللغة الفرنسية، ولكن بالنسبة للمستخدمين الكنديين الذين يفضلون اللغة الفرنسية، قم بتقديم المحتوى الفرنسي الكندي بدلاً من ذلك.
مثال: صفحة رئيسية تحتوي على عبارات فرنسية قياسية مقابل صفحة رئيسية تحتوي على عبارات فرنسية كنديةتقديم نفس المحتوى لجميع المستخدمين الكنديين (بغض النظر عن تفضيلاتهم اللغوية).
مثال: صفحة رئيسية تستخدم اللغة "الافتراضية" لموقعك ولكن مع ميزة خاصة بكندا (مثل موضوع العطلات)قم بتقديم المحتوى الفرنسي الكندي للمستخدمين الكنديين الذين يفضلون اللغة الفرنسية.
مثال: صفحة رئيسية تحتوي على عبارات فرنسية كندية وميزة خاصة بكندا (مثل موضوع العطلة)
تحدد استضافة Firebase بلد المستخدم من عنوان IP الخاص به وتفضيلات اللغة الخاصة بالمستخدم من رأس طلب Accept-Language
( يتم تعيينه تلقائيًا بواسطة متصفح الويب الخاص به عادةً).
إعداد إعادة كتابة i18n
لإعداد عمليات إعادة كتابة i18n لموقع الاستضافة الخاص بك، تحتاج إلى إنشاء دليل "محتوى i18n" لجميع المحتوى المترجم الخاص بك، ثم إضافة سمة i18n
إلى ملف firebase.json
الخاص بك للإشارة إلى دليل "محتوى i18n" الجديد.
فيما يلي الخطوات التفصيلية:
ضمن المجلد
public
لدليل التطبيق المحلي الخاص بك، قم بإنشاء دليل منفصل لـ "محتوى i18n"، ثم قم بإنشاء مجلدات فرعية لكل مجموعة لغة وبلد يدعمها موقعك.في كل مجلد فرعي، أضف المحتوى الخاص بهذه المجموعة، مثل الصفحات الرئيسية التي تحمل موضوع العطلات أو صفحات 404 الخاصة باللغة.
فيما يلي مثال لدليل "محتوى i18n" المسمى
localized-files
:public/ index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ ALL_ca/ index.html es_ALL/ index.html 404.html fr/ index.html 404.html fr_ca/ index.html
public/ // matches requests that aren't specified by your "i18n content" subfolders // example: display your homepage in the "default" language for your site with no country-specific features index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ // matches requests from Canada with any language preference // example: display your homepage in the "default" language for your site with a Canada-specific feature ALL_ca/ index.html // matches requests from any country with a language preference of `es` or `es-foo` // example: display your homepage in Spanish with no country-specific features es_ALL/ index.html 404.html // your site's custom 404 page in Spanish // matches requests from any country with a language preference of `fr` or `fr-foo` // example: display your homepage in Standard French with no country-specific features fr/ index.html 404.html // your site's custom 404 page in French // matches requests from Canada with a language preference of `fr` or `fr-foo` // example: display your homepage in Canadian French and/or with a Canada-specific feature fr_ca/ index.html
يحتوي الدليل
localized-files/
على مجلدات فرعية منفصلة لكل مجموعة لغة ودولة يدعمها موقعك. يجب أن يتبع نمط التسمية لكل مجلد فرعي أحد التنسيقين التاليين:languageCode_countryCode
: يحتوي على محتوى خاص بالمستخدمين الذين لديهم تفضيلات اللغة ورمز البلد هذاlanguageCode
: يحتوي على محتوى خاص بالمستخدمين الذين لديهم تفضيلات اللغة، ولكن المحتوى ليس خاصًا ببلد معين؛ يعادل في الأساسlanguageCode_ALL
راجع القسم الفرعي رموز الدولة واللغة أدناه للحصول على مزيد من التفاصيل حول هذه الرموز. يمكنك استخدام قيمة
ALL
(حساسة لحالة الأحرف) للإشارة إلى أي بلد (مثلes_ALL/
) أو أي لغة (مثلALL_ca/
).لا تحتاج الملفات الموجودة في المجلد الفرعي إلى ملفات مماثلة في الدليل
public
أو المجلدات الفرعية الأخرى. يمكنك إنشاء محتوى خاص تمامًا باللغة و/أو البلد.أضف سمة
i18n
إلى ملفfirebase.json
الخاص بك وحدد الدليل الذي يحتوي على "محتوى i18n" الخاص بك. نواصل مثالنا:// firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... }
يجب أن يكون الدليل المحدد
root
هو اسم الدليل الذي يحتوي على كافة المجلدات الفرعية "محتوى i18n". إذا قمت بوضع كافة المجلدات الفرعية "i18n content" في جذر دليلكpublic
، فاستخدم/
لقيمةroot
. تعتبر الخطوط المائلة البادئة والزائدة في القيمةroot
اختيارية.انشر "محتوى i18n" وقم بالتكوين في موقع الاستضافة الخاص بك.
يمكنك اختبار الإعداد الخاص بك باستخدام تجاوزات ملفات تعريف الارتباط .
رموز البلد واللغة
عند تسمية المجلدات الفرعية "i18n content"، يجب عليك استخدام أحرف صغيرة لكل من رموز البلد واللغة. يمكنك استخدام قيمة ALL
(حساسة لحالة الأحرف) للإشارة إلى أي بلد (مثل es_ALL/
) أو أي لغة (مثل ALL_ca/
).
تحصل الاستضافة على رمز البلد من عنوان IP الخاص بالمستخدم. رموز البلدان هي رموز ISO 3166-1 alpha-2 مكونة من حرفين .
يتم الحصول على رموز اللغة من رأس طلب Accept-Language
الخاص بالمستخدم (عادةً ما يتم تعيينه تلقائيًا بواسطة متصفح الويب الخاص به ). وهي رموز ISO 639-1 . ضع ما يلي في الاعتبار عند استخدام رموز اللغة:
عندما تبحث الاستضافة عن "محتوى i18n" الذي سيتم عرضه، فإنها تقوم بترتيب اللغات بناءً على قيم الجودة في رأس
Accept-Language
.تقوم الاستضافة بإسقاط أي علامات فرعية إقليمية ودولية في رأس
Accept-Language
، لذلك لا يمكن أن يحتوي رمز اللغة الموجود في اسم المجلد الفرعي "محتوى i18n" على هذه العلامات الفرعية. على سبيل المثال، لا يمكنك استخدامes-419
أوes-US
كرمز لغة في اسم مجلد فرعي، ولكن يمكنك استخدامes
.إذا كنت تريد تقديم محتوى إقليمي أو بلد محدد، فيمكنك إنشاء مجلدات فرعية تحتوي على محتوى اللغة الخاصة بالبلد الذي تريد دعمه.
في هذا المثال، سيتلقى طلب من إسبانيا مع تفضيلات اللغة
es
أوes-es
أو حتىes-419
محتوى من المجلد الفرعيes_es/
لأن الاستضافة تتعامل مع كل رموز اللغات هذه على أنهاes
.سيتلقى الطلب المقدم من الولايات المتحدة أو المكسيك أو أي دولة أخرى لها تفضيل اللغة
es-419
محتوى من المجلد الفرعيes_ALL/
لأن الاستضافة تتعامل معes-419
على أنهاes
.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Spain with a language preference of `es` or `es-foo` es_es/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` es_ALL/ index.html
في هذا المثال، سيتلقى طلب من المكسيك مع تفضيل اللغة
es-419
محتوى من المجلد الفرعيes_mx/
لأن الاستضافة تتعامل مع رمز اللغةes-419
على أنهes
.ومع ذلك، فإن الطلب المقدم من الولايات المتحدة مع تفضيل اللغة
es-419
سيتلقى محتوى من المجلد الفرعيes_ALL/
لأن الاستضافة تتعامل مع eses-419
على أنهاes
ولا يوجد مجلد فرعيes_us/
.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Argentina with a language preference of `es` or `es-foo` (mimics behavior of `es-ar` header tag) es_ar/ index.html // matches requests from Spain with a language preference of `es` or `es-foo` (mimics behavior of `es-es` header tag) es_es/ index.html // matches requests from Mexico with a language preference of `es` or `es-foo` (mimics behavior of `es-mx` header tag) es_mx/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` (mimics behavior of `es-419` header tag) es_ALL/ index.html
ترتيب الأولوية لـ "محتوى i18n"
إذا قمت بإعداد عمليات إعادة كتابة i18n، فإن الاستضافة تقدم المحتوى بناءً على ترتيب الأولوية التالي:
مساحات الأسماء المحجوزة التي تبدأ بجزء المسار
/__/*
عمليات إعادة التوجيه التي تم تكوينها
المحتوى الثابت المطابق تمامًا
رمز اللغة + رمز البلد (على سبيل المثال، محتوى من
fr_ca/
)
يتبع الترتيب قيم الجودة لكل لغة في رأسAccept-Language
للطلب.رمز البلد فقط (على سبيل المثال، محتوى من
ALL_ca/
)رمز اللغة فقط (على سبيل المثال، المحتوى من
fr/
أوes_ALL/
)
يتبع الترتيب قيم الجودة لكل لغة في رأسAccept-Language
للطلب.المحتوى الثابت "الافتراضي" يتطابق تمامًا
هذا هو المحتوى الموجود خارج دليل "محتوى i18n"، كما هو الحال في جذر الدليلpublic
.
إعادة كتابة تكوينها
التعامل مع 404
i18n 404 صفحة
يتبع هذا نفس ترتيب الأولوية المذكور أعلاه للمحتوى الثابت المطابق تمامًا.صفحة 404 مخصصة
صفحة 404 الافتراضية (مقدمة من Firebase)
مثال على ترتيب الأولوية
دعونا نواصل مثالنا من فوق. سنستخدم نفس دليل المثال وطلب المثال.
مثال لدليل مشروع محلي مع دليل "محتوى i18n" (يُسمى
localized-files
)public/ index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ ALL_ca/ index.html es_ALL/ index.html 404.html fr/ index.html 404.html fr_ca/ index.html
معلومات الطلب على سبيل المثال
رموز اللغة:
fr
،en
(الفرنسية، ثم الإنجليزية)
يتم ترتيب رموز اللغة بناءً على قيم الجودة في رأسAccept-Language
.رمز البلد:
ca
(كندا)
وفقًا لترتيب أولوية المطابقة التامة وقيم الجودة لتفضيلات اللغة، ستقوم الاستضافة بالبحث في الدلائل عن الصفحة المطلوبة بالترتيب التالي.
public/localized-files/fr_ca/
public/localized-files/en_ca/
public/localized-files/ALL_ca/
public/localized-files/fr_ALL/
public/localized-files/fr/
public/localized-files/en_ALL/
public/localized-files/en/
public/
التعامل مع 404
ما هي الصفحة التي سيتم تقديمها للمستخدم؟
الصفحة المطلوبة:
index.html
index.html
من المجلد الفرعيfr_ca/
نظرًا لأن الاستضافة تبحث في المجلد
fr_ca/
الفرعي أولاً، فستجد التطابق التام لـindex.html
في هذا المجلد الفرعي.الصفحة المطلوبة:
awesome-page.html
404.html
من المجلدfr/
الفرعيتبحث الاستضافة أولاً في الدليل بأكمله (بما في ذلك جميع المجلدات الفرعية "محتوى i18n" والدليل الجذر) بترتيب الأولوية للحصول على تطابق تام، ولكن لا توجد تطابق تام لـ
awesome-page.html
.لذلك، ستبدأ الاستضافة في التعامل مع 404، والذي يتبع نفس ترتيب أولوية i18n مثل عمليات البحث ذات المطابقة التامة. المجلد
fr/
الفرعي هو أول مجلد فرعي يتم البحث فيه ويحتوي على صفحة 404.
لاحظ ما يلي حول هذا البحث والعرض لدليل "محتوى i18n":
لا يحتوي الدليل
localized-files/
في الواقع على مجلدات فرعيةen_ca/
أوen_ALL/
أوen/
، لذا ستتخطى الاستضافة قائمة الأولويات حتى تجد مجلدًا فرعيًا مطابقًا لمجموعة اللغة والبلد الخاصة بالطلب.على الرغم من أن الدليل
localized-files/
يحتوي على مجلد فرعيes_ALL/
، فإن طلب المثال أعلاه لا يتضمن رمز لغةes
أوes-foo
، لذلك لن تبحث الاستضافة عن "محتوى i18n" الذي يطابقes
.المجلدات الفرعية المسماة
fr/
وfr_ALL/
متكافئة من منظور بلد المستخدم وتفضيلات اللغة. ومع ذلك، في حالة وجود كلا المجلدين الفرعيين، ستعرض الاستضافة محتوىfr_ALL/
قبل محتوىfr/
.
تجاوز رموز اللغة والدولة باستخدام ملفات تعريف الارتباط
يمكنك تغيير المحتوى الذي يتم تقديمه باستخدام ملفات تعريف الارتباط لتجاوز رؤوس البلد واللغة.
فيما يلي بعض الطرق التي يمكنك من خلالها استخدام تجاوزات ملفات تعريف الارتباط:
اختبر ميزة بمجموعات مختلفة من اللغات/البلدان للتحقق من المحتوى الذي يتم تقديمه.
قم بتمكين المستخدمين من تغيير المحتوى الذي يرونه. على سبيل المثال، يمكنك تنفيذ منتقي اللغة، ثم تعيين ملف
firebase-language-override
الخاص بالمستخدم وفقًا لذلك.
لتكوين تجاوزات ملفات تعريف الارتباط، قم بتعيين ملفات تعريف الارتباط بكل من هذين الاسمين أو أحدهما: firebase-country-override
و firebase-language-override
. على سبيل المثال، يتجاوز مقتطف كود JavaScript التالي رمز البلد ليكون ca
ورأس Accept-Language
ليكون fr,en
:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
يجب أن تكون تجاوزات ملفات تعريف الارتباط الخاصة باللغة عبارة عن قائمة مفصولة بفواصل من رموز اللغة حسب ترتيب التفضيل، بدون علامات فرعية أو قيم جودة.
لا تنعكس تجاوزات ملفات تعريف الارتباط في السجلات.