GT ClassMethodsLocales

isSameDialect

GT isSameDialect 方法的 API 参考

概述

isSameDialect 方法用于检查多个 BCP-47 语言代码是否表示同一种方言。 它通过比较语言和地区组件,判断这些语言代码是否代表同一语言变体。


参考资料

参数

Prop

Type

参数说明

参数说明
...locales若干待比较的语言代码(字符串)或语言代码数组。所有提供的语言代码必须属于同一方言

返回值

boolean - 若所有提供的语言代码表示相同方言,则返回 true,否则返回 false

异常

不会抛出任何异常。对无效的语言代码会进行妥善处理,并返回 false


行为

方言比较逻辑

该方法使用以下逻辑来判定方言是否等同:

  1. 规范化 locales - 标准化所有输入的语言代码
  2. 比较语言代码 - 所有 locales 必须共享相同的基础语言
  3. 处理区域层级 - 基础语言可与其区域变体视为匹配
  4. 精确方言匹配 - 区域变体必须完全一致

层级规则

  • 基础语言('en')可匹配任意区域变体('en-US''en-GB'
  • 区域变体仅支持精确匹配('en-US''en-GB'
  • 如存在脚本变体,比较时会纳入考虑
  • 不同语言绝不匹配('en''es'

输入灵活性

该方法支持:

  • 多个字符串参数:isSameDialect('en-US', 'en-GB')
  • 字符串数组:isSameDialect(['en-US', 'en-GB'])
  • 混合形式:isSameDialect('en-US', ['en-GB', 'en-CA'])
  • 单个 locale:isSameDialect('en-US')(始终返回 true

示例

基础方言对比

const gt = new GT({
  sourceLocale: 'en-US',
  targetLocale: 'es-ES'
});

// 完全相同的变体
console.log(gt.isSameDialect('en-US', 'en-US')); // true
console.log(gt.isSameDialect('zh-CN', 'zh-CN')); // true

// 同一语言的不同变体
console.log(gt.isSameDialect('en-US', 'en-GB')); // false
console.log(gt.isSameDialect('es-ES', 'es-MX')); // false
console.log(gt.isSameDialect('pt-PT', 'pt-BR')); // false

// 语言基码与地区变体
console.log(gt.isSameDialect('en', 'en-US')); // true
console.log(gt.isSameDialect('es', 'es-ES')); // true
console.log(gt.isSameDialect('zh', 'zh-CN')); // true

// 不同语言
console.log(gt.isSameDialect('en-US', 'es-ES')); // false
console.log(gt.isSameDialect('fr-FR', 'de-DE')); // false

注意事项

  • 使用标准化语言代码,确保对比准确
  • 支持灵活的输入格式(字符串、数组、混合)

下一步

本指南如何?