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