# Интернационализация, встроенные объекты Intl
Общая проблема строк, дат, чисел в JavaScript -- они совершенно не в курсе языков и стран, где находится посетитель.
В частности:
Свойство |
Описание |
Возможные значения |
По умолчанию |
`localeMatcher` |
Алгоритм подбора локали |
`lookup`,`best fit`
|
`best fit`
|
`formatMatcher` |
Алгоритм подбора формата
|
`basic`, `best fit` |
`best fit` |
`hour12` |
Включать ли время в 12-часовом формате |
`true` -- 12-часовой формат, `false` -- 24-часовой |
|
`timeZone` |
Временная зона |
Временная зона, например `Europe/Moscow` |
`UTC` |
`weekday` |
День недели |
`narrow`, `short`, `long` |
|
`era` |
Эра |
`narrow`, `short`, `long` |
|
`year` |
Год |
`2-digit`, `numeric` |
`undefined` или `numeric` |
`month` |
Месяц |
`2-digit`, `numeric`, `narrow`, `short`, `long` |
`undefined` или `numeric` |
`day` |
День |
`2-digit`, `numeric` |
`undefined` или `numeric` |
`hour` |
Час |
`2-digit`, `numeric` |
|
`minute` |
Минуты |
`2-digit`, `numeric` |
|
`second`
|
Секунды |
`2-digit`, `numeric` |
|
`timeZoneName` |
Название таймзоны (нет в IE11) |
`short`, `long` |
|
**Все локали обязаны поддерживать следующие наборы настроек:**
Свойство |
Описание |
Возможные значения |
По умолчанию |
`localeMatcher` |
Алгоритм подбора локали |
`lookup`, `best fit` |
`best fit` |
`style` |
Стиль форматирования |
`decimal`, `percent`, `currency` |
`decimal` |
`currency` |
Алфавитный код валюты |
См. [Список кодов валюты](http://www.currency-iso.org/en/home/tables/table-a1.html), например `USD` |
|
`currencyDisplay` |
Показывать валюту в виде кода, локализованного символа или локализованного названия
|
`code`, `symbol`, `name` |
`symbol` |
`useGrouping` |
Разделять ли цифры на группы |
`true`, `false` |
`true` |
`minimumIntegerDigits` |
Минимальное количество цифр целой части |
от `1` до `21`
|
`21` |
`minimumFractionDigits` |
Минимальное количество десятичных цифр
|
от `0` до `20` |
для чисел и процентов `0`, для валюты зависит от кода. |
`maximumFractionDigits` |
Максимальное количество десятичных цифр |
от `minimumFractionDigits` до `20`. |
для чисел `max(minimumFractionDigits, 3)`, для процентов `0`, для валюты зависит от кода. |
`minimumSignificantDigits` |
Минимальное количество значимых цифр |
от `1` до `21` |
`1` |
`maximumSignificantDigits` |
Максимальное количество значимых цифр |
от `minimumSignificantDigits` до `21` |
`minimumSignificantDigits` |
Пример без опций:
```js
//+ run
var formatter = new Intl.NumberFormat("ru");
alert(formatter.format(1234567890.123)); // 1 234 567 890,123
```
С ограничением значимых цифр (важны только первые 3):
```js
//+ run
var formatter = new Intl.NumberFormat("ru", {
maximumSignificantDigits: 3
});
alert(formatter.format(1234567890.123)); // 1 230 000 000
```
C опциями для валюты:
```js
var formatter = new Intl.NumberFormat("ru", {
style: "currency",
currency: "GBP"
});
alert( formatter.format(1234.5)); // 1 234,5 £
```
С двумя цифрами после запятой:
```js
var formatter = new Intl.NumberFormat("ru", {
style: "currency",
currency: "GBP",
minimumFractionDigits: 2
});
alert( formatter.format(1234.5)); // 1 234,50 £
```
## Методы в Date, String, Number
Методы форматирования также поддерживаются в обычных строках, датах, числах: