GT ClassMethodsLocales
isSameDialect
GT isSameDialect 方法的 API 参考
概述
isSameDialect 方法用于检查多个 BCP-47 语言代码是否属于同一种方言。
它比较语言代码中的语言与地区部分,以判断它们是否代表同一种语言变体。
参考资料
参数
Prop
Type
参数说明
| 参数 | 说明 | 
|---|---|
| ...locales | 若干语言代码(字符串)或语言代码数组,用于比较。所有提供的 locales 必须属于同一方言 | 
返回值
boolean - 当所有提供的语言代码表示同一方言时为 true,否则为 false
抛出
不会抛出任何异常。无效的语言代码会被妥善处理,并返回 false。
行为
方言比较逻辑
该方法按以下逻辑判定方言是否相同:
- 规范化 locales - 统一所有输入的语言代码
- 比较语言代码 - 所有 locales 必须具有相同的基础语言
- 处理区域层级 - 基础语言应与其区域变体视为匹配
- 精确方言匹配 - 区域变体必须完全一致
层级规则
- 基础语言('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说明
- 使用标准化的语言代码,确保对比准确
- 支持灵活的输入格式(字符串、数组、混合类型)
下一步
- 使用 isSameLanguage比较语言
- 使用 isSupersetLocale检查 locale 继承层级
- 使用 isValidLocale校验 locales
这份指南怎么样?

