استخدِم عمليات إعادة الكتابة للغة معيّنة (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 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
(كندا)
وفقًا لترتيب الأولوية للمطابقة التامة وقيم الجودة لإعدادات التفضيل للّغة، سيبحث 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";
يجب أن تكون عمليات إلغاء ملفات تعريف الارتباط للّغة قائمة مفصولة بفواصل لرموز اللغات بترتيب الإعدادات المفضّلة، بدون علامات فرعية أو قيم جودة.
لا تظهر عمليات إلغاء ملفات تعريف الارتباط في السجلات.