استخدم عمليات إعادة كتابة التدويل ("إعادة كتابة i18n") لخدمة محتوى مختلف اعتمادًا على بلد المستخدم أو لغته المفضلة. فيما يلي بعض أمثلة التكوينات التي يمكنك إعدادها:
قدم نفس المحتوى الفرنسي لجميع المستخدمين الذين يفضلون الفرنسية (بغض النظر عن الدولة).
مثال: صفحة رئيسية بها نص فرنسيقم بتقديم محتوى فرنسي قياسي للمستخدمين الذين يفضلون اللغة الفرنسية ، ولكن بالنسبة للمستخدمين الكنديين الذين يفضلون الفرنسية ، قم بتقديم المحتوى الفرنسي الكندي بدلاً من ذلك.
مثال: صفحة رئيسية بها صياغة فرنسية قياسية مقابل صفحة رئيسية بها صياغة فرنسية كنديةقم بتقديم نفس المحتوى لجميع المستخدمين الكنديين (بغض النظر عن لغتهم المفضلة).
مثال: صفحة رئيسية بها اللغة "الافتراضية" لموقعك ولكن مع ميزة خاصة بكندا (مثل موضوع عطلة)قم بتقديم محتوى كندي فرنسي للمستخدمين الكنديين الذين يفضلون اللغة الفرنسية.
مثال: صفحة رئيسية بها صياغة فرنسية كندية وميزة خاصة بكندا (مثل موضوع عطلة)
تحدد استضافة Firebase بلد المستخدم من عنوان IP الخاص به وتفضيلات لغة المستخدم من عنوان طلب Accept-Language
(عادةً ما يتم تعيينه تلقائيًا بواسطة مستعرض الويب الخاص به ).
قم بإعداد إعادة كتابة i18n
لإعداد إعادة كتابة i18n لموقع الاستضافة الخاص بك ، تحتاج إلى إنشاء دليل "i18n content" لجميع المحتوى المترجم ، ثم إضافة سمة 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 content" الخاصة بك. إذا وضعت جميع المجلدات الفرعية "i18n content" الخاصة بك في جذر دليلكpublic
، فاستخدم/
للحصول على قيمةroot
. الشرطات المائلة البادئة والتالية في قيمةroot
اختيارية.انشر "محتوى i18n" الخاص بك وقم بتكوين موقع الاستضافة الخاص بك.
يمكنك اختبار الإعداد الخاص بك باستخدام تجاوز ملفات تعريف الارتباط .
رموز البلدان واللغات
عند تسمية المجلدات الفرعية "محتوى i18n" ، يجب استخدام أحرف صغيرة لكل من رموز البلد واللغة. يمكنك استخدام قيمة ALL
(حساسة لحالة الأحرف) للإشارة إلى أي بلد (مثل es_ALL/
) أو أي لغة (مثل ALL_ca/
).
تحصل الاستضافة على رمز الدولة من عنوان IP الخاص بالمستخدم. رموز البلدان هي رموز ISO 3166-1 alpha-2 المكونة من حرفين .
يتم الحصول على رموز اللغة من عنوان طلب Accept-Language
الخاص بالمستخدم (عادةً ما يتم تعيينه تلقائيًا بواسطة مستعرض الويب الخاص به ). هم رموز ISO 639-1 . ضع ما يلي في الاعتبار عند استخدام رموز اللغة:
عند استضافة عمليات البحث التي يتم تقديم "محتوى i18n" لها ، فإنه يقوم بترتيب اللغات بناءً على قيم الجودة في عنوان
Accept-Language
.يحذف الاستضافة أي علامات فرعية إقليمية ودولة في عنوان
Accept-Language
، لذلك لا يمكن أن يحتوي رمز اللغة في اسم المجلد الفرعي "i18n content" على هذه العلامات الفرعية. على سبيل المثال ، لا يمكنك استخدامes-419
أوes-US
كرمز لغة في اسم مجلد فرعي ، ولكن يمكنك استخدامes
.إذا كنت ترغب في تقديم محتوى إقليمي أو بلد معين ، فيمكنك إنشاء مجلدات فرعية تحتوي على محتوى محدد للغة والبلد تريد دعمه.
في هذا المثال ، طلب من إسبانيا مع تفضيل اللغة
es
أوes-es
أو حتىes-419
سيتلقى محتوى منes_es/
المجلد الفرعي لأن الاستضافة تتعامل مع جميع رموز اللغات هذه على أنهاes
.طلب من الولايات المتحدة أو المكسيك أو أي دولة أخرى بها تفضيل اللغة
es-419
سيتلقى محتوى منes_ALL/
المجلد الفرعي لأن Hosting يعامل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 content" ، مثل جذر الدليلpublic
.
إعادة كتابة مكونة
404 المناولة
i18n 404 صفحات
يتبع هذا نفس ترتيب الأولوية المذكور أعلاه للمحتوى الثابت المطابق التام.صفحة 404 مخصصة
صفحة 404 الافتراضية (مقدمة من Firebase)
مثال لترتيب الأولوية
دعنا نكمل مثالنا من فوق. سنستخدم نفس الدليل كمثال وطلب مثال.
مثال على دليل مشروع محلي مع دليل "i18n content" (يسمى
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 content" والدليل الجذر) بترتيب الأولوية للمطابقة التامة ، ولكن لا توجد مطابقة تامة لـ
awesome-page.html
.لذلك ، ستبدأ الاستضافة في معالجة 404 ، والتي تتبع نفس ترتيب أولوية i18n مثل عمليات البحث ذات المطابقة التامة. المجلد الفرعي
fr/
هو أول مجلد فرعي يتم البحث فيه ويحتوي على صفحة 404.
لاحظ ما يلي حول البحث والعرض هذا في دليل "i18n content":
لا يحتوي الدليل
localized-files/
الدليل في الواقع علىen_ca/
أوen_ALL/
أوen/
مجلدات فرعية ، لذلك سيتخطى الاستضافة قائمة الأولويات حتى يجد مجلدًا فرعيًا مطابقًا لمجموعة اللغة والبلد الخاصة بالطلب.على الرغم من أن
localized-files/
الدليل يحتوي علىes_ALL/
مجلد فرعي ، فإن مثال الطلب أعلاه لا يتضمن رمز لغةes
أوes-foo
، لذلك لن يبحث الاستضافة عن "محتوى i18n" الذي يطابقes
.المجلدات الفرعية المسماة
fr/
وfr_ALL/
متكافئة من منظور تفضيلات بلد المستخدم ولغته. ومع ذلك ، في حالة وجود كلا المجلدين الفرعيين ، فإن الاستضافة ستعرضfr_ALL/
content قبلfr/
content.
تجاوز اللغة ورموز البلد بملفات تعريف الارتباط
يمكنك تغيير المحتوى الذي يتم تقديمه باستخدام ملفات تعريف الارتباط لتجاوز رؤوس الدولة واللغة.
فيما يلي بعض الطرق التي يمكنك من خلالها استخدام تجاوزات ملفات تعريف الارتباط:
اختبر ميزة بمجموعات لغة / بلد مختلفة للتحقق من المحتوى الذي يتم تقديمه.
قم بتمكين المستخدمين من تغيير المحتوى الذي يرونه. على سبيل المثال ، يمكنك تنفيذ منتقي اللغة ، ثم تعيين ملف
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";
يجب أن تكون تجاوزات ملفات تعريف الارتباط اللغوية قائمة بأكواد اللغات مفصولة بفواصل بترتيب التفضيل ، بدون علامات فرعية أو قيم جودة.
لا تنعكس عمليات تجاوز ملفات تعريف الارتباط في السجلات.