Check out what’s new from Firebase at Google I/O 2022. Learn more

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ć:

  • Wyświetlaj te same treści 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

  • Wyświetlaj treści w standardowym francuskim użytkownikom, którzy preferują francuski, ale w przypadku Kanadyjczyków , którzy preferują francuski, wyświetlaj treści w języku kanadyjskim.
    Przykład: strona główna z frazą standardową francuską a strona główna z frazą po francusku kanadyjskim

  • Wyświetlaj te same treści wszystkim użytkownikom z Kanady (niezależnie od ich preferencji językowych).
    Przykład: strona główna z „domyślnym” językiem Twojej witryny, ale z funkcją charakterystyczną dla Kanady (np. motyw świąteczny)

  • Wyświetlaj treści w języku kanadyjskim francuskim użytkownikom z Kanady, którzy preferują język francuski.
    Przykład: strona główna z frazą kanadyjsko francuską i cechą charakterystyczną dla Kanady (np. motyw świąteczny)

Hosting Firebase 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ą ).

Skonfiguruj przepisywanie i18n

Aby skonfigurować przepisywanie i18n dla swojej 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 osobny katalog dla „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ść specyficzną dla tej kombinacji, np. strony główne o tematyce świątecznej lub strony 404 specyficzne dla języka.

    Oto przykładowy katalog "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 dla każdego podfolderu musi być zgodny z jednym z tych formatów:

    • languageCode_countryCode : zawiera treść specyficzną dla użytkowników, którzy mają preferencje językowe i kod kraju

    • languageCode : zawiera treść specyficzną dla użytkowników, którzy mają preferencje językowe, ale treść nie jest specyficzna dla kraju; zasadniczo 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 (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 public lub innych podfolderach. Możesz tworzyć treści, które są całkowicie specyficzne dla języka i/lub kraju.

  2. Dodaj atrybut i18n do pliku firebase.json i określ katalog zawierający „treść 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, który zawiera wszystkie podfoldery "i18n content". Jeśli umieściłeś wszystkie swoje podfoldery "i18n content" w katalogu głównym katalogu public , użyj / jako wartości root . Początkowe i końcowe ukośniki w wartości root są opcjonalne.

  3. Wdróż swoją „treść i18n” i skonfiguruj ją w swojej witrynie hostingowej.

Możesz przetestować swoją konfigurację za pomocą nadpisań plików cookie .

Kody krajów i języków

Podczas nazywania podfolderów „treść i18n” należy 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 uzyskuje kod kraju z adresu IP użytkownika. Kody krajów to dwuliterowe kody ISO 3166-1 alfa-2 .

Kody języków są uzyskiwane z nagłówka żądania Accept-Language użytkownika (zwykle ustawianego automatycznie przez przeglądarkę internetową ). Są to kody ISO 639-1 . Podczas używania kodów języków pamiętaj o następujących kwestiach:

  • Gdy Hosting wyszukuje, która „treść i18n” ma być udostępniana, 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 lub es-US jako kodu języka w nazwie podfolderu, ale możesz użyć es .

    Jeśli chcesz obsługiwać określoną zawartość regionalną lub krajową, możesz utworzyć podfoldery zawierające zawartość w określonym języku i kraju, którą chcesz obsługiwać.

Kolejność priorytetowa dla „treści i18n”

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

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

  2. Skonfigurowane przekierowania

  3. Treść statyczna w ścisłym dopasowaniu

    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” zawartość statyczna w dopasowaniu ścisłym
      To jest zawartość, która znajduje się poza katalogiem „i18n content”, na przykład w katalogu głównym katalogu public .

  4. Skonfigurowane przepisuje

  5. 404 obsługi

    1. i18n 404 strony
      Jest to zgodne z kolejnością priorytetów wymienioną powyżej dla ściśle dopasowanych treści statycznych.

    2. Niestandardowa strona 404

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

Przykład dla kolejności priorytetowej

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" (nazywany 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ą dokładnego dopasowania i wartościami jakości dla preferencji językowych Hosting będzie przeszukiwać 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. 404 obsługi

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

  • Żądana strona: index.html

  • Żądana strona: awesome-page.html

Zwróć uwagę na następujące informacje o tym wyszukiwaniu i udostępnianiu katalogu „i18n content”:

  • Katalog localized-files/ w rzeczywistości nie zawiera en_ca/ , en_ALL/ ani en/ , więc Hosting po prostu przeskoczy w dół listy priorytetów, aż znajdzie podfolder pasujący do kombinacji język-kraj żą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 wyszuka „treści i18n”, która pasuje es .

  • Podfoldery o nazwach fr/ i fr_ALL/ są równoważne z perspektywy kraju i preferencji językowych użytkownika. Jednakże, jeśli oba podfoldery istnieją, Hosting będzie obsługiwał fr_ALL/ content przed fr/ content.

Możesz zmienić, jakie treści są wyświetlane, używając plików cookie, aby zastąpić nagłówki 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ą wyświetlane.

  • Pozwól swoim użytkownikom zmieniać treści, które widzą. Możesz na przykład zaimplementować selektor języka, a następnie odpowiednio ustawić plik cookie firebase-language-override .

Aby skonfigurować zastępowanie plików cookie, ustaw pliki cookie z obiema lub jedną z tych nazw: firebase-country-override i firebase-language-override . Na przykład poniższy fragment kodu JavaScript nadpisuje kod kraju jako ca i nagłówek Accept-Language jako fr,en :

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

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

Nadpisania plików cookie nie są odzwierciedlane w dziennikach.