# General Translation Platform: requiresTranslation
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/locales/requires-translation.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Проверяет, требуется ли перевод между двумя локалями. Справочник по API для requiresTranslation.

Определяет, нужен ли перевод между исходной и целевой локалью в экземпляре [GT](/docs/platform/core/reference/gt-class/constructor). General Translation сравнивает коды локалей и учитывает список одобренных локалей, чтобы определить, нужно ли переводить содержимое.

## Обзор [#overview]

Вызовите `requiresTranslation` для экземпляра [`GT`](/docs/platform/core/reference/gt-class/constructor), при необходимости передав исходную и целевую локали. Если они не указаны, используются `sourceLocale` и `targetLocale` этого экземпляра.

```typescript
const gt = new GT({
  sourceLocale: 'en-US',
  targetLocale: 'es-ES',
  locales: ['en-US', 'es-ES', 'fr-FR', 'de-DE'],
});

console.log(gt.requiresTranslation('en-US', 'es-ES')); // true
console.log(gt.requiresTranslation('en', 'en-US')); // false (один диалект)
```

Сигнатура:

```typescript
requiresTranslation(
  sourceLocale?: string,
  targetLocale?: string,
  approvedLocales?: string[],
  customMapping?: CustomMapping
): boolean
```

*Примечание: `requiresTranslation` выполняется локально и не требует API-ключа. Если аргументы не указаны, используются `sourceLocale`, `targetLocale`, `locales` и `customMapping` экземпляра. О проверках без экземпляра `GT` см. в описании отдельной функции [`requiresTranslation`](/docs/platform/core/reference/utility-functions/locales/requires-translation).*

## Как это работает [#how-it-works]

Проверка выполняется в таком порядке:

1. **Корректность.** Если исходная, целевая или любая из одобренных локалей не является корректной локалью, возвращается `false`.
2. **Один и тот же диалект.** Если исходная и целевая локали относятся к одному и тому же диалекту (например, `en` и `en-US`), возвращается `false` — перевод не требуется.
3. **Нет списка approved.** Если не применяется ни один `approvedLocales`, возвращается `true`, когда исходная и целевая локали различаются.
4. **Утвержденная область.** В противном случае возвращается `true` только если язык целевой локали совпадает с языком хотя бы одной одобренной локали; разные диалекты одного языка считаются требующими перевода (поэтому в качестве резервного варианта может использоваться более близкий диалект). Если язык целевой локали не представлен в одобренных локалях, возвращается `false`.

Если `sourceLocale` или `targetLocale` не указаны, используются значения экземпляра. Выбрасывается `Error`, если исходная локаль не указана и у экземпляра нет `sourceLocale`, или если целевая локаль не указана и у экземпляра нет `targetLocale`.

## Параметры [#parameters]

| Параметр                               | Описание                                               | Тип                                                                   | Необязательно | По умолчанию         |
| -------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------- | ------------- | -------------------- |
| [`sourceLocale`](#source-locale)       | Код исходной локали.                                   | `string`                                                              | Да            | `this.sourceLocale`  |
| [`targetLocale`](#target-locale)       | Код целевой локали.                                    | `string`                                                              | Да            | `this.targetLocale`  |
| [`approvedLocales`](#approved-locales) | Массив одобренных целевых локалей.                     | `string[]`                                                            | Да            | `this.locales`       |
| [`customMapping`](#custom-mapping)     | Пользовательское сопоставление для определения локали. | [`CustomMapping`](/docs/platform/core/reference/types/custom-mapping) | Да            | `this.customMapping` |

### `sourceLocale` [#source-locale]

**Тип** `string` · **Необязательный** · **По умолчанию** `this.sourceLocale`

Код исходной локали. Если не указан, используется значение `sourceLocale` этого экземпляра.

### `targetLocale` [#target-locale]

**Тип** `string` · **Необязательный** · **По умолчанию** `this.targetLocale`

Код целевой локали. Если не указан, используется значение `targetLocale` этого экземпляра.

### `approvedLocales` [#approved-locales]

**Тип** `string[]` · **Необязательный** · **По умолчанию** `this.locales`

Массив одобренных целевых локалей. Если параметр не указан, используется массив `locales` этого экземпляра. Если целевая локаль не входит в этот список, метод возвращает `false`.

### `customMapping` [#custom-mapping]

**Тип** [`CustomMapping`](/docs/platform/core/reference/types/custom-mapping) · **Необязательно** · **По умолчанию** `this.customMapping`

Пользовательское сопоставление для определения локали.

## Возвращает [#returns]

**Тип** `boolean`

`true`, если требуется перевод, иначе — `false`. Если не удаётся определить ни исходную, ни целевую локаль, вызывает `Error`.

## Примеры [#examples]

```typescript
const gt = new GT({
  sourceLocale: 'en-US',
  targetLocale: 'es-ES',
  locales: ['en-US', 'es-ES', 'fr-FR', 'de-DE'],
});

// Разные языки требуют перевода
console.log(gt.requiresTranslation('en-US', 'es-ES')); // true
console.log(gt.requiresTranslation('en-US', 'fr-FR')); // true

// Один и тот же диалект не требует перевода
console.log(gt.requiresTranslation('en-US', 'en-US')); // false
console.log(gt.requiresTranslation('es-ES', 'es-ES')); // false
console.log(gt.requiresTranslation('en', 'en-US')); // false (тот же диалект)

// Разные диалекты одного языка ТРЕБУЮТ перевода
// (более близкий диалект может использоваться как резервный)
console.log(gt.requiresTranslation('en-US', 'en-GB')); // true
console.log(gt.requiresTranslation('es-ES', 'es-MX')); // true

// Целевой язык отсутствует в списке одобренных локалей
console.log(gt.requiresTranslation('en-US', 'it-IT')); // false (it-IT не входит в одобренные локали)
```

## Заметки [#notes]

* Возвращает `false` только для полностью совпадающего диалекта, недопустимых локалей или целевой локали, язык которой не представлен в списке одобренных локалей.
* Для разных диалектов одного языка (например, `en-US` и `en-GB`) перевод требуется, поэтому более близкий диалект может использоваться как резервный вариант.
* Учитывает список одобренных локалей: сопоставление выполняется по языку, а не по точному диалекту.

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
