aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/number/tolocalestring/index.html
blob: a65659d7de070fc14c6ef2c198b583a65d82c956 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
---
title: Number.prototype.toLocaleString()
slug: Web/JavaScript/Reference/Global_Objects/Число/toLocaleString
tags:
  - JavaScript
  - Number
  - Інтернаціоналізація
  - метод
  - прототип
translation_of: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
---
<div>{{JSRef}}</div>

<p>Метод <strong><code>toLocaleString()</code></strong> повертає рядок, що відображає число у відповідності до налаштувань мови.</p>

<div>{{EmbedInteractiveExample("pages/js/number-tolocalestring.html")}}</div>



<h2 id="Синтаксис">Синтаксис</h2>

<pre class="syntaxbox notranslate"><code><em>numObj</em>.toLocaleString(</code><code>[locales [, options]])</code></pre>

<h3 id="Параметри">Параметри</h3>

<p>Аргументи <code>locales</code> та <code>options</code> налаштовують поведінку функції та дозволяють застосункам вказувати мову, чиї правила форматування мають застосовуватись. У тих реалізаціях, які ігнорують аргументи <code>locales</code> та <code>options</code>, локальні налаштування та форма поверненого рядка повністю залежать від реалізації.</p>

<div>Дивіться <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/NumberFormat">конструктор <code>Intl.NumberFormat()</code></a>, щоб дізнатись подробиці щодо цих параметрів та їхнього використання.</div>

<h3 id="Значення_що_повертається">Значення, що повертається</h3>

<p>Рядок, що відображає число у відповідності до налаштувань мови.</p>

<h2 id="Швидкодія">Швидкодія</h2>

<p>При форматуванні великої кількості чисел краще створити об'єкт {{jsxref("NumberFormat")}} та використовувати функцію, надану його властивістю {{jsxref("NumberFormat.format")}}.</p>

<h2 id="Приклади">Приклади</h2>

<h3 id="Використання_toLocaleString">Використання <code>toLocaleString</code></h3>

<p>При загальному використанні, без зазначення локалі, повертається рядок у мовному форматі, що стоїть за замовчуванням та з початковими параметрами.</p>

<pre class="brush: js notranslate">var number = 3500;

console.log(number.toLocaleString()); // Відображає "3,500" у форматі U.S. English
</pre>

<h3 id="Перевірка_підтримки_аргументів_locales_та_options">Перевірка підтримки аргументів <code>locales</code> та <code>options</code></h3>

<p>Аргументи <code>locales</code> та <code>options</code> ще не підтримуються в усіх переглядачах. Для перевірки їхньої підтримки у ES5.1 та новіших реалізаціях можна скористатись вимогою, згідно якої недозволені мовні позначення відхиляються з винятком {{jsxref("Global_Objects/RangeError", "RangeError")}}:</p>

<pre class="brush: js notranslate">function toLocaleStringSupportsLocales() {
  var number = 0;
  try {
    number.toLocaleString('i');
  } catch (e) {
    return e.name === 'RangeError';
  }
  return false;
}
</pre>

<p>До ES5.1, реалізації не були зобов'язані викидати виняток з помилкою діапазону, якщо <code>toLocaleString</code> викликався з аргументами.</p>

<p>Перевірка, яка працює в усіх хостах, в тому числі тих, що підтримують ECMA-262 до версії 5.1, полягає в безпосередньому тестуванні функцій, визначених у ECMA-402 як такі, що зобов'язані підтримувати регіональні налаштування для <code>Number.prototype.toLocaleString</code>:</p>

<pre class="brush: js notranslate">function toLocaleStringSupportsOptions() {
  return !!(typeof Intl == 'object' &amp;&amp; Intl &amp;&amp; typeof Intl.NumberFormat == 'function');
}
</pre>

<p>Цей код перевіряє наявність глобального об'єкта <code>Intl</code>, перевіряє, що він не дорівнює <code>null</code> та що він має властивість <code>NumberFormat</code>, яка є функцією.</p>

<h3 id="Використання_locales">Використання <code>locales</code></h3>

<p>Цей приклад демонструє деякі варіації локалізованих форматів чисел. Щоб отримати формат мови, задіяної в інтерфейсі вашого застосутку, переконайтесь, що вказали цю мову (та, можливо, кілька запасних мов) за допомогою аргументу <code>locales</code>:</p>

<pre class="brush: js notranslate">var number = 123456.789;

// В німецькій десятковим роздільником є кома, а крапка розділяє тисячі
console.log(number.toLocaleString('de-DE'));
// → 123.456,789

// Арабська у більшості арабськомовних країн використовує <a href="https://uk.wikipedia.org/wiki/%D0%86%D0%BD%D0%B4%D0%BE-%D0%B0%D1%80%D0%B0%D0%B1%D1%81%D1%8C%D0%BA%D0%B0_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F">Індо-арабські</a> цифри
console.log(number.toLocaleString('ar-EG'));
// → ١٢٣٤٥٦٫٧٨٩

// Індія використовує роздільники тисячі/лакх/крор
console.log(number.toLocaleString('en-IN'));
// → 1,23,456.789

// ключ розширення nu налаштовує систему нумерації, наприклад, китайську десяткову
console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
// → 一二三,四五六.七八九

// при запиті мови, яка, можливо, не підтримується, наприклад,
// балійської, додайте запасні мови, в даному випадку це індонезійська
console.log(number.toLocaleString(['ban', 'id']));
// → 123.456,789</pre>

<h3 id="Використання_options">Використання <code>options</code></h3>

<p>Результат методу <code>toLocaleString</code> можна налаштувати за допомогою аргументу <code>options</code>:</p>

<pre class="brush: js notranslate">var number = 123456.789;

// налаштування формату валюти
console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
// → 123.456,79 €

// японська єна не використовує дробові розряди
console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
// → ¥123,457

// обмежити трьома значущими цифрами
console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
// → 1,23,000

// Використовувати мову системи з параметрами для форматування чисел
var num = 30000.65;
console.log(num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}));
// → "30,000.65" де мова системи англійська, або
// → "30.000,65" де мова системи німецька, або
// → "30 000,65" де мова системи французька
</pre>

<h2 id="Специфікації">Специфікації</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Специфікація</th>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}</td>
  </tr>
  <tr>
   <td>{{SpecName('ES Int Draft', '#sup-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}</td>
  </tr>
 </tbody>
</table>

<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>

<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>

<p>{{Compat("javascript.builtins.Number.toLocaleString")}}</p>

<h2 id="Див._також">Див. також</h2>

<ul>
 <li>{{jsxref("Number.prototype.toString()")}}</li>
</ul>