השתמש בשכתובים של אינטרנציונליזציה ("i18n שכתובים") כדי להציג תוכן שונה בהתאם למדינה או לשפה המועדפת של המשתמש. להלן כמה תצורות לדוגמה שתוכל להגדיר:
הצג את אותו תוכן צרפתי לכל המשתמשים שמעדיפים צרפתית (ללא קשר לארץ).
דוגמה: דף בית עם טקסט בצרפתיתהצג תוכן צרפתי סטנדרטי למשתמשים המעדיפים צרפתית, אך עבור משתמשים קנדיים המעדיפים צרפתית, הצג תוכן צרפתי קנדי במקום זאת.
דוגמה: דף בית עם ניסוח צרפתי סטנדרטי לעומת דף בית עם ניסוח צרפתי קנדיהצג את אותו תוכן לכל המשתמשים הקנדיים (ללא קשר להעדפת השפה שלהם).
דוגמה: דף בית עם שפת "ברירת המחדל" של האתר שלך אך עם תכונה ספציפית לקנדה (כמו נושא לחגים)הצג תוכן צרפתי קנדי למשתמשים קנדיים המעדיפים צרפתית.
דוגמה: דף בית עם ביטויים בצרפתית קנדית ותכונה ספציפית לקנדה (כמו נושא לחגים)
Firebase Hosting קובע את המדינה של משתמש מכתובת ה-IP שלו והעדפות השפה של המשתמש מכותרת הבקשה Accept-Language
(בדרך כלל מוגדרת אוטומטית על ידי דפדפן האינטרנט שלו ).
הגדר שכתובים של i18n
כדי להגדיר שכתובים של i18n עבור אתר האירוח שלך, עליך ליצור ספריית "i18n content" עבור כל התוכן המקומי שלך, ולאחר מכן להוסיף את התכונה i18n
לקובץ firebase.json
שלך כדי להצביע על ספריית "i18n content" החדשה שלך.
להלן השלבים המפורטים:
בתוך התיקיה
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
public/ // matches requests that aren't specified by your "i18n content" subfolders // example: display your homepage in the "default" language for your site with no country-specific features index.html // your site's default homepage 404.html // your site's custom 404 page localized-files/ // matches requests from Canada with any language preference // example: display your homepage in the "default" language for your site with a Canada-specific feature ALL_ca/ index.html // matches requests from any country with a language preference of `es` or `es-foo` // example: display your homepage in Spanish with no country-specific features es_ALL/ index.html 404.html // your site's custom 404 page in Spanish // matches requests from any country with a language preference of `fr` or `fr-foo` // example: display your homepage in Standard French with no country-specific features fr/ index.html 404.html // your site's custom 404 page in French // matches requests from Canada with a language preference of `fr` or `fr-foo` // example: display your homepage in Canadian French and/or with a Canada-specific feature fr_ca/ index.html
ספריית
localized-files/
מכילה תיקיות משנה נפרדות עבור כל שילוב של שפה ומדינה הנתמכת על ידי האתר שלך. דפוס השם של כל תיקיית משנה חייב להיות באחד מהפורמטים הבאים:languageCode_countryCode
: מכיל תוכן ספציפי למשתמשים שיש להם העדפת שפה זו וקוד מדינה זהlanguageCode
: מכיל תוכן ספציפי למשתמשים שיש להם העדפת שפה זו, אך התוכן אינו ספציפי למדינה; שווה ערך ל-languageCode_ALL
עיין בסעיף המשנה של קודי ארץ ושפה להלן לפרטים נוספים על קודים אלה. אתה יכול להשתמש בערך של
ALL
(תלוי רישיות) כדי לציין כל מדינה (כמוes_ALL/
) או כל שפה (כמוALL_ca/
).הקבצים בתיקיית משנה אינם צריכים לכלול קבצים מקבילים בספרייה
public
או בתיקיות משנה אחרות. אתה יכול ליצור תוכן שהוא ספציפי לחלוטין לשפה ו/או מדינה.הוסף את התכונה
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
הם אופציונליים.פרוס את "תוכן 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
.אם ברצונך להציג תוכן אזורי או ארץ ספציפי, תוכל ליצור תיקיות משנה המכילות את התוכן הספציפי של שפה-מדינה שבה ברצונך לתמוך.
בדוגמה זו, בקשה מספרד עם העדפת השפה של
es
,es-es
או אפילוes-419
תקבל תוכן מתיקיית המשנהes_es/
מכיוון ש- Hosting מתייחס לכל קודי השפה האלה כאלes
.בקשה מארה"ב, מקסיקו או כל מדינה אחרת עם העדפת השפה של
es-419
תקבל תוכן מתיקיית המשנהes_ALL/
מכיוון ש-hosting מתייחס ל-es-419
כאלes
.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Spain with a language preference of `es` or `es-foo` es_es/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` es_ALL/ index.html
בדוגמה זו, בקשה ממקסיקו עם העדפת השפה של
es-419
תקבל תוכן מתיקיית המשנהes_mx/
מכיוון ש- Hosting מתייחס לקוד השפהes-419
כאלes
.עם זאת, בקשה מארצות הברית עם העדפת השפה של
es-419
תקבל תוכן מתיקיית המשנהes_ALL/
מכיוון ש- Hosting מתייחס ל-es-419
כאלes
ואין תיקיית משנהes_us/
.public/ // matches requests that aren't specified by your "i18n content" subfolders index.html // the site's default homepage localized-files/ // matches requests from Argentina with a language preference of `es` or `es-foo` (mimics behavior of `es-ar` header tag) es_ar/ index.html // matches requests from Spain with a language preference of `es` or `es-foo` (mimics behavior of `es-es` header tag) es_es/ index.html // matches requests from Mexico with a language preference of `es` or `es-foo` (mimics behavior of `es-mx` header tag) es_mx/ index.html // matches requests from any other country with a language preference of `es` or `es-foo` (mimics behavior of `es-419` header tag) es_ALL/ index.html
סדר עדיפות עבור "תוכן i18n"
אם תגדיר שכתובים של i18n, אירוח מגיש תוכן לפי סדר העדיפות הבא:
מרחבי שמות שמורים שמתחילים בקטע נתיב
/__/*
הפניות מחדש מוגדרות
תוכן סטטי בהתאמה מדויקת
קוד שפה + קוד מדינה (לדוגמה, תוכן מ-
fr_ca/
)
ההזמנה עוקבת אחר ערכי האיכות עבור כל שפה בכותרתAccept-Language
של הבקשה.קידומת מדינה בלבד (לדוגמה, תוכן מ-
ALL_ca/
)קוד שפה בלבד (לדוגמה, תוכן מ-
fr/
אוes_ALL/
)
ההזמנה עוקבת אחר ערכי האיכות עבור כל שפה בכותרתAccept-Language
של הבקשה.תוכן סטטי "ברירת מחדל" בהתאמה מדויקת
זהו תוכן שנמצא מחוץ לספריית "i18n content", כמו בשורש הספרייהpublic
.
שכתובים מוגדרים
טיפול ב-404
i18n 404 דפים
זה פועל לפי אותו סדר עדיפות המפורט לעיל עבור תוכן סטטי בהתאמה מדויקת.עמוד 404 מותאם אישית
דף 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 יחפש בספריות עבור עמוד מבוקש בסדר הבא.
public/localized-files/fr_ca/
public/localized-files/en_ca/
public/localized-files/ALL_ca/
public/localized-files/fr_ALL/
public/localized-files/fr/
public/localized-files/en_ALL/
public/localized-files/en/
public/
טיפול ב-404
איזה עמוד יוגש למשתמש?
עמוד מבוקש:
index.html
index.html
מתיקיית המשנהfr_ca/
מכיוון ש- Hosting מחפש תחילה בתיקיית המשנה
fr_ca/
, הוא ימצא את ההתאמה המדויקת שלindex.html
בתיקיית המשנה הזו.עמוד מבוקש:
awesome-page.html
404.html
מתיקיית המשנהfr/
אירוח מחפש תחילה את כל הספרייה (כולל כל תיקיות המשנה "i18n content" וספריית הבסיס) בסדר עדיפות להתאמה מדויקת, אך אין התאמה מדויקת עבור
awesome-page.html
.אז, Hosting תתחיל את הטיפול ב-404 שלה, שעוקב אחר אותו סדר עדיפות i18n כמו חיפושים בהתאמה מדויקת. תת-תיקיית
fr/
היא תיקיית המשנה הראשונה שמחפשת שמכילה עמוד 404.
שים לב לדברים הבאים לגבי חיפוש והגשה זה של ספריית "i18n content":
ספריית
localized-files/
אינה מכילה למעשהen_ca/
,en_ALL/
, אוen/
תת-תיקיות, אז Hosting פשוט ידלג למטה ברשימת העדיפויות עד שימצא תיקיית משנה תואמת לשילוב שפה-מדינה של הבקשה.למרות שהספרייה
localized-files/
מכילה תת-תיקייתes_ALL/
, הבקשה לדוגמה לעיל אינה כוללת קוד שפה שלes
אוes-foo
, ולכן אירוח לא יחפש "תוכן i18n" שתואםes
.תיקיות משנה הנקראות
fr/
ו-fr_ALL/
שוות ערך מנקודת המבט של העדפות המדינה והשפה של המשתמש. עם זאת, אם קיימות שתי תיקיות המשנה, Hosting ישרתfr_ALL/
תוכן לפניfr/
content.
עוקף את קודי השפה והמדינה באמצעות קובצי 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";
עקיפות של עוגיות שפה חייבות להיות רשימה מופרדת בפסיקים של קודי שפה לפי סדר העדפה, ללא תגי משנה או ערכי איכות.
עקיפות עוגיות אינן משתקפות ביומנים.