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

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

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

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

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

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

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

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

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

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

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

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

    Вот пример каталога «i18n content» под названием 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 content». Если вы разместили все подпапки «i18n content» в корне public каталога, используйте / для значения root . Начальная и конечная косая черта в root значении не является обязательной.

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

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

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

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

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

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

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

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

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

Порядок приоритета для «контента i18n»

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

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

  2. Настроенные перенаправления

  3. Точное соответствие статического контента

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

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

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

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

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

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

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

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

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

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

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

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

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

  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/ , поэтому Hosting просто пропустит список приоритетов до тех пор, пока не найдет подпапку, соответствующую комбинации языка и страны запроса.

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

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

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

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

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

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

Чтобы настроить переопределение файлов cookie, установите файлы cookie с обоими или одним из этих имен: 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 не отражаются в журналах.

,

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

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

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

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

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

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

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

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

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

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

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

    Вот пример каталога «i18n content» под названием 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 content». Если вы разместили все подпапки «i18n content» в корне public каталога, используйте / для значения root . Начальная и конечная косая черта в root значении не является обязательной.

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

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

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

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

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

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

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

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

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

Порядок приоритета для «контента i18n»

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

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

  2. Настроенные перенаправления

  3. Точное соответствие статического контента

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

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

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

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

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

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

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

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

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

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

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

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

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

  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/ , поэтому Hosting просто пропустит список приоритетов до тех пор, пока не найдет подпапку, соответствующую комбинации языка и страны запроса.

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

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

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

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

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

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

Чтобы настроить переопределение файлов cookie, установите файлы cookie с обоими или одним из этих имен: 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 не отражаются в журналах.

,

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

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

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

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

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

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

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

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

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

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

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

    Вот пример каталога «i18n content» под названием 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 content». Если вы разместили все подпапки «i18n content» в корне public каталога, используйте / для значения root . Начальная и конечная косая черта в root значении не является обязательной.

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

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

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

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

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

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

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

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

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

Порядок приоритета для «контента i18n»

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

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

  2. Настроенные перенаправления

  3. Точное соответствие статического контента

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

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

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

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

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

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

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

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

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

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

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

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

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

  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/ , поэтому Hosting просто пропустит список приоритетов до тех пор, пока не найдет подпапку, соответствующую комбинации языка и страны запроса.

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

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

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

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

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

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

Чтобы настроить переопределение файлов cookie, установите файлы cookie с обоими или одним из этих имен: 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 не отражаются в журналах.

,

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

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

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

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

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

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

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

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

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

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

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

    Вот пример каталога «i18n content» под названием 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 content». Если вы поместили все свои подпапки «I18N Content» в корне своего public каталога, используйте / для значения root . Ведущие и следственные черты в root значении являются необязательными.

  3. Разверните свой «I18N Content» и CONCIN на ваш сайт Hosting .

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

Страновые и языковые коды

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

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

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

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

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

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

Приоритетный заказ для "I18N Content"

Если вы настроили переписывание I18N, Hosting обслуживает контент на основе следующего приоритетного порядка:

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

  2. Настроенные перенаправления

  3. Точное статическое содержание

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

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

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

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

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

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

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

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

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

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

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

  • Пример локального каталога проектов с каталогом «I18N Content» (называемые 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 (Канада)

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

  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/ подпапки, поэтому Hosting просто пропустит список приоритетов, пока не найдет подпалку для комбинации языковой страны запроса.

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

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

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

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

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

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

Чтобы настроить переопределения cookie, установите файлы cookie с обоими или любыми из этих названий: 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 должно быть отдельным списком языковых кодов в порядке предпочтения, без подтэгов или значений качества.

Переопределения печенья не отражаются в журналах.