הגדרת שכתוב של אינטרנציונליזציה (i18n)

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

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

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

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

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

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

הגדרת שכתובים בעברית

כדי להגדיר שכתובים ללוקליזציה לאתר Hosting, צריך ליצור 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" תיקיות משנה ברמה הבסיסית (root) של הספרייה public, צריך להשתמש ב-/ לערך של root. קווים נטויים לפני ואחרי הערך root הם אופציונליים.

  3. פריסה של תוכן i18n ומגדירים אותו לאתר Hosting.

אפשר לבדוק את ההגדרה באמצעות שינויים בקובצי cookie.

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

כשנותנים שמות לתיקיות המשנה של 'תוכן ל-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 יציג תוכן על סמך התנאים הבאים סדר העדיפות:

  1. מרחבי שמות שמורים שמתחילים בפלח נתיב /__/*

  2. הפניות אוטומטיות מוגדרות

  3. תוכן סטטי בהתאמה מדויקת

    1. קוד שפה + קוד מדינה (לדוגמה, תוכן מ-fr_ca/)
      הסדר תואם לערכי האיכות של כל שפה הכותרת Accept-Language.

    2. קוד מדינה בלבד (לדוגמה, תוכן מ-ALL_ca/)

    3. קוד שפה בלבד (לדוגמה, תוכן מ-fr/ או מ-es_ALL/)
      הסדר תואם לערכי האיכות של כל שפה כותרת Accept-Language.

    4. 'ברירת מחדל' תוכן סטטי בהתאמה מדויקת
      התוכן הזה לא נכלל ב'תוכן של i18n' כמו בספרייה הרמה הבסיסית (root) של הספרייה 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 (קנדה)

בהתאם לסדר העדיפות של ההתאמה המדויקת ולערכי האיכות של העדפות השפה, 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':

  • הספרייה 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/.

כדי לשנות את התוכן המוצג, משתמשים בקובצי cookie כדי לשנות את הגדרת המדינה וכותרות שפה.

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

שינויים בקובצי ה-Cookie לא באים לידי ביטוי ביומנים.