Skip to content

Commit 6f61417

Browse files
authored
[ru] update Web/JavaScript/Reference/Global_Objects/Number/toLocaleString translation (mdn#18336)
[ru] update 'Web/JavaScript/Reference/Global_Objects/Number/toLocaleString' translation
1 parent a89c9dd commit 6f61417

File tree

1 file changed

+71
-40
lines changed
  • files/ru/web/javascript/reference/global_objects/number/tolocalestring

1 file changed

+71
-40
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,116 @@
11
---
22
title: Number.prototype.toLocaleString()
33
slug: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
4+
l10n:
5+
sourceCommit: b675e86af71a5250b8d65d9b3a86ca9319332af1
46
---
57

68
{{JSRef}}
79

8-
## Сводка
10+
Метод **`toLocaleString()`** значений {{jsxref("Number")}} возвращает строку с языкозависимым представлением этого числа. В реализациях с поддержкой [`Intl.NumberFormat` API](/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) этот метод просто вызывает `Intl.NumberFormat`.
911

10-
Метод **`toLocaleString()`** возвращает строку с языкозависимым представлением числа.
12+
При каждом вызове `toLocaleString` происходит поиск по большой базе локализованных строк, что может быть неэффективным. Когда метод вызывается много раз с одинаковыми параметрами, лучше создать объект {{jsxref("Intl.NumberFormat")}} и использовать его метод {{jsxref("Intl/NumberFormat/format", "format()")}}, потому что объект `NumberFormat` запоминает переданные ему параметры и может кешировать данные, чтобы последующие вызовы `format` могли выполнять поиск с более определённым контекстом.
1113

12-
Новые аргументы `locales` и `options` позволяют приложениям определять язык, чьё поведение и соглашения по форматированию которого оно хочет использовать. В старых реализациях, игнорирующих аргументы `locales` и `options`, используемая локаль и форма возвращённой строки целиком зависит от реализации.
14+
{{EmbedInteractiveExample("pages/js/number-tolocalestring.html")}}
1315

1416
## Синтаксис
1517

16-
```
17-
numObj.toLocaleString([locales[, options]])
18+
```js-nolint
19+
toLocaleString()
20+
toLocaleString(locales)
21+
toLocaleString(locales, options)
1822
```
1923

2024
### Параметры
2125

22-
Проверьте раздел [Совместимость с браузерами](#Browser_compatibility), чтобы увидеть, какие браузеры поддерживают аргументы `locales` и `options`, и [Пример: проверка поддержки аргументов `locales` и `options`](#Example:_Checking_for_support_for_locales_and_options_arguments) для определения этой возможности.
26+
Параметры `locales` и `options` изменяют поведение функции и позволяют приложениям определять язык, правила форматирования которого, следует использовать.
27+
28+
В реализациях, поддерживающих [`Intl.NumberFormat` API](/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat), эти параметры соответствуют параметрам конструктора [`Intl.NumberFormat()`](/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat). Реализации без поддержки `Intl.NumberFormat` должны игнорировать оба параметра, используя локаль и формат возвращаемой строки определяемые самой реализацией.
29+
30+
- `locales` {{optional_inline}}
31+
32+
- : Строка с языковым тегом BCP 47 или массив таких строк. Соответствует параметру [`locales`](/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#locales) конструктора `Intl.NumberFormat().
33+
34+
В реализациях без поддержки `Intl.NumberFormat` этот параметр игнорируется и обычно используется локаль устройства.
35+
36+
- `options` {{optional_inline}}
37+
38+
- : Объект определяющий выходной формат. Соответствует параметру [`options`](/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options) конструктора `Intl.NumberFormat()`.
39+
40+
В реализациях без поддержки `Intl.NumberFormat` этот параметр игнорируется.
2341

24-
> **Примечание:** API интернационализации ECMAScript, реализованное в Firefox 29, добавляет аргумент `locales` к методу `Number.toLocaleString()`. Если этот аргумент равен {{jsxref("Global_Objects/undefined", "undefined")}}, этот метод возвращает локализованные цифры на языке, определяемом ОС, в то время, как предыдущие версии Firefox возвращали цифры на английском языке. Это изменение было помечено, как регрессия, затрагивающая обратную совместимость, которая скоро может быть исправлена. ([Firefox bug 999003](https://bugzil.la/999003))
42+
Смотрите описание [конструктора `Intl.NumberFormat()`](/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat) для подробностей использования этих параметров.
2543

26-
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat', 'Parameters')}}
44+
### Возвращаемое значение
45+
46+
Строка, представляющая указанное число в соответствии с языковыми требованиями.
47+
48+
В реализациях с поддержкой `Intl.NumberFormat` результат будет эквивалентным `new Intl.NumberFormat(locales, options).format(number)`.
49+
50+
> **Примечание:** В большинстве случаев форматирование, возвращаемое `toLocaleString()`, единообразно. Однако результат может быть разным в зависимости от времени, языка и реализации — это допускается спецификацией. Не следует сравнивать результат `toLocaleString()` со статическими значениями.
2751
2852
## Примеры
2953

30-
### Пример: использование `toLocaleString`
54+
### Использование `toLocaleString()`
3155

32-
При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.
56+
При использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и настройками по умолчанию.
3357

3458
```js
3559
var number = 3500;
3660

3761
console.log(number.toLocaleString()); // Отобразит '3,500' в локали U.S. English
3862
```
3963

40-
### Пример: проверка поддержки аргументов `locales` и `options`
64+
### Проверка поддержки параметров `locales` и `options`
4165

42-
Аргументы `locales` и `options` поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:
66+
Параметры `locales` и `options` могут поддерживаться не во всех реализациях. В реализациях без поддержки интернационализации `toLocaleString()` всегда использует системную локаль, что может оказаться не тем, что вам нужно. Поскольку любая реализация, поддерживающая параметры `locales` и `options`, должна поддерживать {{jsxref("Intl")}} API, проверить наличие последней можно таким способом:
4367

4468
```js
4569
function toLocaleStringSupportsLocales() {
46-
var number = 0;
47-
try {
48-
number.toLocaleString("i");
49-
} catch (e) {
50-
return e.name === "RangeError";
51-
}
52-
return false;
70+
return (
71+
typeof Intl === "object" &&
72+
!!Intl &&
73+
typeof Intl.DateTimeFormat === "function"
74+
);
5375
}
5476
```
5577

56-
### Пример: использование аргумента `locales`
78+
### Использование параметра `locales`
5779

58-
Этот пример показывает некоторые локализованные числовые форматы. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент `locales`:
80+
Этот пример показывает некоторые локализованные форматы чисел. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) используя параметр `locales`:
5981

6082
```js
6183
var number = 123456.789;
6284

63-
// В Германии в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - точка
85+
// В Германии в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов точка
6486
console.log(number.toLocaleString("de-DE"));
65-
// 123.456,789
87+
// 123.456,789
6688

67-
// В России в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - пробел
89+
// В России в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов пробел
6890
console.log(number.toLocaleString("ru-RU"));
69-
// 123 456,789
91+
// 123 456,789
7092

71-
// В большинстве арабоговорящих стран используют настоящие арабские цифры
93+
// В большинстве арабоязычных стран используют настоящие арабские цифры
7294
console.log(number.toLocaleString("ar-EG"));
73-
// ١٢٣٤٥٦٫٧٨٩
95+
// ١٢٣٤٥٦٫٧٨٩
7496

7597
// В Индии используют разделители для тысяч/лакх/крор
7698
console.log(number.toLocaleString("en-IN"));
77-
// 1,23,456.789
99+
// 1,23,456.789
78100

79101
// Ключ расширения nu запрашивает систему нумерации, например, китайскую десятичную
80102
console.log(number.toLocaleString("zh-Hans-CN-u-nu-hanidec"));
81-
// 一二三,四五六.七八九
103+
// 一二三,四五六.七八九
82104

83105
// Если запрашиваемый язык может не поддерживаться, например
84106
// балийский, откатываемся на запасной язык, в данном случае индонезийский
85107
console.log(number.toLocaleString(["ban", "id"]));
86-
// 123.456,789
108+
// 123.456,789
87109
```
88110

89-
### Пример: использование аргумента `options`
111+
### Использование параметра `options`
90112

91-
Результат, предоставляемый методом `toLocaleString()`, может быть настроен с помощью аргумента `options`:
113+
Результат, предоставляемый методом `toLocaleString()`, может быть настроен с помощью параметра `options`:
92114

93115
```js
94116
var number = 123456.789;
@@ -97,27 +119,35 @@ var number = 123456.789;
97119
console.log(
98120
number.toLocaleString("de-DE", { style: "currency", currency: "EUR" }),
99121
);
100-
// 123.456,79 €
122+
// 123.456,79 €
101123

102124
console.log(
103125
number.toLocaleString("ru-RU", { style: "currency", currency: "RUB" }),
104126
);
105-
// 123 456,79 ₽
127+
// 123 456,79 ₽
106128

107129
// Японская йена не использует младшие единицы
108130
console.log(
109131
number.toLocaleString("ja-JP", { style: "currency", currency: "JPY" }),
110132
);
111-
// ¥123,457
133+
// ¥123,457
112134

113135
// Ограничиваем до трёх значащих цифр
114136
console.log(number.toLocaleString("en-IN", { maximumSignificantDigits: 3 }));
115-
// → 1,23,000
116-
```
137+
// 1,23,000
117138

118-
## Производительность
119-
120-
При форматировании большого количества чисел лучшим вариантом будет создание объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}} и использование функции, предоставляемой его свойством {{jsxref("NumberFormat.format")}}.
139+
// Используем язык системы по умолчанию дял форматирования чисел
140+
const num = 30000.65;
141+
console.log(
142+
num.toLocaleString(undefined, {
143+
minimumFractionDigits: 2,
144+
maximumFractionDigits: 2,
145+
}),
146+
);
147+
// "30,000.65" если язык по умолчанию английский или
148+
// "30.000,65" если язык по умолчанию немецкий или
149+
// "30 000,65" если язык по умолчанию французский
150+
```
121151

122152
## Спецификации
123153

@@ -129,4 +159,5 @@ console.log(number.toLocaleString("en-IN", { maximumSignificantDigits: 3 }));
129159

130160
## Смотрите также
131161

162+
- {{jsxref("Intl.NumberFormat")}}
132163
- {{jsxref("Number.prototype.toString()")}}

0 commit comments

Comments
 (0)