Настроить перезапись интернационализации (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 не отражаются в журналах.