GT ClassMethodsLocales
isSameDialect
GT isSameDialect 方法的 API 参考
概述
isSameDialect 方法用于检查多个 BCP-47 语言代码是否表示同一种方言。
它通过比较语言和地区组件,判断这些语言代码是否代表同一语言变体。
参考资料
参数
Prop
Type
参数说明
| 参数 | 说明 |
|---|---|
...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
本指南如何?