Używaj przekształceń na potrzeby międzynarodowości („przekształceń i18n”), 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ć:
Wyświetlaj te same treści w języku francuskim wszystkim użytkownikom, którzy preferują ten język (niezależnie od kraju).
Przykład: strona główna z tekstem w języku francuskimWyświetlaj treści w języku francuskim standardowe użytkownikom, którzy preferują ten język, ale w przypadku użytkowników z Kanady, którzy preferują francuski, wyświetlaj treści w języku francuskim kanadyjskim.
Przykład: strona główna z formułowaniem w języku francuskim standardowym a strona główna z formułowaniem w języku francuskim kanadyjskimWyświetlaj te same treści wszystkim użytkownikom z Kanady (niezależnie od preferowanego języka).
Przykład: strona główna w języku domyślnym witryny, ale z funkcją dostępną tylko w Kanadzie (np. motyw świąteczny).Wyświetlanie treści w języku francuskim (kanadyjski) użytkownikom z Kanady, którzy preferują ten język.
Przykład: strona główna z kanadyjskim francuskim wyrażeniem i funkcją specyficzną dla Kanady (np. motyw świąteczny)
Firebase Hosting określa kraj użytkownika na podstawie jego adresu IP, a preferencje językowe na podstawie nagłówka żądania Accept-Language
(zwykle ustawiane automatycznie przez przeglądarkę).
Konfigurowanie przekierowań i18n
Aby skonfigurować przekształcanie treści na potrzeby międzynarodowej strony Hosting, musisz utworzyć katalog „i18n content” dla wszystkich zlokalizowanych treści, a potem dodać atrybut i18n
do pliku firebase.json
, aby wskazywał on na nowy katalog „i18n content”.
Oto szczegółowe instrukcje:
W folderze
public
w lokalnym katalogu aplikacji utwórz osobny folder na „treści z lokalizacją”, a potem utwórz podfoldery dla każdej pary języka i kraju obsługiwanej przez witrynę.W każdym podfolderze dodaj treści odpowiadające danej kombinacji, np. strony główne na temat świąt lub strony 404 w różnych językach.
Oto przykład katalogu „treści dla internautów” 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
Wyświetlanie żądań dopasowania dla treści w każdym podfolderze
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 obsługiwanej przez witrynę kombinacji języka i kraju. Nazwy każdego podfolderu muszą być zgodne z jednym z tych formatów:languageCode_countryCode
: zawiera treści przeznaczone dla użytkowników, którzy mają wybrany ten język i ten kod kraju.languageCode
: zawiera treści przeznaczone dla użytkowników, którzy mają ten język ustawiony jako preferowany, ale nie są one związane z konkretnym krajem; w podstawie jest to to samo colanguageCode_ALL
.
Więcej informacji o tych kodach znajdziesz w sekcji Kody krajów i języków. Wartość
ALL
(z rozróżnianą wielkością liter) może wskazywać dowolny kraj (np.es_ALL/
) lub dowolny język (np.ALL_ca/
).Pliki w podfolderze nie muszą mieć analogicznych plików w katalogu
public
ani w innych podfolderach. Możesz tworzyć treści, które są przeznaczone wyłącznie dla określonego języka lub kraju.Dodaj atrybut
i18n
do plikufirebase.json
i określ katalog zawierający „treści z lokalizacją”. Wracając do naszego przykładu:// firebase.json "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "i18n": { "root": "/localized-files" // directory that contains your "i18n content" } ... }
Katalog podany w parametryzacji
root
musi być nazwą katalogu zawierającego wszystkie podkatalogi „treści i18n”. Jeśli wszystkie podfoldery „tłumaczenie” umieścisz w katalogu głównympublic
, użyj wartości/
dlaroot
. Średniki na początku i na końcu wartościroot
są opcjonalne.Wdrożyć w witrynie Hosting treści i konfigurację związane z międzynarodową obsługą języków.
Konfigurację możesz przetestować, używając zastąpienia plików cookie.
Kody krajów i języków
Nazwy podfolderów „treści i18n” muszą zawierać małe litery w przypadku zarówno kodów krajów, jak i kodów języków. Wartość ALL
(z rozróżnianiem wielkości liter) może wskazywać dowolny kraj (np. es_ALL/
) lub dowolny język (np. ALL_ca/
).
Hosting pobiera kod kraju z adresu IP użytkownika. Kody krajów to dwuliterowe kody ISO 3166-1 alfa-2.
Kody języków są pobierane z nagłówka żądania Accept-Language
użytkownika (zwykle ustawiane automatycznie przez przeglądarkę).
Są to kody ISO 639-1.
Korzystając z kodów językowych, pamiętaj o tych kwestiach:
Gdy Hosting wyszukuje, jakie „treści w języku i18n” ma wyświetlić, sortuje języki według wartości jakości w nagłówku
Accept-Language
.Hosting usuwa wszystkie tagi regionalne i krajowe w nagłówku
Accept-Language
, więc kod języka w nazwie podfolderu „treści i18n” nie może zawierać tych tagów. Nie możesz na przykład użyć kodu językaes-419
anies-US
w nazwie podfolderu, ale możesz użyć kodues
.Jeśli chcesz wyświetlać treści w określonym języku lub w określonym kraju, możesz utworzyć podfoldery zawierające treści w określonym języku lub w określonym kraju, które chcesz obsługiwać.
Przykłady treści regionalnych lub krajowych
Wyświetlanie treści w języku hiszpańskim w Hiszpanii w porównaniu z dowolnym innym krajem (naśladowanie działania
es-419
)W tym przykładzie żądanie z Hiszpanii z ustawionymi preferencjami językowymi
es
,es-es
lub nawetes-419
otrzyma treści z podfolderues_es/
, ponieważ Hosting traktuje wszystkie te kody języka jakoes
.Prośba z Stanów Zjednoczonych, Meksyku lub innego kraju z ustawionymi preferencjami językowymi
es-419
zostanie obsłużona przez podfolderes_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
Wyświetlanie treści w języku hiszpańskim w określonych krajach
W tym przykładzie żądanie z Meksyku z preferowanym językiem
es-419
otrzyma treści z podfolderues_mx/
, ponieważ Hosting traktuje kod językaes-419
jakoes
.Jednak w przypadku zapytania z USA z preferowanym językiem
es-419
wyświetlane są treści z folderu podrzędnegoes_ALL/
, ponieważ Hosting traktujees-419
jakoes
i nie ma folderu podrzędnegoes_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ść priorytetów w przypadku „treści z uwzględnieniem lokalizacji”
Jeśli skonfigurujesz przekształcenia treści w wielu językach, Hosting będzie wyświetlać treści w następującej kolejności:
Zarezerwowane przestrzenie nazw, które zaczynają się od segmentu ścieżki
/__/*
Skonfigurowane przekierowania
Treści statyczne z dopasowaniem dokładnym
Kod języka + kod kraju (np. treści z
fr_ca/
)
Kolejność odpowiada wartościom jakości dla poszczególnych języków w nagłówkuAccept-Language
żądania.Tylko kod kraju (np.
ALL_ca/
)Tylko kod języka (np. treści z
fr/
lubes_ALL/
)
Kolejność odpowiada wartościom jakości poszczególnych języków w nagłówkuAccept-Language
żądania.„Domyślne” treści statyczne z dopasowaniem dokładnym
Treści te znajdują się poza katalogiem „Treści i18n”, na przykład w katalogu głównympublic
.
Skonfigurowane przekierowania
Obsługa błędów 404
strony 404 w języku i18n
. Są one wyświetlane w tym samym porządku priorytetów, co treści statyczne z dopasowaniem do wyrażenia dokładnego.Domyślna strona 404 (dostarcza Firebase)
Przykład kolejności priorytetów
Wróćmy do przykładu z powyżej. Użyjemy tego samego przykładowego katalogu i przykładowego żądania.
Przykład katalogu lokalnego projektu z katalogiem „treści i18n” (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 według wartości jakości w nagłówkuAccept-Language
.Kod kraju:
ca
(Kanada)
Zgodnie z kolejnością priorytetów dopasowania ścisłego i wartościami jakości dla preferencji językowych Hosting będzie przeszukiwać katalogi w takiej 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 błędów 404
Która strona zostanie wyświetlona użytkownikowi?
Żądana strona:
index.html
Odpowiedz
index.html
z podfolderufr_ca/
Ponieważ funkcja Hosting najpierw przeszukuje podfolder
fr_ca/
, znajdzie dopasowanie ścisłe doindex.html
w tym podfolderze.Żądana strona:
awesome-page.html
Odpowiedz
404.html
z podfolderufr/
Hosting najpierw przeszukuje cały katalog (w tym wszystkie podkatalogi „treści i18n” i katalog główny) w kolejności priorytetów w celu znalezienia dopasowania ścisłego, ale w przypadku
awesome-page.html
nie ma dopasowania ścisłego.W związku z tym Hosting rozpocznie obsługę błędu 404, która jest zgodna z tym samym porządkiem priorytetów i18n co w przypadku wyszukiwań w dopasowaniu ścisłym. Podfolder
fr/
to pierwszy podfolder, który jest przeszukany i zawiera stronę 404.
Pamiętaj o tych kwestiach dotyczących wyszukiwania i obsługi katalogu „Treści w języku i18n”:
Katalog
localized-files/
nie zawiera podfolderówen_ca/
,en_ALL/
anien/
, więc Hosting będzie przewijać listę priorytetów, aż znajdzie odpowiedni podfolder dla kombinacji język-kraj żądania.Mimo że katalog
localized-files/
zawiera podfolderes_ALL/
, podany powyżej przykład żądania nie zawiera kodu językaes
anies-foo
, więc Hosting nie będzie wyszukiwać „treści z uwzględnieniem lokalizacji”, które pasują does
.Foldery podrzędne o nazwach
fr/
ifr_ALL/
są równoważne z punktu widzenia ustawień kraju i języka użytkownika. Jeśli jednak oba podfoldery istnieją, Hosting wyświetli treści zfr_ALL/
przed treściami zfr/
.
Zastępowanie kodów języków i krajów za pomocą plików cookie
Za pomocą plików cookie możesz zmienić wyświetlane treści, aby zastąpić nagłówki kraju i języka.
Oto kilka sposobów korzystania z zastąpienia plików cookie:
Testuj funkcję z różnymi kombinacjami języków i krajów, aby sprawdzić, jakie treści są wyświetlane.
Pozwól użytkownikom zmieniać wyświetlane treści. Możesz na przykład wdrożyć selektor języka, a potem odpowiednio ustawić plik cookie użytkownika
firebase-language-override
.
Aby skonfigurować zastąpienia plików cookie, ustaw pliki cookie o tych nazwach: firebase-country-override
i firebase-language-override
. Na przykład ten fragment kodu JavaScript zastępuje kod kraju wartością ca
, a tag Accept-Language
– wartością fr,en
:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Zastąpienia plików cookie języka muszą być rozdzielone przecinkami listą kodów języków w kolejności preferencji bez podtagów ani wartości jakości.
Zastępowanie plików cookie nie jest widoczne w logach.