از بازنویسی های بین المللی سازی ("بازنویسی های i18n") برای ارائه محتوای مختلف بسته به کشور یا زبان مورد نظر کاربر استفاده کنید. در اینجا چند نمونه پیکربندی است که می توانید تنظیم کنید:
همان محتوای فرانسوی را به همه کاربرانی که فرانسوی را ترجیح می دهند (بدون در نظر گرفتن کشور) ارائه دهید.
مثال: صفحه اصلی با متن فرانسویمحتوای فرانسوی استاندارد را برای کاربرانی که فرانسوی را ترجیح می دهند ارائه دهید، اما برای کاربران کانادایی که فرانسوی را ترجیح می دهند، به جای آن محتوای فرانسوی کانادایی را ارائه دهید.
مثال: صفحه اصلی با عبارت فرانسوی استاندارد در مقابل صفحه اصلی با عبارت فرانسوی کاناداییمحتوای یکسانی را برای همه کاربران کانادایی (صرف نظر از ترجیح زبان آنها) ارائه دهید.
مثال: یک صفحه اصلی با زبان «پیشفرض» سایت شما اما با ویژگی خاص کانادا (مانند موضوع تعطیلات)محتوای فرانسوی کانادایی را به کاربران کانادایی که فرانسوی را ترجیح می دهند ارائه دهید.
مثال: یک صفحه اصلی با عبارت فرانسوی کانادایی و یک ویژگی خاص کانادا (مانند موضوع تعطیلات)
Firebase Hosting کشور کاربر را از روی آدرس IP و تنظیمات برگزیده زبان کاربر را از سربرگ درخواست Accept-Language
تعیین می کند (معمولاً به طور خودکار توسط مرورگر وب آنها تنظیم می شود ).
بازنویسی i18n را تنظیم کنید
برای راهاندازی بازنویسیهای i18n برای سایت Hosting خود، باید یک دایرکتوری "محتوای i18n" برای تمام محتوای محلی خود ایجاد کنید، سپس ویژگی i18n
را به فایل firebase.json
خود اضافه کنید تا به فهرست "محتوای i18n" جدید خود اشاره کنید.
در اینجا مراحل دقیق وجود دارد:
در پوشه
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
است
برای جزئیات بیشتر در مورد این کدها به زیربخش کدهای کشور و زبان زیر مراجعه کنید. برای نشان دادن هر کشوری (مانند
es_ALL/
) یا هر زبانی (مانندALL_ca/
) می توانید از مقدارALL
(حساس به حروف کوچک و بزرگ) استفاده کنید.فایلهای یک زیرپوشه نیازی به داشتن فایلهای مشابه در پوشه
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" و پیکربندی خود را در سایت Hosting خود مستقر کنید.
میتوانید تنظیمات خود را با استفاده از لغو کوکیها آزمایش کنید.
کدهای کشور و زبان
هنگام نامگذاری زیرپوشههای «محتوای i18n»، باید از حروف کوچک برای کدهای کشور و زبان استفاده کنید. برای نشان دادن هر کشوری (مانند es_ALL/
) یا هر زبانی (مانند ALL_ca/
) می توانید از مقدار ALL
(حساس به حروف کوچک و بزرگ) استفاده کنید.
Hosting کد کشور را از آدرس IP کاربر دریافت می کند. کدهای کشور کدهای دو حرفی ISO 3166-1 آلفا-2 هستند.
کدهای زبان از سربرگ درخواست Accept-Language
کاربر (معمولاً به طور خودکار توسط مرورگر وب آنها تنظیم می شود ) به دست می آیند. آنها کدهای ISO 639-1 هستند. هنگام استفاده از کدهای زبان، موارد زیر را در نظر داشته باشید:
هنگامی که Hosting جستجو می کند که کدام "محتوای i18n" را ارائه کند، زبان ها را بر اساس مقادیر کیفیت در هدر
Accept-Language
مرتب می کند.Hosting هر گونه زیربرچسب منطقه ای و کشوری را در هدر
Accept-Language
حذف می کند، بنابراین کد زبان در نام زیرپوشه "content i18n" نمی تواند حاوی این زیربرچسب ها باشد. برای مثال، نمیتوانیدes-419
یاes-US
به عنوان کد زبان در نام زیرپوشه استفاده کنید، اما میتوانید ازes
استفاده کنید.اگر میخواهید محتوای منطقهای یا کشوری خاصی را ارائه دهید، میتوانید زیرپوشههایی ایجاد کنید که حاوی محتوای زبان کشور خاصی است که میخواهید پشتیبانی کنید.
در این مثال، درخواستی از اسپانیا با ترجیح زبان
es
،es-es
یا حتیes-419
محتوا را از زیرپوشهes_es/
دریافت میکند، زیرا Hosting با همه آن کدهای زبان به عنوانes
رفتار میکند.درخواستی از ایالات متحده، مکزیک یا هر کشور دیگری با ترجیح زبان
es-419
محتوا را از زیرپوشهes_ALL/
دریافت میکند، زیرا Hostinges-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/
دریافت میکند، زیرا Hostinges-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 را راهاندازی کنید، Hosting محتوا را بر اساس اولویتبندی زیر ارائه میکند:
فضاهای نام رزرو شده که با یک بخش مسیر
/__/*
شروع می شوندتغییر مسیرهای پیکربندی شده
محتوای ثابت با تطابق دقیق
کد زبان + کد کشور (به عنوان مثال، محتوای
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/
Hosting ابتدا کل دایرکتوری (شامل همه زیرپوشههای "محتوای i18n" و دایرکتوری ریشه) را به ترتیب اولویت برای تطابق دقیق جستجو میکند، اما تطابق دقیقی برای
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
نمیشود، بنابراین Hosting «محتوای i18n» را که باes
مطابقت دارد جستجو نمیکند.پوشه های فرعی به نام
fr/
وfr_ALL/
از منظر ترجیحات کشور و زبان کاربر معادل هستند. با این حال، اگر هر دو زیرپوشه وجود داشته باشند، Hosting محتواfr_ALL/
را قبل از محتوایfr/
ارائه میکند.
کدهای زبان و کشور را با کوکی ها لغو کنید
میتوانید با استفاده از کوکیها برای لغو سرصفحههای کشور و زبان، محتوای ارائهشده را تغییر دهید.
در اینجا چند راه وجود دارد که می توانید از لغو کوکی ها استفاده کنید:
یک ویژگی را با ترکیبهای مختلف زبان/کشور آزمایش کنید تا بررسی کنید کدام محتوا ارائه میشود.
به کاربران خود اجازه دهید محتوایی را که می بینند تغییر دهند. به عنوان مثال، می توانید یک انتخابگر زبان را پیاده سازی کنید، سپس کوکی
firebase-language-override
کاربر را بر اساس آن تنظیم کنید.
برای پیکربندی لغو کوکیها، کوکیها را با هر دو یا یکی از این نامها تنظیم کنید: firebase-country-override
و firebase-language-override
. به عنوان مثال، قطعه کد جاوا اسکریپت زیر کد کشور را به صورت ca
و سرصفحه Accept-Language
به صورت fr,en
لغو می کند:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
لغو کوکیهای زبان باید فهرستی از کدهای زبان جدا شده با کاما و به ترتیب اولویت، بدون برچسبهای فرعی یا مقادیر کیفیت باشد.
نادیده گرفتن کوکی ها در گزارش ها منعکس نمی شوند.