GT ClassMethodsLocales

isSameDialect

GT isSameDialect 方法的 API 参考

概述

isSameDialect 方法用于检查多个 BCP-47 语言代码是否属于同一种方言。 它比较语言代码中的语言与地区部分,以判断它们是否代表同一种语言变体。


参考资料

参数

Prop

Type

参数说明

参数说明
...locales若干语言代码(字符串)或语言代码数组,用于比较。所有提供的 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

说明

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

下一步

这份指南怎么样?

isSameDialect