Улучшить эту документациюМеждународная локализация (i18n) и локализация (l10n)
Международная локализация (i18n) — это процесс разработки продуктов таким образом, чтобы их легко можно было локализовать для различных языков и культур. Локализация (l10n) — это процесс адаптации приложений и текста для обеспечения их удобства использования в определённом культурном или языковом регионе. Для разработчиков приложений международная локализация приложения означает абстрагирование всех строк и других параметров, зависящих от региональных настроек (таких как форматы даты или валюты), из приложения. Локализация приложения означает предоставление переводов и локальных форматов для абстрагированных элементов.
Как Angular поддерживает i18n/l10n?
Angular поддерживает i18n/l10n для фильтров даты, чисел и валюты.
Кроме того, Angular поддерживает локализацию множественного числа с помощью директивы ngPluralize.
Все локализуемые компоненты Angular зависят от наборов правил, специфичных для языка, управляемых сервисом $locale.
Несколько примеров использования Angular-фильтров с различными наборами правил региональных настроек можно найти в каталоге i18n/e2e исходного кода Angular.
Что такое идентификатор региональных настроек?
Региональные настройки — это определённый географический, политический или культурный регион. Наиболее распространённый идентификатор региональных настроек состоит из двух частей: кода языка и кода страны. Например, en-US, en-AU, и zh-CN — все допустимые идентификаторы региональных настроек, содержащие как коды языка, так и коды стран. Поскольку указание кода страны в идентификаторе региональных настроек является необязательным, идентификаторы региональных настроек, такие как en, zh, и sk также являются допустимыми. Более подробную информацию об использовании идентификаторов региональных настроек см. на сайте ICU.
Поддерживаемые региональные настройки в Angular
Angular разделяет наборы правил для форматов дат и чисел в разные файлы, по одному файлу на региональную настройку. Список текущих поддерживаемых региональных настроек можно найти здесь.
Предоставление правил региональных настроек Angular
Существует два подхода к предоставлению правил региональных настроек Angular:
1. Предварительно собранные наборы правил
Вы можете предварительно собрать необходимый файл региональных настроек с Angular, конкатенировав содержимое файла региональных настроек к концу файла angular.js или angular.min.js.
Например, в системах *nix, чтобы создать файл angular.js, содержащий правила локализации для немецкой локали, можно сделать следующее:
cat angular.js i18n/angular-locale_de-de.js > angular_de-de.js
Когда приложение, содержащее angular_de-de.js скрипт вместо универсального скрипта angular.js, запускается, Angular автоматически настраивается с правилами локализации для немецкой локали.
2. Включение скрипта региональных настроек в index.html
Вы также можете включить файл js региональных настроек в страницу index.html. Например, если одному клиенту требуется немецкая локализация, вы будете обслуживать index_de-de.html, который будет выглядеть примерно так:
<html ng-app> <head> …. <script src="angular.js"></script> <script src="i18n/angular-locale_de-de.js"></script> …. </head> </html>
Сравнение двух подходов
Оба описанных выше подхода требуют подготовки разных index.html страниц или файлов JavaScript для каждой локали, которая может использоваться в приложении. Вам также необходимо настроить сервер на обслуживание правильного файла, соответствующего требуемой локали.
Второй подход (включение файла JavaScript региональных настроек в index.html ) может быть медленнее, поскольку необходимо загрузить дополнительный скрипт.
Ограничения
Несмотря на то, что Angular упрощает i18n, существует несколько моментов, которые необходимо учитывать при разработке приложения.
Символ валюты
Фильтр валюты Angular позволяет использовать символ валюты по умолчанию из сервиса региональных настроек или можно предоставить фильтру пользовательский символ валюты.
Предположим, вы пишете приложение для банка и хотите отобразить баланс счета в 1000 долларов. Вы пишете следующую привязку с использованием фильтра валюты:
{{ 1000 | currency }}
Если ваше приложение в настоящее время в en-US локали, браузер отобразит $1000.00. Если кто-то в японской локали (ja ) просмотрит ваше приложение, их браузер отобразит баланс ¥1000.00 вместо этого. Это проблематично, потому что 1000 долларов не равно 1000 йен.
В этом случае вам нужно переопределить символ валюты по умолчанию, предоставив фильтру валюты currency символ валюты в качестве параметра.
Если мы изменим вышеизложенное на {{ 1000 | currency:"USD$"}}, Angular всегда будет отображать баланс USD$1000 независимо от региональных настроек.
Длина перевода
Длины переведённых строк/форматов дат могут сильно отличаться. Например, June 3, 1977 будет переведено на испанский как 3 de junio de 1977.
При международной локализации приложения необходимо проводить тщательное тестирование, чтобы убедиться, что компоненты пользовательского интерфейса ведут себя ожидаемым образом, даже когда их содержимое значительно различается по размеру.
Часовые пояса
Фильтр дат Angular использует настройки часового пояса браузера. Одно и то же приложение будет отображать разную временную информацию в зависимости от настроек часового пояса компьютера, на котором приложение запущено. Ни JavaScript, ни Angular в настоящее время не поддерживают отображение даты с часовым поясом, заданным разработчиком.
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.2.32/docs/guide/i18n