Używaj przepisywania internacjonalizacji („i18n przepisuje”), aby wyświetlać różne treści w zależności od kraju użytkownika lub preferowanego języka. Oto kilka przykładowych konfiguracji, które możesz skonfigurować:
Udostępniaj te same treści w języku francuskim wszystkim użytkownikom, którzy preferują język francuski (niezależnie od kraju).
Przykład: strona główna z tekstem w języku francuskimUdostępniaj treści w standardowym języku francuskim użytkownikom, którzy preferują język francuski, ale użytkownikom z Kanady , którzy preferują język francuski, udostępniaj treści w języku kanadyjskim w języku francuskim.
Przykład: strona główna ze standardowymi sformułowaniami w języku francuskim a strona główna ze sformułowaniami w języku kanadyjskimUdostępniaj te same treści wszystkim kanadyjskim użytkownikom (niezależnie od ich preferencji językowych).
Przykład: strona główna z „domyślnym” językiem Twojej witryny, ale z funkcją charakterystyczną dla Kanady (np. motywem świątecznym)Udostępniaj kanadyjsko-francuskie treści kanadyjskim użytkownikom, którzy preferują francuski.
Przykład: strona główna ze sformułowaniami w języku kanadyjskim i francuskim oraz funkcją charakterystyczną dla Kanady (np. motywem świątecznym)
Hosting Firebase określa kraj użytkownika na podstawie jego adresu IP, a preferencje językowe użytkownika na podstawie nagłówka żądania Accept-Language
(zwykle ustawiane automatycznie przez przeglądarkę internetową ).
Skonfiguruj przepisywanie i18n
Aby skonfigurować przepisywanie i18n dla swojej witryny hostingowej, musisz utworzyć katalog „i18n content” dla całej zlokalizowanej zawartości, a następnie dodać atrybut i18n
do pliku firebase.json
, aby wskazywał nowy katalog „i18n content”.
Oto szczegółowe kroki:
W folderze
public
lokalnego katalogu aplikacji utwórz osobny katalog dla „zawartości i18n”, a następnie utwórz podfoldery dla każdej kombinacji języka i kraju obsługiwanej przez Twoją witrynę.W każdym podfolderze dodaj treść specyficzną dla tej kombinacji, na przykład strony główne o tematyce świątecznej lub strony 404 w określonym języku.
Oto przykładowy katalog „i18n content” o nazwie
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
Katalog
localized-files/
zawiera osobne podfoldery dla każdej kombinacji języka i kraju obsługiwanej przez Twoją witrynę. Wzorzec nazewnictwa dla każdego podfolderu musi być zgodny z jednym z następujących formatów:languageCode_countryCode
: zawiera treść specyficzną dla użytkowników, którzy preferują ten język i ten kod krajulanguageCode
: zawiera treść specyficzną dla użytkowników, którzy preferują ten język, ale treść nie jest specyficzna dla kraju; w zasadzie równoważne zlanguageCode_ALL
Więcej informacji na temat tych kodów znajduje się w podsekcji Kody krajów i języków poniżej. Możesz użyć wartości
ALL
(rozróżniana jest wielkość liter), aby wskazać dowolny kraj (np.es_ALL/
) lub dowolny język (np.ALL_ca/
).Pliki w podfolderze nie muszą mieć analogicznych plików w katalogu
public
lub innych podfolderach. Możesz tworzyć treści całkowicie specyficzne dla danego języka i/lub kraju.Dodaj atrybut
i18n
do plikufirebase.json
i określ katalog zawierający „zawartość i18n”. Kontynuując nasz przykład:// firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... }
Katalog określony jako
root
musi być nazwą katalogu zawierającego wszystkie podfoldery „i18n content”. Jeśli umieściłeś wszystkie swoje podfoldery „i18n content” w katalogu głównym katalogupublic
, użyj/
dla wartościroot
. Wiodące i końcowe ukośniki w wartościroot
są opcjonalne.Wdróż „zawartość i18n” i skonfiguruj ją na swojej stronie hostingowej.
Możesz przetestować swoją konfigurację za pomocą zastępowania plików cookie .
Kody krajów i języków
Podczas nazywania podfolderów „i18n content” należy używać małych liter w kodach krajów i języków. Możesz użyć wartości ALL
(rozróżniana jest wielkość liter), aby wskazać dowolny kraj (np. es_ALL/
) lub dowolny język (np. ALL_ca/
).
Hosting uzyskuje kod kraju z adresu IP użytkownika. Kody krajów to dwuliterowe kody ISO 3166-1 alfa-2 .
Kody języków są uzyskiwane z nagłówka żądania Accept-Language
użytkownika (zwykle ustawianego automatycznie przez przeglądarkę internetową ). Są to kody ISO 639-1 . Podczas korzystania z kodów języków należy pamiętać o następujących kwestiach:
Gdy Hosting wyszukuje „treść i18n” do wyświetlenia, porządkuje języki na podstawie wartości jakości w nagłówku
Accept-Language
.Hosting usuwa wszelkie znaczniki podrzędne regionu i kraju w nagłówku
Accept-Language
, więc kod języka w nazwie podfolderu „i18n content” nie może zawierać tych znaczników podrzędnych. Na przykład nie możesz użyćes-419
anies-US
jako kodu języka w nazwie podfolderu, ale możesz użyćes
.Jeśli chcesz wyświetlać treści w określonym regionie lub kraju, możesz utworzyć podfoldery zawierające treści w określonym języku i kraju, które chcesz obsługiwać.
W tym przykładzie żądanie z Hiszpanii z preferencjami językowymi
es
,es-es
lub nawetes-419
otrzymałoby zawartość z podfolderues_es/
, ponieważ Hosting traktuje wszystkie te kody języków jakoes
.Żądanie ze Stanów Zjednoczonych, Meksyku lub dowolnego innego kraju z preferencją językową
es-419
otrzyma zawartość z podfolderues_ALL/
, ponieważ Hosting traktujees-419
jakoes
.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
W tym przykładzie żądanie z Meksyku z preferencją językową
es-419
otrzymałoby zawartość z podfolderues_mx/
, ponieważ Hosting traktuje kod językaes-419
jakoes
.Jednak żądanie ze Stanów Zjednoczonych z preferencją językową
es-419
otrzyma zawartość z podfolderues_ALL/
, ponieważ Hosting traktujees-419
jakoes
i nie ma podfolderues_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
Kolejność priorytetowa dla „treści i18n”
Jeśli skonfigurujesz przepisywanie i18n, Hosting udostępnia treści w oparciu o następującą kolejność priorytetów:
Zarezerwowane przestrzenie nazw, które zaczynają się od
/__/*
segmentu ścieżkiSkonfigurowane przekierowania
Zawartość statyczna z dopasowaniem ścisłym
Kod języka + kod kraju (na przykład treść z
fr_ca/
)
Kolejność jest zgodna z wartościami jakości dla każdego języka w nagłówkuAccept-Language
żądania.Tylko kod kraju (na przykład treść z
ALL_ca/
)Tylko kod języka (na przykład treść z
fr/
lubes_ALL/
)
Kolejność jest zgodna z wartościami jakości dla każdego języka w nagłówkuAccept-Language
żądania.„Domyślna” zawartość statyczna o dopasowaniu ścisłym
Jest to treść znajdująca się poza katalogiem „i18n content”, na przykład w katalogu głównym katalogupublic
.
Skonfigurowane przepisywanie
obsługa 404
i18n 404 stron
Jest to zgodne z tą samą kolejnością priorytetów wymienioną powyżej dla zawartości statycznej o dopasowaniu ścisłym.Domyślna strona 404 (dostarczana przez Firebase)
Przykład kolejności pierwszeństwa
Kontynuujmy nasz przykład z góry. Użyjemy tego samego przykładowego katalogu i przykładowego żądania.
Przykładowy lokalny katalog projektu z katalogiem „i18n content” (o nazwie
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
Przykładowe informacje o żądaniu
Kody języków:
fr
,en
(francuski, potem angielski)
Kody języków są uporządkowane na podstawie wartości jakości w nagłówkuAccept-Language
.Kod kraju:
ca
(Kanada)
Zgodnie z kolejnością priorytetów dokładnego dopasowania i wartościami jakości dla preferencji językowych, Hosting przeszuka katalogi w poszukiwaniu żądanej strony w następującej kolejności.
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/
obsługa 404
Która strona zostanie wyświetlona użytkownikowi?
Żądana strona:
index.html
index.html
z podfolderufr_ca/
Ponieważ Hosting najpierw przeszukuje podfolder
fr_ca/
, znajdzie w nim dokładne dopasowanie do plikuindex.html
.Żądana strona:
awesome-page.html
404.html
z podfolderufr/
Hosting najpierw przeszukuje cały katalog (w tym wszystkie podfoldery „i18n content” i katalog główny) w kolejności priorytetów w poszukiwaniu dokładnego dopasowania, ale nie ma dokładnego dopasowania dla
awesome-page.html
.Tak więc Hosting rozpocznie obsługę 404, która jest zgodna z tą samą kolejnością priorytetów i18n, co wyszukiwania z dokładnym dopasowaniem. Podfolder
fr/
jest pierwszym przeszukiwanym podfolderem zawierającym stronę 404.
Zwróć uwagę na następujące informacje na temat wyszukiwania i udostępniania katalogu „i18n content”:
Katalog
localized-files/
w rzeczywistości nie zawiera podfolderówen_ca/
,en_ALL/
anien/
, więc Hosting po prostu przeskoczy w dół listy priorytetów, dopóki nie znajdzie pasującego podfolderu dla kombinacji język-kraj żądania.Mimo że katalog
localized-files/
zawiera podfolderes_ALL/
, powyższe przykładowe żądanie nie zawiera kodu językaes
anies-foo
, więc Hosting nie wyszuka „zawartości i18n” pasującej does
.Podfoldery o nazwach
fr/
ifr_ALL/
są równoważne z punktu widzenia kraju i preferencji językowych użytkownika. Jeśli jednak istnieją oba podfoldery, Hosting będzie wyświetlałfr_ALL/
content przedfr/
content.
Zastąp języki i kody krajów za pomocą plików cookie
Możesz zmienić wyświetlaną treść, używając plików cookie, aby zastąpić nagłówki kraju i języka.
Oto kilka sposobów korzystania z zastępowania plików cookie:
Przetestuj funkcję z różnymi kombinacjami języka/kraju, aby sprawdzić, jakie treści są udostępniane.
Pozwól użytkownikom zmieniać treści, które widzą. Na przykład możesz zaimplementować selektor języka, a następnie odpowiednio ustawić plik cookie
firebase-language-override
użytkownika.
Aby skonfigurować zastępowanie plików cookie, ustaw pliki cookie z obiema lub jedną z tych nazw: firebase-country-override
i firebase-language-override
. Na przykład poniższy fragment kodu JavaScript zastępuje kod kraju na ca
i nagłówek Accept-Language
na fr,en
:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Zastąpienia językowych plików cookie muszą być oddzieloną przecinkami listą kodów języków w kolejności preferencji, bez podtagów ani wartości jakości.
Zastąpienia plików cookie nie są odzwierciedlane w dziennikach.