שימוש בכתיבה מחדש של תוכן לפי תרבות ('כתיבה מחדש לפי תרבות') כדי להציג תוכן שונה בהתאם למדינה או לשפה המועדפת של המשתמש. ריכזנו כאן כמה דוגמאות להגדרות שאפשר להגדיר:
הצגת אותו תוכן בצרפתית לכל המשתמשים שמעדיפים את הצרפתית (ללא קשר למדינה).
דוגמה: דף בית עם טקסט בצרפתיתהצגת תוכן בצרפתית רגילה למשתמשים שמעדיפים צרפתית, אבל למשתמשים בקנדה שמעדיפים צרפתית, הצגת תוכן בצרפתית קנדית במקום זאת.
דוגמה: דף בית עם ניסוח בצרפתית רגילה לעומת דף בית עם ניסוח בצרפתית קנדיתהצגת אותו תוכן לכל המשתמשים בקנדה (ללא קשר להעדפת השפה שלהם).
דוגמה: דף בית בשפת ברירת המחדל של האתר, אבל עם תכונה ספציפית לקנדה (למשל, נושא של חג)הצגת תוכן בצרפתית קנדית למשתמשים בקנדה שמעדיפים את הצרפתית.
דוגמה: דף בית עם ניסוח בצרפתית קנדית ותכונה ספציפית לקנדה (למשל, נושא של חג)
Firebase Hosting קובע את המדינה של המשתמש לפי כתובת ה-IP שלו ואת העדפות השפה של המשתמש לפי כותרת הבקשה Accept-Language
(בדרך כלל מוגדרות באופן אוטומטי על ידי דפדפן האינטרנט שלו).
הגדרת שכתוב של תוכן בשפות שונות
כדי להגדיר שכתובות של i18n ייכתבו מחדש באתר Hosting, צריך ליצור ספרייה בשם 'i18n content' לכל התוכן המתורגם, ואז להוסיף את המאפיין i18n
לקובץ firebase.json
כדי להפנות לספרייה החדשה 'i18n content'.
אלה השלבים המפורטים:
בתיקייה
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
הצגת הבקשות התואמות לתוכן של כל תיקיית משנה
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
ומציינים את התיקייה שמכילה את 'תוכן התרגום'. בהמשך לדוגמה שלנו:// 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
הם אופציונליים.פורסים את 'תוכן ה-i18n' וההגדרות באתר Hosting.
אתם יכולים לבדוק את ההגדרות באמצעות שינוי הגדרות ברירת המחדל של קובצי cookie.
קודי מדינה ושפה
כשנותנים שמות לתיקיות המשנה של 'תוכן ל-i18n', צריך להשתמש באותיות קטנות גם בקודי המדינות וגם בקודי השפות. אפשר להשתמש בערך ALL
(לפי תווית רישיות) כדי לציין כל מדינה (כמו es_ALL/
) או כל שפה (כמו ALL_ca/
).
Hosting מקבל את קוד המדינה מכתובת ה-IP של המשתמש. קודי המדינות הם קודים לפי תקן ISO 3166-1 alpha-2 בני שתי אותיות.
קודי השפות מתקבלים מכותרת הבקשה Accept-Language
של המשתמש (בדרך כלל מוגדרים באופן אוטומטי על ידי דפדפן האינטרנט שלו).
הם קודים לפי תקן ISO 639-1.
כשמשתמשים בקודי שפות, חשוב לזכור את הדברים הבאים:
כשה-Hosting מחפש איזה 'תוכן מותאם לשוק הבינלאומי' להציג, הוא ממיין את השפות על סמך ערכי האיכות בכותרת
Accept-Language
.Hosting מסיר תגי משנה אזוריים ומדיניים בכותרת
Accept-Language
, כך שקוד השפה בשם של תיקיית המשנה 'תוכן i18n' לא יכול להכיל את תגי המשנה האלה. לדוגמה, אי אפשר להשתמש ב-es-419
או ב-es-US
כקוד שפה בשם של תיקיית משנה, אבל אפשר להשתמש ב-es
.אם רוצים להציג תוכן אזורי או תוכן ספציפי למדינה, אפשר ליצור תיקיות משנה שמכילות את התוכן הספציפי של השפה והמדינה שרוצים לתמוך בהם.
הצגת דוגמאות לתמיכה בתוכן ספציפי לאזור או למדינה
הצגת תוכן בספרדית שרלוונטי לספרד, לעומת תוכן בספרדית שרלוונטי לכל מדינה אחרת (חיקוי ההתנהגות של
es-419
)בדוגמה הזו, בקשה מספרד עם העדפת השפה
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'
אם מגדירים שכתוביות יתכתבו לפי שפות שונות, Hosting יציג תוכן לפי סדר העדיפויות הבא:
מרחבי שמות שמורים שמתחילים בפלח נתיב
/__/*
הפניות שהוגדרו
תוכן סטטי בהתאמה מדויקת
קוד השפה + קוד המדינה (לדוגמה, תוכן מ-
fr_ca/
)
הסדר הוא לפי ערכי האיכות של כל שפה בכותרתAccept-Language
של הבקשה.קוד המדינה בלבד (לדוגמה, תוכן מ-
ALL_ca/
)קוד השפה בלבד (לדוגמה, תוכן מ-
fr/
או מ-es_ALL/
)
הסדר הוא לפי ערכי האיכות של כל שפה בכותרתAccept-Language
של הבקשה.תוכן סטטי 'ברירת מחדל' בהתאמה מדויקת
זהו תוכן שנמצא מחוץ לספרייה 'i18n content', למשל ברמה הבסיסית של הספרייהpublic
.
טיפול בשגיאות 404
תרגום דפי 404
התרגום מתבצע לפי אותו סדר עדיפות שמפורט למעלה לגבי תוכן סטטי תואם.דף 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 יחפש את הדף המבוקש בספריות לפי הסדר הבא.
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/
Hosting מחפש קודם את כל הספרייה (כולל כל התיקיות המשניות של 'תוכן i18n' ואת ספריית הבסיס) לפי סדר עדיפות כדי למצוא התאמה מדויקת, אבל אין התאמה מדויקת ל-
awesome-page.html
.לכן, Hosting תתחיל לטפל בשגיאה 404, לפי אותו סדר תעדוף של תרגום לשפות שונות כמו בחיפושים בהתאמה מדויקת. תיקיית המשנה
fr/
היא תיקיית המשנה הראשונה שנבדקת ומכילה דף 404.
חשוב לשים לב לנקודות הבאות לגבי החיפוש וההצגה של ספריית 'תוכן 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:
אפשר לבדוק תכונה עם שילובים שונים של שפות או מדינות כדי לבדוק איזה תוכן מוצג.
מאפשרים למשתמשים לשנות את התוכן שהם רואים. לדוגמה, תוכלו להטמיע בורר שפות ולהגדיר את קובץ ה-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 לא משתקפים ביומני המערכת.