# General Translation Platform: isSameDialect URL: https://generaltranslation.com/zh/docs/platform/core/reference/gt-class-methods/locales/is-same-dialect.mdx --- title: isSameDialect description: 检查两个区域设置是否表示同一方言。isSameDialect 的 API 参考。 --- 检查 [GT](/docs/platform/core/reference/gt-class/constructor) 实例上的多个 BCP-47 区域设置代码是否表示同一方言。General Translation 会比较区域设置代码中的语言和地区部分,以确定它们是否表示同一种语言变体。 ## 概览 [#overview] 在 [`GT`](/docs/platform/core/reference/gt-class/constructor) 实例上调用 `isSameDialect`,并传入两个或多个区域设置代码 (或代码数组) 。如果它们都表示同一种方言,则返回 `true`。 ```typescript const gt = new GT({ sourceLocale: 'en-US', targetLocale: 'es-ES' }); console.log(gt.isSameDialect('en-US', 'en-GB')); // false console.log(gt.isSameDialect('en', 'en-US')); // true ``` 签名: ```typescript isSameDialect(...locales: (string | string[])[]): boolean ``` *注意:`isSameDialect` 在本地运行,无需 API 密钥。即使区域设置代码无效,也会被妥善处理并返回 `false`。如需在没有 `GT` 实例的情况下进行比较,请参阅独立使用的 [`isSameDialect`](/docs/platform/core/reference/utility-functions/locales/is-same-dialect)。* ## 工作原理 [#how-it-works] ### 方言比较逻辑 该方法按以下规则判断方言是否相同: 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`) ## 参数 [#parameters] | 参数 | 描述 | 类型 | 可选 | 默认值 | | --------------------- | ---------------------- | ------------------------ | -- | --- | | [`locales`](#locales) | 要比较的多个区域设置代码或区域设置代码数组。 | `(string \| string[])[]` | 否 | — | ### `...locales` [#locales] **类型** `(string | string[])[]` · **必填** 用于比较的区域设置代码 (字符串) 或区域设置代码数组,数量可变。提供的所有区域设置都必须表示同一种方言。 ## 返回值 [#returns] **类型** `boolean` 如果提供的所有`区域设置代码`都对应同一种方言,则返回 `true`;否则返回 `false`。不会抛出异常;对于无效的`区域设置代码`,也会进行妥善处理并返回 `false`。 ## 示例 [#examples] ```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 ``` ## 备注 [#notes] * 使用标准化的区域设置代码进行准确比较。 * 支持灵活的输入格式 (字符串、数组、混合类型) 。