Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sync with english version for Collator #10825

Merged
merged 3 commits into from
Dec 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
---
title: Intl.Collator() constructor
slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator
---

{{JSRef}}

**`Intl.Collator()`** 构造函数用于创建
{{jsxref("Intl/Collator", "Intl.Collator")}} 对象,此类对象用于语言敏感的字符串比较。

{{EmbedInteractiveExample("pages/js/intl-collator.html")}}

## 语法

```js-nolint
new Intl.Collator()
new Intl.Collator(locales)
new Intl.Collator(locales, options)

Intl.Collator()
Intl.Collator(locales)
Intl.Collator(locales, options)
```

> **备注:** `Intl.Collator()` 可以在使用或不适用 [`new`](/zh-CN/docs/Web/JavaScript/Reference/Operators/new) 的情况下调用。两者均能创建一个新的 `Intl.Collator` 实例。

### 参数

- `locales` {{optional_inline}}

- : 缩写语言代码(BCP 47 language tag)的字符串,或由此类字符串组成的数组。关于参数 `locales` 的一般形式和解释请参见[语言区域识别和判定](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl#语言区域识别和判定)。

下面的这些 Unicode 扩展键也是被允许的:

> **备注:** 这些键通常也可用于 `options` 的设置(如下所列)。当两者同时设置时,`options` 属性的优先级更高。

- `co`

- : 某些区域设置的变体归类。可能的值包括:

- `big5han`(汉语;在 Chrome 和 Edge 中不可用)
- `compat`(阿拉伯语)
- `dict`(僧伽罗语)
- `direct`(已弃用,请勿使用)
- `ducet`(已弃用,请勿使用)
- `emoji`(root)
- `eor`(root)
- `gb2312`(汉语;在 Chrome 和 Edge 中不可用)
- `phonebk`(德语)
- `phonetic`(林加拉语)
- `pinyin`(汉语)
- `reformed`(瑞典语;不需要明确指定,因为这是瑞典语的默认设置)
- `searchjl`(韩语;请勿用于排序)
- `stroke`(汉语)
- `trad`
- `unihan`(汉语、日语和韩语;在 Chrome 和 Edge 中不可用)
- `zhuyin`(汉语)

该选项也可通过 `options` 的 `collation` 属性设置。

- `kn`
- : 是否应使用数字对照,使得“1”<“2”<“10”。可能的值为 `"true"` 和 `"false"`。该选项也可通过 `options` 的 `numeric` 属性设置。
- `kf`
- : 是否应该首先根据大小写排序。可能的值为 `"upper"`、`"lower"` 和 `"false"`(使用区域的默认设置)。该选项也可通过 `options` 的 `caseFirst` 属性设置。

- `options` {{optional_inline}}

- : 包含一些或所有的以下属性的对象:

- `localeMatcher`
- : 使用的区域匹配算法。可能的值为:`"lookup"` 和 `"best fit"`;默认值为 `"best fit"`。参见
{{jsxref("Global_Objects/Intl", "Intl", "#语言区域识别和判定", 1)}} 页面以了解此选项的详细信息。
- `usage`
- : 比较是用于排序还是用于搜索匹配的字符串。可能的值为 `"sort"` 和 `"search"`;默认值为 `"sort"`。
- `sensitivity`

- : 字符串中的哪些差异应导致结果值为非零。可能的值为:

- `"base"`:只有字母不同的字符串比较不相等。例如:a ≠ b、a = á、a = A。
- `"accent"`:只有不同的基本字母或重音符号和其它变音符号的字符串比较为不相等。例如:a
≠ b、a ≠ á、a = A。
- `"case"`:只有不同的基本字母或大小写的字符串比较不相等。例如:a ≠ b、a = á、a ≠ A。
- `"variant"`:字符串的字母、重音和其它变音符号,或不同大小写比较不相等。也可以考虑其它差异。例如:a ≠ b、a ≠ á、a ≠ A。

`"sort"` 用法(`usage`)的默认值为 `"variant"`。`"search"` 用法则取决于区域。

- `ignorePunctuation`
- : 是否应忽略标点。可能的值为 `true` 和 `false`;默认值为 `false`。
- `numeric`

- : 是否应使用数字对照,使得“1”<“2”<“10”。可能的值为 `true` 和 `false`;默认值为 `false`。此选项也可以通过 Unicode 扩展键 `kn` 设置;当两者同时设置时,`options` 属性的优先级更高。

- `caseFirst`

- : 是否应该首先根据大小写排序。可能的值为 `"upper"`、`"lower"` 和 `"false"`(使用区域的默认设置)。此选项也可以通过 Unicode 扩展键 `kf` 设置;当两者同时设置时,`options` 属性的优先级更高。

- `collation`

- : 一些区域的变体。可能的值包括:

- `big5han`(汉语;在 Chrome 和 Edge 中不可用)
- `compat`(阿拉伯语)
- `dict`(僧伽罗语)
- `direct`(已弃用,请勿使用)
- `ducet`(不可用,请勿使用)
- `emoji`(root)
- `eor`(root)
- `gb2312`(汉语;在 Chrome 和 Edge 中不可用)
- `phonebk`(德语)
- `phonetic`(林加拉语)
- `pinyin`(汉语)
- `reformed`(瑞典语;不需要明确指定,因为这是瑞典语的默认设置)
- `searchjl`(韩语;请勿用于排序)
- `stroke`(汉语)
- `trad`
- `unihan`(汉语、日语和韩语;在 Chrome 和 Edge 中不可用)
- `zhuyin`(汉语)

此选项也可以通过 Unicode 扩展键 `co` 设置;当两者同时设置时,`options` 属性的优先级更高。

## 示例

### 使用 Collator

以下示例演示了一个字符串在另一个字符串之前、之后或与另一个字符串处于同一级别时可能出现的不同结果:

```js
console.log(new Intl.Collator().compare("a", "c")); // -1,或一些其它的负值
console.log(new Intl.Collator().compare("c", "a")); // 1,或一些其它的正值
console.log(new Intl.Collator().compare("a", "a")); // 0
```

请注意,上面代码中显示的结果可能因浏览器和浏览器版本而异。这是因为这些值是特定于实现的。即,规范仅要求在比较的字符串之前和之后分别对应负值和正值。

## 规范

{{Specifications}}

## 浏览器兼容性

{{Compat}}

## 参见

- {{jsxref("Intl.Collator")}}
- {{jsxref("Intl")}}
Original file line number Diff line number Diff line change
Expand Up @@ -5,124 +5,67 @@ slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator

{{JSRef}}

**`Intl.Collator`** 是用于语言敏感字符串比较的 collators 构造函数
**`Intl.Collator`** 对象用于语言敏感的字符串比较

{{EmbedInteractiveExample("pages/js/intl-collator.html")}}

## 语法
## 构造函数

```plain
new Intl.Collator([locales[, options]])
Intl.Collator.call(this[, locales[, options]])
```

### 参数

- `locales`

- : 可选。缩写语言代码 (BCP 47 language tag,例如:cmn-Hans-CN) 的字符串或者这些字符串组成的数组。关于参数 locales 的一般形式和解释请参见{{jsxref("Global_Objects/Intl", "Intl page", "#Locale_identification_and_negotiation", 1)}}. 下面的这些 Unicode 扩展键也是被允许的:

- `co`
- : 某些区域设置的变体归类。可能的值包括:“big5han”,“dict”,“direct”,“ducet”,“gb2312”,“phonebk”,“phonetic”,“pinyin”,“reformed”,“searchjl”,“stroke” “,”unihan“。值“`standard`”和“`search`”被忽略; 它们被 options 属性用法替换(详见下文)。
- `kn`
- : 是否应使用数字对照,使得“1”<“2”<“10”。可能的值为“true”和“false”。此选项可以通过 options 属性或通过 Unicode 扩展 key 设置; 如果两者都提供,options 属性优先。
- `kf`
- : 首先排序大写或者小写。可能的值为“upper”,“lower”或“false”(使用区域设置的默认值)。此选项可以通过 options 属性或通过 Unicode 扩展 key 设置; 如果两者都提供,options 属性优先。

- `options`

- : 可选。包含一些或所有的下面属性的对象:

- `localeMatcher`
- : 使用的 local 的匹配算法。可能的值有 "lookup" 和 "best fit"; 默认值是 `"best fit"`. 有关此选项的信息,请参见{{jsxref("Global_Objects/Intl", "Intl page", "#Locale_negotiation", 1)}}.
- `usage`
- : 比较是用于排序还是用于搜索匹配的字符串。可能的值为“sort”和“search”; 默认为“sort”。
- `sensitivity`

- : 字符串中的哪些差异应导致结果值为非零 (non-zero)。可能的值有:

- `"base"`: 只有字母不同的字母比较不相等。例子:`a ≠ b`, `a = á`, `a = A`。
- `"accent"`: 只有不同的基本字母或重音符号和其他变音符号的字符串比较为不相等。例如:`a ≠ b`, `a ≠ á`, `a = A`。
- `"case"`: 只有不同的基本字母或大小写的字符串比较不相等。Examples: `a ≠ b`, `a = á`, `a ≠ A`。
- `"variant"`: 字符串的字母,口音和其他变音符号、或不同大小写比较不相等。也可以考虑其他差异。例如: `a ≠ b`, `a ≠ á`, `a ≠ A`.

`"variant"` 的默认值使用 `"sort"`;它的 locale 依赖于使用 `"search"`。

- `ignore­Punctua­tion`
- : 是否应忽略标点。可能的值为 true 和 false; 默认值为 false。
- `numeric`
- : 是否应使用数字对照,使得“1”<“2”<“10”。可能的值为“true”和“false”。默认值为“false” 。此选项可以通过 options 属性或通过 Unicode 扩展 key 设置; 如果两者都提供,options 属性优先。实现不需要支持此属性。
- `caseFirst`
- : 首先排序大写或者小写。可能的值为“upper”,“lower”或“false”(使用区域设置的默认值)。此选项可以通过 options 属性或通过 Unicode 扩展 key 设置; 如果两者都提供,options 属性优先。实现不需要支持此属性。

## 描述

`Intl.Collator` 类有一下属性和方法

### 属性

- {{jsxref("Collator.prototype", "Intl.Collator.prototype")}}
- : 允许向所有对象添加属性。

### 方法

- {{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}
- : 返回包含所支持的所提供语言环境的数组的数组,而不必回退到运行时的默认语言环境。

## `Collator 实例`

### 属性

`Collator 实例从其原型继承以下属性:`
- {{jsxref("Intl/Collator/Collator", "Intl.Collator()")}}
- : 创建一个新的 `Collator` 对象。

{{page('en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Properties')}}
## 静态方法

### 方法
- {{jsxref("Intl/Collator/supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}
- : 返回一个数字,其中包含提供的区域(locale)中被运行时所支持的,而不必回退到运行时的默认区域。

### Collator 实例从其原型继承以下方法:
## 实例方法

{{page('en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Methods')}}
- {{jsxref("Intl/Collator/compare", "Intl.Collator.prototype.compare")}}
- : getter 函数,根据 {{jsxref("Global_Objects/Intl/Collator", "Intl.Collator")}} 对象的排序顺序来比较两个字符串。
- {{jsxref("Intl/Collator/resolvedOptions", "Intl.Collator.prototype.resolvedOptions()")}}
- : 返回一个新对象,其属性反映了在对象初始化期间计算所得的区域和一系列选项。

## 例子
## 示例

### 基本用法
### 使用 Collator

以下示例演示在另一个之前,之后或同级别发生的字符串的不同潜在结果
以下示例演示了一个字符串在另一个字符串之前、之后或与另一个字符串处于同一级别时可能出现的不同结果

```js
console.log(new Intl.Collator().compare('a', 'c')); // → a negative value
console.log(new Intl.Collator().compare('c', 'a')); // → a positive value
console.log(new Intl.Collator().compare('a', 'a')); // 0
console.log(new Intl.Collator().compare("a", "c")); // -1,或一些其它的负值
console.log(new Intl.Collator().compare("c", "a")); // 1,或一些其它的正值
console.log(new Intl.Collator().compare("a", "a")); // 0
```

请注意,上述代码中显示的结果可能会因浏览器和浏览器版本而异。这是因为值是实现特定的。也就是说,规范仅需要前后值为负和正
请注意,上面代码中显示的结果可能因浏览器和浏览器版本而异。这是因为这些值是特定于实现的。即,规范仅要求在比较的字符串之前和之后分别对应负值和正值

### 使用 `locales`
### 使用 locales

{{jsxref("Collator.prototype.compare()")}} 提供的结果在不同语言之间有所不同。为了获得用于您的应用程序的用户界面的语言格式,请确保设定了语言(可能还有一些回退语言)参数
{{jsxref("Collator.prototype.compare()")}} 提供的结果在不同语言之间有所不同。为了获得用于你的应用程序的用户界面的语言格式,请确保使用 `locales` 参数指定了语言(可能还有一些回退语言):

```js
// 德语中,ä 使用 a 的排序
console.log(new Intl.Collator('de').compare('ä', 'z'));
// → 一个负值
console.log(new Intl.Collator("de").compare("ä", "z"));
// -1,或一些其它的负值

// 瑞典语中,ä z 的后面
console.log(new Intl.Collator('sv').compare('ä', 'z'));
// → 一个正值
// 在瑞典语中,ä 排在 z 之后
console.log(new Intl.Collator("sv").compare("ä", "z"));
// 1,或一些其它的正值
```

### 使用 `options`
### 使用 options

{{jsxref("Collator.prototype.compare()")}} 提供的结果可以使用 options 参数自定义:

```js
// 德语中,ä 使用 a 作为基本字母
console.log(new Intl.Collator('de', { sensitivity: 'base' }).compare('ä', 'a'));
// 0
console.log(new Intl.Collator("de", { sensitivity: "base" }).compare("ä", "a"));
// 0

// 瑞典语中,ä 和 a 是单独的基本字母
console.log(new Intl.Collator('sv', { sensitivity: 'base' }).compare('ä', 'a'));
// → 一个正值
console.log(new Intl.Collator("sv", { sensitivity: "base" }).compare("ä", "a"));
// 1,或一些其它的正值
```

## 规范
Expand All @@ -135,4 +78,4 @@ console.log(new Intl.Collator('sv', { sensitivity: 'base' }).compare('ä', 'a'))

## 参见

{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'See_also')}}
- {{jsxref("Intl")}}