Konfigurowanie przepisywania internacjonalizacji (i18n)

Używaj przepisów międzynarodowych („i18n rewrites”), 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 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świetlaj treści w standardowej wersji języka francuskiego użytkownikom, którzy wolą ten język, ale użytkownikom z Kanady, którzy wolą język francuski, wyświetlaj treści w wersji kanadyjskiej.
    Przykład: strona główna z sformułowaniami w standardowej odmianie języka francuskiego i strona główna z sformułowaniami w kanadyjskiej odmianie języka francuskiego

  • Wyświetlanie tych samych treści wszystkim użytkownikom w Kanadzie (niezależnie od ich preferencji językowych).
    Przykład: strona główna w „domyślnym” języku witryny, ale z funkcją przeznaczoną dla użytkowników z Kanady (np. motywem świątecznym).

  • Wyświetlanie treści w języku francuskim (Kanada) użytkownikom z Kanady, którzy wolą ten język.
    Przykład: strona główna z treściami w języku francuskim używanym w Kanadzie i funkcją dostosowaną do Kanady (np. motywem świątecznym).

Firebase Hosting określa kraj użytkownika na podstawie jego adresu IP, a preferencje językowe użytkownika na podstawie nagłówka żądania Accept-Language (zwykle ustawianego automatycznie przez przeglądarkę internetową).

Konfigurowanie przepisów dotyczących lokalizacji

Aby skonfigurować przekierowania i18n na stronie Hosting, musisz utworzyć katalog „i18n content” dla wszystkich zlokalizowanych treści, a następnie dodać atrybut i18n do pliku firebase.json, aby wskazywał nowy katalog „i18n content”.

Aby to zrobić:

  1. W folderze public lokalnego katalogu aplikacji utwórz osobny folder na „treś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ści odpowiednie dla danej kombinacji, np. strony główne o tematyce świątecznej 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.html

    Katalog localized-files/ zawiera osobne podfoldery dla każdej kombinacji języka i kraju obsługiwanej przez Twoją witrynę. Wzorzec nazewnictwa każdego podfolderu musi być zgodny z jednym z tych formatów:

    • languageCode_countryCode: zawiera treści przeznaczone dla użytkowników, którzy mają ustawiony dany język i kod kraju.

    • languageCode: zawiera treści przeznaczone dla użytkowników, którzy preferują ten język, ale nie są one specyficzne dla danego kraju; w zasadzie odpowiednik languageCode_ALL.

    Więcej informacji o tych kodach znajdziesz w podsekcji Kody krajów i języków poniżej. Wartość ALL (z uwzględnieniem wielkości liter) możesz podać, 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 ani w innych podfolderach. Możesz tworzyć treści, które są w całości dostosowane do danego języka lub kraju.

  2. Dodaj atrybut i18n do pliku firebase.json i określ katalog zawierający „treści międzynarodowe”. 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 dla root musi być nazwą katalogu, który zawiera wszystkie podfoldery „treści międzynarodowych”. Jeśli wszystkie podfoldery „i18n content” znajdują się w katalogu głównym public, użyj / jako wartości root. Ukośniki na początku i na końcu wartości root są opcjonalne.

  3. Wdróż „treści i18n” i konfigurację w Hosting witrynie.

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 w przypadku kodów krajów i języków. Wartość ALL (z uwzględnieniem 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ęzyka są pobierane z Accept-Languagenagłówka żądania 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 „treści i18n”, które ma wyświetlić, porządkuje języki na podstawie wartości jakości w nagłówku Accept-Language.

  • Hosting usuwa wszystkie regionalne i krajowe podtagi 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żywać 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 w określonych regionach lub krajach, możesz utworzyć podfoldery zawierające treści w określonych językach i krajach.

Kolejność priorytetów dla „treści międzynarodowych”

Jeśli skonfigurujesz przekształcenia i18n, Hosting będzie wyświetlać treści w tej kolejności priorytetów:

  1. Zarezerwowane przestrzenie nazw, które zaczynają się od segmentu ścieżki /__/*

  2. Skonfigurowane przekierowania

  3. Treści statyczne dopasowane dokładnie

    1. Kod języka + kod kraju (np. treść z fr_ca/)
      Kolejność jest zgodna z wartościami jakości dla poszczególnych języków w nagłówku Accept-Language żądania.

    2. Tylko kod kraju (np. treści z ALL_ca/)

    3. Tylko kod języka (np. treści z fr/ lub es_ALL/).
      Kolejność jest zgodna z wartościami jakości dla poszczególnych języków w nagłówku Accept-Language żądania.

    4. Statyczne treści o dokładnym dopasowaniu „Domyślne”
      Są to treści znajdujące się poza katalogiem „i18n content”, np. w katalogu głównym public.

  4. Skonfigurowane zmiany

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

    1. Strony błędu 404 w wersjach językowych
      Obowiązuje tu ta sama kolejność priorytetów co w przypadku statycznych treści o dokładnym dopasowaniu.

    2. Niestandardowa strona 404

    3. Domyślna strona 404 (udostępniana przez Firebase)

Przykład kolejności priorytetów

Wróćmy do naszego przykładu. 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 (najpierw francuski, potem angielski)
      Kody języków są uporządkowane na podstawie 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 usługa Hosting będzie wyszukiwać żądaną stronę 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 uwagach na temat wyszukiwania i wyświetlania zawartości katalogu „i18n content”:

  • Katalog localized-files/ nie zawiera podfolderów en_ca/, en_ALL/ ani en/, więc Hosting będzie pomijać kolejne pozycje na liście priorytetów, aż znajdzie pasujący podfolder dla kombinacji języka i kraju w żądaniu.

  • Mimo że katalog localized-files/ zawiera es_ALL/ podfolder, w powyższym żądaniu nie ma kodu języka es ani es-foo dlatego Hosting nie będzie szukać „treści i18n”, które pasują do es.

  • Podfoldery o nazwach fr/ i fr_ALL/ są równoważne z punktu widzenia kraju użytkownika i jego preferencji językowych. Jeśli jednak oba podfoldery istnieją, Hosting będzie wyświetlać treści fr_ALL/ przed treściami fr/.

Możesz zmienić wyświetlane treści, używając plików cookie do zastąpienia nagłówków kraju i języka.

Oto kilka sposobów używania zastępowania plików cookie:

  • Testuj funkcję z różnymi kombinacjami języka i kraju, aby sprawdzić, jakie treści są wyświetlane.

  • Umożliwiaj użytkownikom zmianę wyświetlanych treści. Możesz na przykład wdrożyć 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 o nazwach firebase-country-override lub firebase-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ących języka muszą być listą kodów języków rozdzielonych przecinkami w kolejności preferencji, bez podtagów ani wartości jakości.

Zastąpienia plików cookie nie są odzwierciedlane w logach.