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

  3. פרוס את "תוכן i18n" שלך והגדר לאתר האירוח שלך.

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

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

בעת מתן שמות לתיקיות המשנה "תוכן i18n", עליך להשתמש באותיות קטנות הן עבור קודי המדינה והן עבור קודי השפה. אתה יכול להשתמש בערך של 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. Custom 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 content":

  • localized-files/ הספרייה אינו מכילה למעשה en_ca/ , en_ALL/ או en/ תיקיות משנה, כך אירוח יהיה פשוט לדלג למטה בסדר העדיפויות עד שהוא מוצא תיקיית משנה התאמה עבור שילוב שפה-הארץ של הבקשה.

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

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

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

להלן מספר דרכים בהן אתה יכול להשתמש בביטול קובצי cookie:

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

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

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