For AI agents: the complete documentation index is available at /tc39-atlas/llms.txt, the full documentation bundle is available at /tc39-atlas/llms-full.txt, and this page is available as Markdown at /tc39-atlas/proposals/proposal-intl-localematcher.md.
  • 简体中文
  • Intl LocaleMatcher ?

    中文标题:Intl.LocaleMatcher

    提案概览
    提案速览

    该提案提供 Intl.LocaleMatcher,用于一次准备好可用的翻译语言区域,然后匹配用户偏好。构造函数会对可用语言区域进行快照并规范化,只读取一次选项,并提供 match 方法,返回规范化后的可用标签或 undefined。匹配可以使用 RFC 4647 前缀 lookup,或使用默认的 best fit,后者复用 ECMA-402 中由实现定义的匹配,不要求 CLDR/ICU 数据或评分。

    Note

    以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。

    Intl.LocaleMatcher

    一次准备好可用的翻译语言区域,然后匹配用户偏好。

    第 1 阶段。 提案负责人:Long Ho。

    规范 · 源代码 · 研究与待解决问题 · FormatJS ponyfill

    拟议 API

    const available = ['fr', 'en'];
    const matcher = new Intl.LocaleMatcher(available, {algorithm: 'lookup'});
    
    matcher.match(['fr-CA', 'en']); // 'fr'
    matcher.match(['ja']);         // undefined
    const locale = matcher.match(navigator.languages) ?? 'en';
    • 构造函数会对可用语言区域进行快照并规范化;之后的修改不会影响它。选项只读取一次,并且要求为对象或 undefined。
    • lookup 使用 RFC 4647 前缀查找。best fit(默认)复用 ECMA-402 中由实现定义的匹配,不要求 CLDR/ICU 数据或评分。
    • match 返回一个规范化后的可用标签或 undefined。不会向结果中添加隐式默认值或请求的 Unicode u 扩展。
    • 输入遵循 CanonicalizeLocaleList:字符串、Intl.Locale 对象和类数组列表。不会消费通用可迭代对象。可用的 u 扩展仍会被拒绝;私有使用(private-use)的音调匹配仍未作规定。

    草案 API 变更:实例方法取代静态 Intl.LocaleMatcher.match。 FormatJS ponyfill 目前实现的是较早的无状态 API。

    HTTP 解析、消息回退、多结果和资源索引不在本草案范围内。未决决策和基础性先例见设计说明。

    构建

    npm ci
    npm run build

    严格的 ecmarkup 构建会检查语法、引用和算法 lint 规则。运行时一致性测试已有计划,但尚未在此实现。

    参考资料