Konfigurowanie przepisywania internacjonalizacji (i18n)

Używaj przekształceń na potrzeby międzynarodowej lokalizacji („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 francuskim

  • Wyś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 kanadyjskim

  • Wyświetlaj te same treści wszystkim użytkownikom z Kanady (niezależnie od wybranego 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:

  1. 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 odpowiednie dla 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 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

    Katalog localized-files/ zawiera osobne podfoldery dla każdej obsługiwanej przez witrynę kombinacji języka i kraju. Wzór nazewnictwa każdego folderu podrzędnego musi być zgodny 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 co languageCode_ALL.

    Więcej informacji o tych kodach znajdziesz w sekcji Kody krajów i 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/).

    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.

  2. Dodaj atrybut i18n do pliku firebase.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 parametrze root musi być nazwą katalogu zawierającego wszystkie podkatalogi „treści i18n”. Jeśli wszystkie podfoldery „tłumaczenie” umieścisz w katalogu głównym public, użyj wartości / dla root. Średniki na początku i na końcu wartości root są opcjonalne.

  3. Wdrożyć w witrynie Hosting treści i konfigurację dotyczącą międzynarodowej obsługi języków.

Konfigurację możesz przetestować, używając zastępowania 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. Na przykład nie możesz użyć es-419 ani es-US jako kodu języka w nazwie podfolderu, ale możesz użyć es.

    Jeśli chcesz wyświetlać treści dla określonego 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 „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:

  1. Zarezerwowane przestrzenie nazw zaczynające się od segmentu ścieżki /__/*

  2. Skonfigurowane przekierowania

  3. Treści statyczne z dopasowaniem dokładnym

    1. 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łówku Accept-Language żądania.

    2. Tylko kod kraju (np. ALL_ca/)

    3. Tylko kod języka (np. treści z fr/ lub es_ALL/)
      Kolejność odpowiada wartościom jakości w każdym języku w nagłówku Accept-Language żądania.

    4. „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łównym public.

  4. Skonfigurowane przekierowania

  5. Obsługa błędów 404

    1. 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.

    2. Niestandardowa strona 404

    3. 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łówku Accept-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 wyszukiwać żądane strony w katalogach w tej kolejności:

  1. public/localized-files/fr_ca/

  2. public/localized-files/en_ca/

  3. public/localized-files/ALL_ca/

  4. public/localized-files/fr_ALL/

  5. public/localized-files/fr/

  6. public/localized-files/en_ALL/

  7. public/localized-files/en/

  8. public/

  9. Obsługa błędów 404

Która strona zostanie wyświetlona użytkownikowi?

  • Żądana strona: index.html

  • Żądana strona: awesome-page.html

Pamiętaj o tych kwestiach dotyczących wyszukiwania i obsługi katalogu „Treści w języku i18n”:

  • Katalog localized-files/ nie zawiera podfolderów en_ca/, en_ALL/ ani en/, więc Hosting będzie przewijać listę priorytetów, aż znajdzie podfolder pasujący do kombinacji język-kraj żądania.

  • Mimo że katalog localized-files/ zawiera podfolder es_ALL/, podany powyżej przykład żądania nie zawiera kodu języka es ani es-foo, więc Hosting nie będzie wyszukiwać „treści z uwzględnieniem lokalizacji”, które pasują do es.

  • Foldery podrzędne o nazwach fr/fr_ALL/ są równoważne z perspektywy ustawień kraju i języka użytkownika. Jeśli jednak oba podfoldery istnieją, Hosting wyświetli treści fr_ALL/ przed treściami fr/.

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ąpień plików cookie:

  • Przetestuj funkcję z różnymi kombinacjami języka i kraju, 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żytkownikafirebase-language-override.

Aby skonfigurować zastąpienia plików cookie, ustaw pliki cookie o nazwach firebase-country-overridefirebase-language-override. Na przykład ten fragment kodu JavaScript zastępuje kod kraju wartością ca, a nagłówek Accept-Language – wartością fr,en:

document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";

Zastąpienia plików cookie dotyczące 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ępowania plików cookie nie są uwzględniane w logach.