Перейти к основному содержимому

5 записей с тегом "Intl"

Посмотреть все теги

`Intl.DisplayNames`

· 4 мин. чтения
Shu-yu Guo ([@_shu](https://twitter.com/_shu)) и Frank Yung-Fong Tang

Веб-приложения, ориентированные на глобальную аудиторию, должны отображать названия языков, регионов, скриптов и валют на различных языках. Переводы этих названий требуют наличия данных, которые доступны в Unicode CLDR. Включение этих данных в приложение требует затрат времени разработчика. Пользователи, скорее всего, предпочтут согласованные переводы названий языков и регионов, поддержание актуальности данных в связи с геополитическими изменениями мира требует постоянного обновления.

`Intl.NumberFormat`

· 4 мин. чтения
Маттиас Байненс ([@mathias](https://twitter.com/mathias)) и Шейн Ф. Карр

Вы, возможно, уже знакомы с API Intl.NumberFormat, так как его поддержка существует в современных средах уже некоторое время.

В своей самой базовой форме Intl.NumberFormat позволяет создавать экземпляр форматтера, поддерживающий форматирование чисел с учетом локали. Так же, как и другие API Intl.*Format, экземпляр форматтера поддерживает методы format и formatToParts:

`Intl.ListFormat`

· 3 мин. чтения
Матиас Биненс ([@mathias](https://twitter.com/mathias)) и Фрэнк Юнг-Фонг Танг

Современные веб-приложения часто используют списки, состоящие из динамических данных. Например, приложение для просмотра фотографий может отображать что-то вроде:

Эта фотография включает Аду, Эдит и Грейс.

Текстовая игра может иметь другой вид списка:

Выберите свою суперсилу: невидимость, психокинез или эмпатию.

Так как у каждого языка есть свои собственные правила форматирования списков и слова, реализация локализованного форматирования списка является нетривиальной задачей. Это требует не только списка всех слов (например, «и» или «или» в приведенных выше примерах) для каждого поддерживаемого языка — к тому же нужно описать точные правила форматирования для всех этих языков! Unicode CLDR предоставляет эти данные, но чтобы использовать их в JavaScript, их нужно интегрировать и включить в библиотеку. Это, к сожалению, увеличивает размер пакета для таких библиотек, что негативно сказывается на времени загрузки, стоимости обработки/компиляции и потреблении памяти.

`Intl.RelativeTimeFormat`

· 4 мин. чтения
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Современные веб-приложения часто используют выражения вроде «вчера», «42 секунды назад» или «через 3 месяца» вместо полных дат и временных меток. Такие значения относительного времени стали настолько распространёнными, что несколько популярных библиотек реализовали утилитарные функции для их локализованного форматирования. (Примеры включают Moment.js, Globalize и date-fns.)

`Intl.PluralRules`

· 4 мин. чтения
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Иñtërnâtiônàlizætiøn — это сложно. Работа с множественными числами — это одна из многих задач, которая может показаться простой, пока вы не осознаете, что каждый язык имеет свои правила множественного числа.

Для английского языка существует лишь два возможных результата множественного числа. Давайте возьмем слово «cat» в качестве примера:

  • 1 cat, т.е. форма 'one', известная как единственное число в английском
  • 2 cats, но также 42 cats, 0.5 cats и т.д., т.е. форма 'other' (единственная другая), известная как множественное число в английском.

Совершенно новый Intl.PluralRules API сообщает, какая форма применяется в выбранном вами языке на основе заданного числа.

const pr = new Intl.PluralRules('en-US');
pr.select(0); // 'other' (например, '0 cats')
pr.select(0.5); // 'other' (например, '0.5 cats')
pr.select(1); // 'one' (например, '1 cat')
pr.select(1.5); // 'other' (например, '1.5 cats')
pr.select(2); // 'other' (например, '2 cats')