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
|
---
title: Intl.Collator
slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator
tags:
- Collator
- Internationalization
- JavaScript
translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator
---
<div>{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}</div>
<h2 id="Summary">Сводка</h2>
<p>Объект <strong><code>Intl.Collator</code></strong> является конструктором <dfn>сортировщиков</dfn> — объектов, включающих языка-зависимое сравнение строк.</p>
<h2 id="Syntax">Синтаксис</h2>
<pre class="syntaxbox"><code>new Intl.Collator([<var>locales</var>[, <var>options</var>]])
Intl.Collator.call(<var>this</var>[, <var>locales</var>[, <var>options</var>]])</code></pre>
<h3 id="Parameters">Параметры</h3>
<dl>
<dt><code>locales</code></dt>
<dd>
<p>Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента <code>locales</code> смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}. Разрешены следующие ключи расширения Unicode:</p>
<dl>
<dt><code>co</code></dt>
<dd>Варианты сортировки для конкретных локалей. Возможные значения включают в себя: <code>"big5han"</code>, <code>"dict"</code>, <code>"direct"</code>, <code>"ducet"</code>, <code>"gb2312"</code>, <code>"phonebk"</code>, <code>"phonetic"</code>, <code>"pinyin"</code>, <code>"reformed"</code>, <code>"searchjl"</code>, <code>"stroke"</code>, <code>"trad"</code> и <code>"unihan"</code>. Значения <code>"standard"</code> и <code>"search"</code> игнорируются; они заменяются свойством <code>usage</code> аргумента <code>options</code> (смотрите ниже).</dd>
<dt><code>kn</code></dt>
<dd>Определяет, должно ли использоваться числовое сравнение, то есть, чтобы выполнялось условие "1" < "2" < "10". Возможными значениями являются <code>"true"</code> и <code>"false"</code>. Эта опция может быть установлена через свойство аргумента <code>options</code>, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента <code>options</code> имеет приоритет.</dd>
<dt><code>kf</code></dt>
<dd>Определяет, буквы какого регистра должны идти первыми — верхнего или нижнего. Возможными значениями являются <code>"upper"</code>, <code>"lower"</code> и <code>"false"</code> (используется значение по умолчанию из локали). Эта опция может быть установлена через свойство аргумента <code>options</code>, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента <code>options</code> имеет приоритет.</dd>
</dl>
</dd>
<dt><code>options</code></dt>
<dd>
<p>Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:</p>
<dl>
<dt><code>localeMatcher</code></dt>
<dd>Используемый алгоритм сопоставления локалей. Возможными значениями являются <code>"lookup"</code> и <code>"best fit"</code>; значением по умолчанию является <code>"best fit"</code>. Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.</dd>
<dt><code>usage</code></dt>
<dd>Определяет, используется ли сравнение для сортировки или для поиска совпадающих строк. Возможными значениями являются <code>"sort"</code> и <code>"search"</code>; значением по умолчанию является <code>"sort"</code>.</dd>
<dt><code>sensitivity</code></dt>
<dd>
<p>Определяет, какие различия в строках должны приводить к ненулевому результату. Возможными значениями являются:</p>
<ul>
<li><code>"base"</code>: считаются различными только строки, отличающиеся базовыми буквами. Примеры: <code>a ≠ b</code>, <code>a = á</code>, <code>a = A</code>.</li>
<li><code>"accent"</code>: считаются различными только строки, отличающиеся базовыми буквами или акцентами и другими диакритическими знаками. Примеры: <code>a ≠ b</code>, <code>a ≠ á</code>, <code>a = A</code>.</li>
<li><code>"case"</code>: считаются различными только строки, отличающиеся базовыми буквами или регистром букв. Примеры: <code>a ≠ b</code>, <code>a = á</code>, <code>a ≠ A</code>.</li>
<li><code>"variant"</code>: считаются различными строки, отличающиеся базовыми буквами, акцентами и другими диакритическими знаками или регистром букв. Также во внимание могут приниматься и другие различия. Примеры: <code>a ≠ b</code>, <code>a ≠ á</code>, <code>a ≠ A</code>.</li>
</ul>
<p>Значением по умолчанию является <code>"variant"</code> при использовании свойства <code>usage</code>, равного <code>"sort"</code>, и зависит от локали при использовании свойства <code>usage</code>, равного <code>"search"</code>.</p>
</dd>
<dt><code>ignorePunctuation</code></dt>
<dd>Определяет, должна ли игнорироваться пунктуация. Возможными значениями являются <code>true</code> и <code>false</code>; значением по умолчанию является <code>false</code>.</dd>
<dt><code>numeric</code></dt>
<dd>Определяет, должно ли использоваться числовое сравнение, то есть, чтобы выполнялось условие "1" < "2" < "10". Возможными значениями являются <code>true</code> и <code>false</code>; значением по умолчанию является <code>false</code>. Эта опция может быть установлена через свойство аргумента <code>options</code>, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента <code>options</code> имеет приоритет. Реализации не обязаны поддерживать это свойство.</dd>
<dt><code>caseFirst</code></dt>
<dd>Определяет, буквы какого регистра должны идти первыми — верхнего или нижнего. Возможными значениями являются <code>"upper"</code>, <code>"lower"</code> и <code>"false"</code> (используется значение по умолчанию из локали); значением по умолчанию является <code>"false"</code>. Эта опция может быть установлена через свойство аргумента <code>options</code>, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента <code>options</code> имеет приоритет. Реализации не обязаны поддерживать это свойство.</dd>
</dl>
</dd>
</dl>
<h2 id="Description">Описание</h2>
<h3 id="Properties">Свойства</h3>
<dl>
<dt>{{jsxref("Collator.prototype", "Intl.Collator.prototype")}}</dt>
<dd>Позволяет добавлять свойства ко всем объектам.</dd>
</dl>
<h2 id="Methods">Методы</h2>
<dl>
<dt>{{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}</dt>
<dd>Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без отката к локали по умолчанию среды выполнения.</dd>
</dl>
<h2 id="Collator_instances">Экземпляры объекта <code>Collator</code></h2>
<h3 id="Properties_of_Collator_instance">Свойства</h3>
<p>Экземпляры <code>Collator</code> наследуют следующие свойства из своего прототипа:</p>
<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Properties')}}</div>
<h3 id="Methods_of_Collator_instance">Методы</h3>
<p>Экземпляры <code>Collator</code> наследуют следующие методы из своего прототипа:</p>
<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Methods')}}</div>
<h2 id="Examples">Примеры</h2>
<h3 id="Example_Using_Collator">Пример: использование <code>Collator</code></h3>
<p>Следующий пример демонстрирует различные потенциальные результаты для строки, находящейся до, после или на том же самом уровне, что и другая строка:</p>
<pre class="brush: js">console.log(new Intl.Collator().compare('a', 'c')); // → отрицательное значение
console.log(new Intl.Collator().compare('c', 'a')); // → положительное значение
console.log(new Intl.Collator().compare('a', 'a')); // → 0
</pre>
<p>Обратите внимание, что результат, показанный в коде выше, может сильно различаться в зависимости от браузера и его версии. Происходит это потому, что возвращаемые значения зависят от реализации. То есть, спецификация требует только чтобы при следовании строки до значение было отрицательным, а после — положительным.</p>
<h3 id="Example_Using_locales">Пример: использование аргумента <code>locales</code></h3>
<p>Результаты, предоставляемые функцией {{jsxref("Collator.prototype.compare()")}} сильно различаются в зависимости от языка. Для получения порядка сортировки языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент <code>locales</code>:</p>
<pre class="brush: js">// В немецком буква ä идёт рядом с буквой a
console.log(new Intl.Collator('de').compare('ä', 'z'));
// → отрицательное значение
// В шведском буква ä следует после буквы z
console.log(new Intl.Collator('sv').compare('ä', 'z'));
// → положительное значение
</pre>
<h3 id="Example_Using_options">Пример: использование аргумента <code>options</code></h3>
<p>Результат, предоставляемый функцией {{jsxref("Collator.prototype.compare()")}}, может быть настроен с помощью аргумента <code>options</code>:</p>
<pre class="brush: js">// В немецком буква a является базовой для буквы ä
console.log(new Intl.Collator('de', { sensitivity: 'base' }).compare('ä', 'a'));
// → 0
// В шведском буквы ä и a являются двумя разными базовыми буквами
console.log(new Intl.Collator('sv', { sensitivity: 'base' }).compare('ä', 'a'));
// → положительное значение
</pre>
<h2 id="Specifications">Спецификации</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Спецификация</th>
<th scope="col">Статус</th>
<th scope="col">Комментарии</th>
</tr>
<tr>
<td>{{SpecName('ES Int 1.0', '#sec-10.1', 'Intl.Collator')}}</td>
<td>{{Spec2('ES Int 1.0')}}</td>
<td>Изначальное определение.</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility">Совместимость с браузерами</h2>
<p>{{Compat}}</p>
<h2 id="See_also">Смотрите также</h2>
<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'See_also')}}</div>
|