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

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

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

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

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

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

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

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

لإعداد عمليات إعادة كتابة i18n لموقع الاستضافة الخاص بك، تحتاج إلى إنشاء دليل "محتوى i18n" لجميع المحتوى المترجم الخاص بك، ثم إضافة سمة 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". إذا قمت بوضع كافة المجلدات الفرعية "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" على هذه العلامات الفرعية. على سبيل المثال، لا يمكنك استخدام 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"، كما هو الحال في جذر الدليل public .

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

  5. التعامل مع 404

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

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

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

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

  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":

  • لا يحتوي الدليل 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";

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

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