1. I18N и L10N в AngularJs
1. Что такое i18n и l10n?
Интернационализация, называемая I18N, является стандартом для разработки продукта таким образом, чтобы они могли просто локализовать язык и культуру продукта. Локализация, называемая L10N, является стандартом, который позволяет приложениям и текстам адаптироваться к специальным культурным или языковым рынкам. Для разработчиков приложений интернационализация программы означает, что все строки и другие области должны быть извлечены из программы, где они являются более особенными (например, форматы даты и валюты). Локализация программы означает обеспечение перевода и локализации формата блоков, извлеченных из I18N.
2. Какие уровни I18N и L10N в настоящее время поддерживаются Angular?
В настоящее время Angular обеспечивает поддержку I18N и L10N для фильтров DateTime, чисел и валюты.
Кроме того, угловая поддержка диверсифицированной локализации посредством Ngpluralize Directive (http://docs.angularjs.org/api/ng.directive:ngpluralize).
Все локализуемые элементы управления полагаются на набор правил функций локали, управляемый через услугу $.
Чтобы читатели видели фактические примеры, чиновник подготовил некоторые примеры веб -страницы, чтобы показать, как использовать угловые фильтры для сбора переменных через правила региона. Мы можем найти соответствующие примеры в GitHub (https://github.com/angular/angular.js/tree/master/i18n/e2e) или в i18n/e2e в пакете угловой разработки.
3. Что такое региональный идентификатор?
Локаль является конкретным географическим, политическим и культурным регионом. Наиболее часто используемый идентификатор локали состоит из двух частей: языковой код и кода страны. Например, EN-US, EN-AU и ZH-CN-все действительные идентификаторы локали, все содержащие языковые коды и коды страны. Поскольку страна, кодируемая в идентификаторе локали, является необязательным, идентификаторы локалов, такие как EN, ZH и SK, все действительны. Проверьте сайт ICU (http://userguide.icu-project.org/locale), где есть больше информации об идентификаторе локали.
4. Локаль с угловой поддержкой
Angular отделяет набор правил для чисел, форматов даты и времени в разных файлах, каждый файл имеет уникальную область. Мы можем найти в настоящее время поддерживаемый список локалов здесь (https://github.com/angular/angular.js/tree/master/i18n/locale)
2. Настройте правила локализации в угловой
Есть два способа настройки локали в угловой:
1. Наборы правил, предварительно связанных
Мы можем реализовать ожидаемый файл локализации, подключив файл для специфического для локали к Angular.js или Angular.min.js.
Например, в *nix мы можем создать файл Angular.js, содержащий немецкие правила региональной локализации, посредством следующей команды:
Cat angular.js i18n/angular-locale_de-ge.js> angular_de-ge.js
Когда приложение использует сценарий angular_de-ge.js вместо сценария общего Angular.js, Angular начинает автоматически предварительно сконфигурированные (предварительно конфигурированные) правила локализации в Германии.
2. Включите сценарий Locale JS в index.html
Мы также можем включить файлы JS в указанную область в страницу. Например, если клиенту требуется немецкий региональный файл, мы можем предоставить страницу, подобную следующему:
<html ng-app> <head> ... <script src = "angular.js"> </script> <script src = "i18n/angular-locale_de-ge.js"> </script> ... </head> ... </html>
Оба вышеуказанных метода требуют, чтобы мы предоставляли различные страницы индекса. HTML или файлы JS в каждом регионе для локализации. Нам также необходимо настроить наш сервер, чтобы предоставить правильные, желаемые файлы локали.
Тем не менее, второй метод (включая файлы локали в страницу) будет медленнее, поскольку для загрузки требуется еще один скрипт. (-_- !!!).
3. TRAP ("GOTCHAS")
1. Ловушка символа валюты
Фильтр валюты Angular позволяет нам использовать символ валюты по умолчанию из службы Locale, и мы также можем предоставить пользовательские символы валюты. Если наше приложение используется только в одной области, то мы можем положиться на (установить) символ валюты по умолчанию. Однако, если мы ожидаем, что пользователи в других регионах также будут использовать наше приложение, мы должны предоставить наши пользовательские символы валюты, чтобы убедиться, что пользователь понимает фактическое значение.
Например, если мы хотим связать фильтр валюты, чтобы отобразить баланс учетной записи 1000 юаней: {{1000 | валюта}}, и наше приложение в настоящее время использует En-US Locale, затем будет отображаться «$ 1000,00». Однако, если пользователи в некоторых других регионах (такие как материковый Китай) посещают наше приложение, в браузере пользователя будет указано настройка региона в «материковое Китай», и баланс будет отображаться как «1000,00» (очень печальная ошибка, обменный курс ...).
В этом примере, когда нам нужно установить фильтр, нам необходимо переписать символ валюты по умолчанию, предоставляя символы валюты в качестве параметров для валютного фильтра (http://docs.angularjs.org/api/ng.filter:currency), параметр, такой как: usd $. Таким образом, Angular будет игнорировать любые изменения в локале и продолжать показывать баланс как «1000,00 долларов США».
2. Ловушка длины перевода
Помните, что при переводе строк и форматов событий длина может сильно различаться. Например, «3 июня 1977 года» становится «3 де Юнио де 1977», когда переводится на испанский. Конечно, может быть более экстремальные ситуации. Поэтому, когда мы интернационализируем приложение, нам необходимо установить соответствующие правила CSS и провести комплексное тестирование, чтобы убедиться, что компоненты пользовательского интерфейса не разрушаются (варианты).
3. Часовой пояс
Помните, что фильтр DateTime от Angular использует часовой пояс, установленную браузером. Следовательно, в одном и том же приложении будет отображаться различная информация о времени в соответствии с настройками часового пояса компьютера, работающего в приложении, а не с часовым поясом, указанным разработчиком в JavaScript или Angular.