# generaltranslation: General Translation Core SDK: isSameDialect URL: https://generaltranslation.com/zh/docs/core/class/methods/locales/is-same-dialect.mdx --- title: isSameDialect description: GT isSameDialect 方法的 API 参考文档 --- ## 概述 `isSameDialect` 方法用于检查多个 BCP-47 区域设置代码是否表示同一方言。 它会比较区域设置代码中的语言和地区部分,以判断它们是否属于同一种语言变体。 *** ## 参考 ### 参数 ### 参数说明 | 参数 | 说明 | | ------------ | --------------------------------------------------- | | `...locales` | 要比较的一个或多个区域设置代码 (字符串) 或区域设置代码数组。提供的所有区域设置都必须表示同一种方言 | ### 返回值 `boolean` - 如果提供的所有区域设置代码都表示同一方言,则返回 `true`;否则返回 `false` ### 抛出 不会抛出任何异常。无效的区域设置代码会被妥善处理,并返回 `false`。 *** ## 行为 ### 方言比较逻辑 该方法使用以下逻辑来判断方言是否相同: 1. **标准化区域设置** - 统一所有输入的区域设置代码格式 2. **比较语言代码** - 所有区域设置必须具有相同的基础语言 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'])` * 单个区域设置:`isSameDialect('en-US')` (始终返回 `true`) *** ## 示例 ### 基本方言对比 ```typescript 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`](/docs/core/class/methods/locales/is-same-language) 比较语言 * 使用 [`isSupersetLocale`](/docs/core/class/methods/locales/is-superset-locale) 检查区域设置层级 * 使用 [`isValidLocale`](/docs/core/class/methods/locales/is-valid-locale) 验证区域设置