Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Skonfiguruj przepisywanie internacjonalizacji (i18n)

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Użyj przepisywania internacjonalizacji („przepisuje 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 standardowe treści w języku francuskim użytkownikom, którzy preferują francuski, ale dla użytkowników z Kanady , którzy preferują francuski, zamiast tego wyświetlaj treści w języku kanadyjskim.
    Przykład: strona główna z frazą w języku francuskim w porównaniu ze stroną główną z frazą w języku 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ą specyficzną 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 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ęzykowe 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, sortuje 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 przepisywania

  5. 404 obsługi

    1. i18n 404 stron
      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 zamówienia priorytetowego

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 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. 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 listę 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.