Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Настроить перезапись интернационализации (i18n)

Используйте перезапись с интернационализацией («перезапись i18n») для обслуживания различного контента в зависимости от страны или предпочтительного языка пользователя. Вот несколько примеров конфигураций, которые вы можете настроить:

  • Подавать же французский контент для всех пользователей , которые предпочитают французские (независимо от страны).
    Пример: домашняя страница с французским текстом.

  • Подавать содержание Стандартный французский для пользователей , которые предпочитают французский язык, но для канадских пользователей , которые предпочитают французский служат канадский французский язык вместо этого.
    Пример: домашняя страница со стандартной французской фразировкой по сравнению с домашней страницей с канадской французской фразировкой.

  • Подавать же содержание для всех канадских пользователей (независимо от их языка предпочтения).
    Пример: домашняя страница с языком по умолчанию для вашего сайта, но с особенностями, характерными для Канады (например, праздничная тема).

  • Предоставление контента на канадском французском языке канадским пользователям, предпочитающим французский язык.
    Пример: домашняя страница с канадско-французской формулировкой и особенностями, характерными для Канады (например, праздничная тема).

Firebase хостинг определяет страну пользователя из своего IP - адреса и языковых предпочтений пользователя из Accept-Language заголовка запроса (обычно устанавливается автоматически при помощи веб - браузер ).

Настроить перезапись i18n

Чтобы настроить i18n переписывает для хостинга сайта, вам нужно создать «содержание i18n» каталог для всех ваших локализованного контента, а затем добавить i18n атрибут к вашему firebase.json файл , чтобы указать на новый «содержание i18n» каталога.

Вот подробные шаги:

  1. В локальном каталоге приложения public папки, сделайте отдельный каталог для вашего «содержания i18n», а затем создать подкаталоги для каждого языка и страны комбинации поддерживаемой вашего сайта.

    В каждую подпапку добавьте контент, специфичный для этой комбинации, например домашние страницы с праздничной тематикой или страницы 404 для конкретных языков.

    Вот пример каталог «содержание i18n» называется 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
    

    localized-files/ каталог содержит отдельные подкаталоги для каждого языка и страны комбинации поддерживаемой вашего сайта. Шаблон именования для каждой подпапки должен соответствовать одному из следующих форматов:

    • languageCode_countryCode : Содержит конкретное содержание для пользователей , которые имеют что языковые предпочтения , и что код страны

    • languageCode : Содержит конкретное содержание для пользователей , которые имеют этот язык предпочтения, но содержание не конкретной страны; в основном эквивалентна languageCode_ALL

    Обратитесь к подразделу Страна и языковые коды для получения более подробной информации об этих кодах ниже. Вы можете использовать значение ALL (с учетом регистра) , чтобы указать любую страну (например , es_ALL/ ) или любого языка (например , ALL_ca/ ).

    Файлы в подпапках не должны иметь аналогичные файлы в public каталоге или других вложенных папках. Вы можете создавать контент, полностью соответствующий языку и / или стране.

  2. Добавьте i18n атрибут вашего firebase.json файла и укажите каталог , который содержит «содержание i18n». Продолжая наш пример:

    // firebase.json
    
    "hosting": {
    
      "public": "public",
    
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
    
      "i18n": {
        "root": "/localized-files"  // directory that contains your "i18n content"
      }
    
      ...
    }
    

    Каталог , указанный для root должен быть именем каталога , который содержит все ваши «содержание i18n» вложенные папки. Если вы разместили все ваши «содержание i18n» вложенные папки в корневом каталоге вашего public каталога, используйте / для значения root . Ведущие и замыкающие косые в root значениях не являются обязательными.

  3. Разверните свой «контент i18n» и настройте его на свой хостинг-сайт.

Вы можете проверить свои настройки с помощью печенья переопределения .

Коды стран и языков

При именовании вложенных папок «i18n content» вы должны использовать строчные буквы для кодов страны и языка. Вы можете использовать значение ALL (с учетом регистра) , чтобы указать любую страну (например , es_ALL/ ) или любого языка (например , ALL_ca/ ).

Хостинг получает код страны с IP-адреса пользователя. Коды стран две буквы ISO 3166-1 альфа-2 коды .

Коды языка получены от пользователя Accept-Language заголовка запроса (обычно устанавливается автоматически при помощи веб - браузера ). Они ISO 639-1 коды . При использовании языковых кодов помните следующее:

  • Когда хостинг поисков , для которых «содержания i18n» , чтобы служить, упорядочивает языки на основе значений качества в Accept-Language заголовка.

  • Хостинг отбрасывает любые региональные и страновые Подтеги в Accept-Language заголовок, так что код языка в «содержание i18n» Имя папки не может содержать эти Подтеги. Например, вы не можете использовать es-419 или es-US в качестве кода языка в имени подпапки, но вы можете использовать es .

    Если вы хотите обслуживать контент для определенного региона или страны, вы можете создать подпапки, содержащие контент на определенном языке и стране, который вы хотите поддерживать.

Приоритетный заказ на «контент i18n»

Если вы настроили перезапись i18n, хостинг обслуживает контент в следующем порядке приоритета:

  1. Зарезервированные пространств имен , которые начинаются с /__/* отрезка пути

  2. Настроенный переадресовывает

  3. Статический контент с точным соответствием

    1. Код языка + Код страны (например, контент из fr_ca/ )
      Порядок следует значению качества для каждого языка в запросе , в Accept-Language заголовка.

    2. Только код страны (например, контент из ALL_ca/ )

    3. Код языка только (к примеру, содержание от fr/ или es_ALL/ )
      Порядок следует значению качества для каждого языка в запросе , в Accept-Language заголовка.

    4. Статическое содержимое с точным соответствием "по умолчанию"
      Это содержание , которое находится за пределами директории «содержание i18n», как в корне public каталога.

  4. Настроенные переписывает

  5. 404 обработка

    1. i18n 404 страницы
      Это соответствует тому же порядку приоритета, который указан выше для статического содержимого с точным соответствием.

    2. Пользовательские 404 страница

    3. Страница 404 по умолчанию (предоставляется Firebase)

Пример приоритетного порядка

Продолжим наш пример сверху. Мы будем использовать тот же каталог с примерами и пример запроса.

  • Пример каталога локального проекта с каталогом «содержанием i18n» ( так называемые 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
    
  • Пример информации для запроса

    • Языковые коды: fr , en (французский, английский) , то
      Коды языка упорядочены на основе значений качества в Accept-Language заголовка.

    • Код страны: ca (Канада)

В соответствии с порядком приоритета точного совпадения и значениями качества для языковых предпочтений хостинг будет искать в каталогах запрошенную страницу в следующем порядке.

  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 обработка

Какая страница будет показана пользователю?

  • Запрошенная страница: index.html

  • Запрошенная страница: awesome-page.html

Обратите внимание на следующее об этом поиске и обслуживании каталога «i18n content»:

  • localized-files/ директория фактически не содержит en_ca/ , en_ALL/ или en/ подпапку, поэтому хостинг будет просто пропустить вниз список приоритетов , пока не найдет соответствующий подкаталог для комбинации просьбы по языку страны.

  • Даже несмотря на то, localized-files/ каталогов содержит es_ALL/ вложенную папку, например , запрос выше не включает es или es-foo код языка, так что хостинг не будет искать «содержание i18n» , который соответствует es .

  • Subfolders называют fr/ и fr_ALL/ эквивалентны с точки зрения предпочтений страны и языка пользователя. Однако, если существуют обе вложенные папки, хостинг будет служить fr_ALL/ содержание до fr/ содержание.

Вы можете изменить, какой контент обслуживается, используя файлы cookie, чтобы переопределить заголовки страны и языка.

Вот несколько способов использования переопределения файлов cookie:

  • Протестируйте функцию с различными комбинациями языка / страны, чтобы проверить, какой контент обслуживается.

  • Разрешите пользователям изменять контент, который они видят. Например, вы можете реализовать сборщик языка, а затем установить пользователь firebase-language-override кук соответствующим образом .

Чтобы настроить печенье переопределениях, набор печенья с обоих или одного из этих имен: firebase-country-override , firebase-language-override firebase-country-override и firebase-language-override . Например, следующий код JavaScript сниппет переопределяет код страны , чтобы быть ca и Accept-Language заголовок , чтобы быть fr,en :

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

Переопределения языковых файлов cookie должны представлять собой список кодов языков, разделенных запятыми, в порядке предпочтения, без вложенных тегов и значений качества.

Переопределения файлов cookie не отражаются в журналах.