Check out what’s new from Firebase at Google I/O 2022. Learn more

הגדר שכתובים מחדש של בינאום (i18n).

השתמש בשכתובים של אינטרנציונליזציה ("i18n rewrites") כדי להציג תוכן שונה בהתאם למדינה או לשפה המועדפת של המשתמש. להלן כמה תצורות לדוגמה שתוכל להגדיר:

  • הצג את אותו תוכן צרפתי לכל המשתמשים המעדיפים צרפתית (ללא קשר לארץ).
    דוגמה: דף בית עם טקסט בצרפתית

  • הצג תוכן צרפתי סטנדרטי למשתמשים המעדיפים צרפתית, אך עבור משתמשים קנדיים המעדיפים צרפתית, הצג במקום זאת תוכן צרפתי קנדי.
    דוגמה: דף בית עם ניסוח צרפתי סטנדרטי לעומת דף בית עם ניסוח צרפתי קנדי

  • הצג את אותו תוכן לכל המשתמשים הקנדיים (ללא קשר להעדפת השפה שלהם).
    דוגמה: דף בית עם שפת "ברירת המחדל" של האתר שלך אך עם תכונה ספציפית לקנדה (כמו נושא לחגים)

  • הגישו תוכן צרפתי קנדי ​​למשתמשים קנדיים המעדיפים צרפתית.
    דוגמה: דף בית עם ביטויים בצרפתית קנדית ותכונה ספציפית לקנדה (כמו נושא לחגים)

Firebase Hosting קובע את המדינה של משתמש מכתובת ה-IP שלו והעדפות השפה של המשתמש מכותרת הבקשה Accept-Language (בדרך כלל מוגדרת אוטומטית על ידי דפדפן האינטרנט שלו).

הגדר שכתובים של i18n

כדי להגדיר שכתובים של i18n עבור אתר האירוח שלך, עליך ליצור ספריית "i18n content" עבור כל התוכן המקומי שלך, ולאחר מכן להוסיף את התכונה i18n לקובץ firebase.json שלך כדי להצביע על ספריית "i18n content" החדשה שלך.

להלן השלבים המפורטים:

  1. בתוך התיקיה public של ספריית האפליקציה המקומית שלך, צור ספרייה נפרדת עבור "תוכן i18n" שלך, ולאחר מכן צור תיקיות משנה עבור כל שילוב של שפה ומדינה הנתמך על ידי האתר שלך.

    בכל תיקיית משנה, הוסף את התוכן הספציפי לאותו שילוב, כמו דפי בית בנושא חגים או דפי 404 ספציפיים לשפה.

    הנה דוגמה של ספריית "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
    

    ספריית 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" שלך וקבע את התצורה לאתר האירוח שלך.

אתה יכול לבדוק את ההגדרה שלך באמצעות עקיפות קובצי Cookie .

קודי מדינה ושפה

בעת מתן שם לתיקיות משנה "i18n content", עליך להשתמש באותיות קטנות עבור קודי המדינה והשפה. אתה יכול להשתמש בערך של ALL (תלוי רישיות) כדי לציין כל מדינה (כמו es_ALL/ ) או כל שפה (כמו ALL_ca/ ).

אירוח מקבל את קוד המדינה מכתובת ה-IP של המשתמש. קודי מדינה הם קודי ISO 3166-1 אלפא-2 בני שתי אותיות.

קודי השפה מתקבלים מכותרת הבקשה Accept-Language של המשתמש (בדרך כלל מוגדרת אוטומטית על ידי דפדפן האינטרנט שלו). הם קודי ISO 639-1 . זכור את הדברים הבאים בעת שימוש בקודי שפה:

  • כאשר Hosting מחפש איזה "תוכן 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 (קנדה)

בהתאם לסדר העדיפות בהתאמה המדויקת וערכי האיכות של העדפות השפה, Hosting יחפש בספריות עבור עמוד מבוקש בסדר הבא.

  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/ , כך ש- Hosting פשוט ידלג למטה ברשימת העדיפויות עד שימצא תיקיית משנה תואמת לשילוב שפה-מדינה של הבקשה.

  • למרות שהספרייה localized-files/ מכילה תת-תיקיית es_ALL/ , הבקשה לדוגמה לעיל אינה כוללת קוד שפה של es או es-foo , כך ש-hosting לא יחפש "i18n content" שתואם es .

  • תיקיות משנה הנקראות fr/ ו- fr_ALL/ שוות ערך מנקודת המבט של העדפות המדינה והשפה של המשתמש. עם זאת, אם קיימות שתי תיקיות המשנה, Hosting ישרת fr_ALL/ תוכן לפני fr/ content.

אתה יכול לשנות את התוכן המוגש על ידי שימוש בקובצי Cookie כדי לעקוף את כותרות המדינה והשפה.

הנה כמה דרכים שבהן תוכל להשתמש בעקיפות עוגיות:

  • בדוק תכונה עם שילובי שפה/ארץ שונים כדי לבדוק איזה תוכן מוגש.

  • אפשר למשתמשים שלך לשנות את התוכן שהם רואים. לדוגמה, אתה יכול ליישם בוחר שפה, ולאחר מכן להגדיר את קובץ ה-cookie של firebase-language-override של המשתמש בהתאם.

כדי להגדיר עקיפות של קובצי Cookie, הגדר קובצי Cookie עם שני השמות הבאים או אחד מהם: 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";

עקיפות של קובצי Cookie של שפה חייבות להיות רשימה מופרדת בפסיקים של קודי שפה לפי סדר העדפה, ללא תגי משנה או ערכי איכות.

עקיפות עוגיות אינן משתקפות ביומנים.