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