Aby wyświetlać różne treści w zależności od kraju użytkownika lub preferowanego języka, użyj przepisów na internacjonalizację („przepisy i18n”). Oto kilka przykładowych konfiguracji, które możesz ustawić:
Wyświetlanie tych samych 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 francuskim.Wyświetlanie treści w standardowym języku francuskim użytkownikom, którzy preferują ten język, ale w przypadku użytkowników z Kanady preferujących język francuski wyświetlanie treści w kanadyjskiej odmianie języka francuskiego.
Przykład: strona główna z tekstem w standardowym języku francuskim i strona główna z tekstem w kanadyjskiej odmianie języka francuskiego.Wyświetlanie tych samych treści wszystkim użytkownikom z Kanady (niezależnie od preferowanego języka).
Przykład: strona główna w „domyślnym” języku witryny, ale z funkcją specyficzną dla Kanady (np. motywem świątecznym).Wyświetlanie treści w kanadyjskiej odmianie języka francuskiego użytkownikom z Kanady, którzy preferują ten język.
Przykład: strona główna z tekstem w kanadyjskiej odmianie języka francuskiego i funkcją specyficzną dla Kanady (np. motywem świątecznym).
Firebase Hosting określa kraj użytkownika na podstawie jego adresu IP, a
preferencje językowe na podstawie nagłówka żądania Accept-Language (zwykle
ustawianego automatycznie przez przeglądarkę internetową).
Konfigurowanie przepisów i18n
Aby skonfigurować przepisy i18n w witrynie Hosting, musisz utworzyć katalog "i18n
content" na potrzeby wszystkich zlokalizowanych treści, a następnie dodać atrybut i18ndo pliku firebase.json, aby wskazywał on nowy katalog "i18n content".
Oto szczegółowe instrukcje:
W folderze
publiclokalnego katalogu aplikacji utwórz osobny katalog na „i18n content”, a następnie utwórz podfoldery dla każdej kombinacji języka i kraju obsługiwanej przez witrynę.W każdym podfolderze dodaj treści specyficzne dla danej kombinacji, np. strony główne z motywem świątecznym lub strony 404 w określonym języku.
Oto przykład katalogu „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.htmlKatalog
localized-files/zawiera osobne podfoldery dla każdej kombinacji języka i kraju obsługiwanej przez witrynę. Wzór nazewnictwa każdego podfolderu musi być zgodny z jednym z tych formatów:languageCode_countryCode: zawiera treści specyficzne dla użytkowników którzy mają takie preferencje językowe i taki kod kraju.languageCode: zawiera treści specyficzne dla użytkowników, którzy mają takie preferencje językowe, ale treści nie są specyficzne dla kraju; jest to w zasadzie odpowiedniklanguageCode_ALL
Więcej informacji o tych kodach znajdziesz w podsekcji Kody krajów i języków poniżej. Możesz użyć wartości
ALL(z uwzględnieniem wielkości 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
publicani w innych podfolderach. Możesz tworzyć treści, które są w całości specyficzne dla języka lub kraju.Dodaj atrybut
i18ndo plikufirebase.jsoni określ katalog, który zawiera „i18n content”. 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 w przypadku
rootmusi być nazwą katalogu, który zawiera wszystkie podfoldery „i18n content”. Jeśli wszystkie podfoldery „i18n content” znajdują się w katalogu głównympublic, użyj/jako wartościroot. Ukośniki na początku i na końcu wartościrootsą opcjonalne.Wdróż "i18n content" i konfigurację w witrynie Hosting.
Możesz przetestować konfigurację za pomocą zastępowania plików cookie.
Kody krajów i języków
Podczas nazywania podfolderów „i18n content” musisz używać małych liter zarówno w przypadku kodów krajów, jak i języków. Możesz użyć wartości ALL (z uwzględnieniem wielkości liter), aby wskazać
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
ustawianego automatycznie przez przeglądarkę internetową).
Są to kody ISO 639-1.
Korzystając z kodów języków, pamiętaj o tych kwestiach:
Gdy Hosting wyszukuje „i18n content”, które ma wyświetlić, porządkuje języki na podstawie wartości jakości w nagłówku
Accept-Language.Hosting usuwa wszystkie podtagi regionalne i krajowe w nagłówku
Accept-Language, więc kod języka w nazwie podfolderu "i18n content" nie może zawierać tych podtagów. Na przykład nie możesz użyćes-419anies-USjako kodu języka w nazwie podfolderu, ale możesz użyćes.Jeśli chcesz udostępniać treści specyficzne dla regionu lub kraju, możesz utworzyć podfoldery zawierające treści w określonym języku i kraju, które chcesz obsługiwać.
Kolejność priorytetów w przypadku „i18n content”
Jeśli skonfigurujesz przepisy i18n, Hosting będzie wyświetlać treści w tej kolejności priorytetów:
Zarezerwowane przestrzenie nazw, które zaczynają się od segmentu ścieżki
/__/*.Skonfigurowane przekierowania
Treści statyczne w dopasowaniu ścisłym.
Kod języka + kod kraju (np. treści z
fr_ca/)
Kolejność jest zgodna z wartościami jakości każdego języka w nagłówkuAccept-Languageżądania.Tylko kod kraju (np. treści z
ALL_ca/).Tylko kod języka (np. treści z
fr/lubes_ALL/)
Kolejność jest zgodna z wartościami jakości każdego języka w nagłówkuAccept-Languageżądania.„Domyślne” treści statyczne w dopasowaniu ścisłym.
Są to treści, które znajdują się poza katalogiem „i18n content”, np. w katalogu głównympublicdirectory.
Skonfigurowane przepisy
Obsługa błędów 404.
Strony 404 i18n
Obowiązuje ta sama kolejność priorytetów, która została wymieniona powyżej w przypadku treści statycznych w dopasowaniu ścisłym.Domyślna strona 404 (udostępniana przez Firebase).
Przykład kolejności priorytetów
Kontynuujmy nasz przykład z powyżej. Użyjemy tego samego przykładowego katalogu i przykładowego żądania.
Przykładowy projekt lokalny 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.htmlPrzykładowe informacje o żądaniu
Kody języków:
fr,en(najpierw francuski, potem angielski)
Kody języków są uporządkowane na podstawie wartości jakości wAccept-Languagenagłówku.Kod kraju:
ca(Kanada).
Zgodnie z kolejnością priorytetów w dopasowaniu ścisłym i wartościami jakości preferencji językowych, Hosting będzie przeszukiwać katalogi pod kątem żądanej strony w tej 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Żądana strona:
awesome-page.html
Oto kilka informacji na temat tego wyszukiwania i wyświetlania katalogu „i18n content”:
Katalog
localized-files/nie zawiera podfolderówen_ca/,en_ALL/anien/, więc Hosting po prostu pominie listę priorytetów, aż znajdzie pasujący podfolder dla kombinacji języka i kraju w żądaniu.Mimo że katalog
localized-files/zawiera podfolderes_ALL/, przykładowe żądanie powyżej nie zawiera kodu językaesanies-foo, więc Hosting nie będzie szukać „i18n content”, które pasuje does.Podfoldery o nazwach
fr/ifr_ALL/są równoważne z perspektywy preferencji językowych i krajowych użytkownika. Jeśli jednak oba podfoldery istnieją, Hosting będzie wyświetlać treścifr_ALL/przed treściamifr/.
Zastępowanie kodów języków i krajów za pomocą plików cookie
Możesz zmienić wyświetlane treści, używając plików cookie do zastępowania nagłówków krajów i języków.
Oto kilka sposobów używania zastępowania plików cookie:
Testowanie funkcji z różnymi kombinacjami języków i krajów, aby sprawdzić, które treści są wyświetlane.
Umożliwianie użytkownikom zmiany wyświetlanych treści. Możesz na przykład wdrożyć selektor języka, a następnie odpowiednio ustawić plik cookie
firebase-language-overrideużytkownika.
Aby skonfigurować zastępowanie plików cookie, ustaw pliki cookie z tymi nazwami lub jedną z nich: firebase-country-override i firebase-language-override. Na przykład ten fragment kodu JavaScript zastępuje kod kraju na ca, a nagłówek Accept-Language na fr,en:
document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";
Zastępowanie plików cookie języka musi być listą kodów języków rozdzielonych przecinkami w kolejności preferencji, bez podtagów ani wartości jakości.
Zastępowanie plików cookie nie jest odzwierciedlane w logach.