تكوين إعادة كتابة التدويل (i18n)

استخدم عمليات إعادة كتابة التدويل ("إعادة كتابة i18n") لخدمة محتوى مختلف اعتمادًا على بلد المستخدم أو لغته المفضلة. فيما يلي بعض أمثلة التكوينات التي يمكنك إعدادها:

  • قدم نفس المحتوى الفرنسي لجميع المستخدمين الذين يفضلون اللغة الفرنسية (بغض النظر عن الدولة).
    مثال: صفحة رئيسية بها نص فرنسي

  • قم بتقديم محتوى فرنسي قياسي للمستخدمين الذين يفضلون اللغة الفرنسية ، ولكن بالنسبة للمستخدمين الكنديين الذين يفضلون الفرنسية ، قم بتقديم المحتوى الفرنسي الكندي بدلاً من ذلك.
    مثال: صفحة رئيسية بها صياغة فرنسية قياسية مقابل صفحة رئيسية بها صياغة فرنسية كندية

  • قم بتقديم نفس المحتوى لجميع المستخدمين الكنديين (بغض النظر عن لغتهم المفضلة).
    مثال: صفحة رئيسية بها اللغة "الافتراضية" لموقعك ولكن مع ميزة خاصة بكندا (مثل موضوع عطلة)

  • قم بتقديم محتوى كندي فرنسي للمستخدمين الكنديين الذين يفضلون اللغة الفرنسية.
    مثال: صفحة رئيسية بها صياغة فرنسية كندية وميزة خاصة بكندا (مثل موضوع عطلة)

تحدد استضافة Firebase بلد المستخدم من عنوان IP الخاص به وتفضيلات لغة المستخدم من عنوان طلب Accept-Language (عادةً ما يتم تعيينه تلقائيًا بواسطة مستعرض الويب الخاص به ).

قم بإعداد إعادة كتابة i18n

لإعداد إعادة كتابة i18n لموقع الاستضافة الخاص بك ، تحتاج إلى إنشاء دليل "i18n content" لجميع المحتوى المترجم الخاص بك ، ثم إضافة سمة i18n إلى ملف firebase.json للإشارة إلى دليل "محتوى i18n" الجديد.

فيما يلي الخطوات التفصيلية:

  1. ضمن المجلد 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 أو مجلدات فرعية أخرى. يمكنك إنشاء محتوى خاص تمامًا باللغة و / أو البلد.

  2. أضف السمة 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 اختيارية.

  3. انشر "محتوى 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 content" على هذه العلامات الفرعية. على سبيل المثال ، لا يمكنك استخدام es-419 أو es-US كرمز لغة في اسم مجلد فرعي ، ولكن يمكنك استخدام es .

    إذا كنت ترغب في تقديم محتوى إقليمي أو بلد معين ، فيمكنك إنشاء مجلدات فرعية تحتوي على محتوى محدد للغة والبلد تريد دعمه.

ترتيب الأولوية لـ "محتوى i18n"

إذا قمت بإعداد عمليات إعادة كتابة i18n ، فإن الاستضافة تقدم المحتوى بناءً على ترتيب الأولوية التالي:

  1. مساحات الأسماء المحجوزة التي تبدأ بجزء مسار /__/*

  2. عمليات إعادة التوجيه المكونة

  3. محتوى ثابت مطابق تمامًا

    1. رمز اللغة + رمز البلد (على سبيل المثال ، محتوى من fr_ca/ )
      يتبع الترتيب قيم الجودة لكل لغة في عنوان Accept-Language الطلب.

    2. رمز البلد فقط (على سبيل المثال ، المحتوى من ALL_ca/ )

    3. رمز اللغة فقط (على سبيل المثال ، محتوى من fr/ أو es_ALL/ )
      يتبع الترتيب قيم الجودة لكل لغة في عنوان Accept-Language الطلب.

    4. محتوى ثابت "افتراضي" مطابق تمامًا
      هذا محتوى خارج دليل "i18n content" ، مثل جذر الدليل public .

  4. يعيد كتابة التكوين

  5. 404 المناولة

    1. i18n 404 صفحات
      يتبع هذا نفس ترتيب الأولوية المذكور أعلاه للمحتوى الثابت المطابق التام.

    2. صفحة 404 مخصصة

    3. صفحة 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 (كندا)

وفقًا لترتيب أولوية المطابقة التامة وقيم الجودة لتفضيلات اللغة ، ستبحث الاستضافة في الدلائل عن الصفحة المطلوبة بالترتيب التالي.

  1. public/localized-files/fr_ca/

  2. public/localized-files/en_ca/

  3. public/localized-files/ALL_ca/

  4. public/localized-files/fr_ALL/

  5. public/localized-files/fr/

  6. public/localized-files/en_ALL/

  7. public/localized-files/en/

  8. public/

  9. 404 المناولة

ما هي الصفحة التي سيتم تقديمها للمستخدم؟

  • الصفحة المطلوبة: index.html

  • الصفحة المطلوبة: awesome-page.html

لاحظ ما يلي حول البحث والعرض هذا في دليل "i18n content":

  • لا يحتوي الدليل localized-files/ الدليل في الواقع على en_ca/ أو en_ALL/ أو en/ مجلدات فرعية ، لذلك سيتخطى الاستضافة قائمة الأولويات حتى يجد مجلدًا فرعيًا مطابقًا لمجموعة اللغة والبلد الخاصة بالطلب.

  • على الرغم من أن localized-files/ الدليل يحتوي على es_ALL/ مجلد فرعي ، فإن مثال الطلب أعلاه لا يتضمن رمز لغة es أو es-foo ، لذلك لن يبحث الاستضافة عن "محتوى i18n" الذي يطابق es .

  • تعتبر المجلدات الفرعية المسماة fr/ and 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";

يجب أن تكون تجاوزات ملفات تعريف ارتباط اللغة قائمة بأكواد اللغات مفصولة بفواصل بترتيب التفضيل ، بدون علامات فرعية أو قيم جودة.

لا تنعكس عمليات تجاوز ملفات تعريف الارتباط في السجلات.