Skonfiguruj przepisywanie internacjonalizacji (i18n).

Użyj przepisywania internacjonalizacji („przepisy 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ć:

  • Udostępniaj tę samą treść 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 francuskim

  • Udostępniaj treści w standardowym języku francuskim użytkownikom, którzy wolą język francuski, natomiast użytkownikom z Kanady , którzy preferują język francuski, udostępniaj zamiast tego treści w języku kanadyjskim.
    Przykład: strona główna ze sformułowaniami w standardowym języku francuskim w porównaniu ze stroną główną ze zwrotami w języku kanadyjskim

  • Udostępniaj tę samą treść wszystkim użytkownikom w Kanadzie (niezależnie od ich preferencji językowych).
    Przykład: strona główna z „domyślnym” językiem Twojej witryny, ale z funkcjami specyficznymi dla Kanady (np. motywem świątecznym)

  • Udostępniaj treści w języku kanadyjskim francuskim użytkownikom z Kanady, którzy preferują język francuski.
    Przykład: strona główna ze zwrotami kanadyjskimi i francuskimi oraz elementami charakterystycznymi dla Kanady (np. motywem świątecznym)

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

Skonfiguruj przepisywanie i18n

Aby skonfigurować przepisywanie i18n dla witryny hostingowej, musisz utworzyć katalog „i18n content” dla całej zlokalizowanej treści, a następnie dodać atrybut i18n do pliku firebase.json , aby wskazywał nowy katalog „i18n content”.

Oto szczegółowe kroki:

  1. W folderze public lokalnego katalogu aplikacji utwórz oddzielny katalog na „treść 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 zawartość specyficzną dla tej kombinacji, na przykład strony główne o tematyce świątecznej lub strony 404 specyficzne dla języka.

    Oto przykładowy katalog „treść 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 kombinacji języka i kraju obsługiwanej przez Twoją witrynę. Wzorzec nazewnictwa 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 mają określone preferencje językowe i ten kod kraju

    • languageCode : zawiera treść specyficzną dla użytkowników, którzy mają określone preferencje językowe, ale treść nie jest specyficzna dla kraju; w zasadzie odpowiednik languageCode_ALL

    Więcej informacji na temat tych kodów można znaleźć w podsekcji Kody krajów i języków poniżej. Możesz użyć wartości ALL (wielkość liter ma znaczenie), 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 języka i/lub kraju.

  2. Dodaj atrybut i18n do pliku firebase.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 dla root musi być nazwą katalogu zawierającego wszystkie podfoldery „treści i18n”. Jeśli umieściłeś wszystkie podfoldery „i18n content” w katalogu głównym katalogu public , użyj / jako wartości root . Ukośniki początkowe i końcowe w wartości root są opcjonalne.

  3. Wdróż swoją „treść i18n” i konfigurację na swojej stronie hostingowej.

Możesz przetestować swoją konfigurację, korzystając z zastąpień plików cookie .

Kody krajów i języków

Nazywając podfoldery „i18n content”, należy używać małych liter zarówno w przypadku kodów kraju, jak i języka. Możesz użyć wartości ALL (wielkość liter ma znaczenie), 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ą 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, należy pamiętać o następujących kwestiach:

  • Gdy Hosting wyszukuje „treść i18n”, którą ma wyświetlić, porządkuje języki na podstawie wartości jakości w nagłówku Accept-Language .

  • Hosting usuwa wszelkie 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-419 ani es-US jako kodu języka w nazwie podfolderu, ale możesz użyć es .

    Jeśli chcesz udostępniać określone treści regionalne lub krajowe, możesz utworzyć podfoldery zawierające treści w określonym języku i kraju, które chcesz obsługiwać.

Kolejność priorytetów dla „treści i18n”

Jeśli skonfigurujesz przepisywanie i18n, Hosting będzie udostępniać treści w oparciu o następującą kolejność priorytetów:

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

  2. Skonfigurowane przekierowania

  3. Dokładne dopasowanie treści statycznych

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

    2. Tylko kod kraju (na przykład treść z ALL_ca/ )

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

    4. „Domyślna” treść statyczna o dokładnym dopasowaniu
      Jest to treść znajdująca się poza katalogiem „i18n content”, np. w katalogu głównym katalogu public .

  4. Skonfigurowane przepisywanie

  5. Obsługa 404

    1. i18n 404 strony
      Jest to zgodne z tą samą kolejnością priorytetów, jaką wymieniono powyżej w przypadku treści statycznych z dopasowaniem ścisłym.

    2. Niestandardowa strona 404

    3. Domyślna strona 404 (dostarczana przez Firebase)

Przykład kolejności priorytetów

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” (zwanym 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 dotyczące żądania

    • Kody języków: fr , en (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 dokładnego dopasowania i wartościami jakości preferencji językowych, Hosting przeszuka katalogi w poszukiwaniu żądanej strony w następującej 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 404

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

  • Żądana strona: index.html

  • Żądana strona: awesome-page.html

Zwróć uwagę na następujące informacje dotyczące wyszukiwania i udostępniania katalogu „i18n content”:

  • Katalog localized-files/ tak naprawdę nie zawiera podfolderów en_ca/ , en_ALL/ ani en/ , więc Hosting po prostu pominie listę priorytetów, aż znajdzie podfolder pasujący do kombinacji języka i kraju żądania.

  • Mimo że katalog localized-files/ zawiera podfolder es_ALL/ , powyższe przykładowe żądanie nie zawiera kodu języka es ani es-foo , więc Hosting nie będzie wyszukiwał „treści i18n” pasującej do es .

  • Podfoldery o nazwach fr/ i fr_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/ treść przed fr/ content.

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

Oto kilka sposobów wykorzystania 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ść, którą 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ąpienie plików cookie, ustaw pliki cookie o obu lub jednej z tych nazw: firebase-country-override i firebase-language-override . Na przykład następujący fragment kodu JavaScript zastępuje kod kraju w postaci ca i nagłówek Accept-Language w postaci fr,en :

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

Zastąpienia plików cookie języka muszą być listą oddzielonych przecinkami kodów języków w preferowanej kolejności, bez podtagów i wartości jakości.

Zastąpienie plików cookie nie jest odzwierciedlane w logach.