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

[`requiresTranslation`](/docs/platform/core/reference/gt-class-methods/locales/requires-translation) — это автономная служебная функция из основной библиотеки General Translation, которая определяет, нужен ли перевод между исходной и целевой локалями.

## Обзор [#overview]

Импортируйте `requiresTranslation` напрямую из `generaltranslation` и вызовите её, передав исходную и целевую локали. Для этого не нужен ни API-ключ, ни экземпляр [GT](/docs/platform/core/reference/gt-class/constructor). Если вам нужен эквивалентный вариант через экземпляр, используйте метод [`requiresTranslation`](/docs/platform/core/reference/gt-class-methods/locales/requires-translation) экземпляра [`GT`](/docs/platform/core/reference/gt-class/constructor).

```typescript
import { requiresTranslation } from 'generaltranslation';

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

Сигнатура:

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

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

Определение необходимости перевода выполняется по следующим правилам:

* Если исходная, целевая или любая из разрешённых локалей недопустима, возвращается `false`.
* Если исходная и целевая локали совпадают, возвращается `false`.
* Если указан `approvedLocales` и он не содержит целевой язык, возвращается `false`.
* В противном случае возвращается `true`.

Локали сравниваются с учетом диалектов: перевод пропускается только для локалей, которые приводятся к одному и тому же диалекту. `en-US` → `en` (один и тот же диалект) не требует перевода, а `en-US` → `en-GB` — требует, поскольку их регионы различаются. При сравнении также применяется любое [`customMapping`](/docs/platform/core/reference/types/custom-mapping).

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

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

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

**Тип** `string` · **Обязательно**

Код локали BCP-47 для исходного контента.

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

**Тип** `string` · **Обязательно**

Код локали BCP-47, на которую нужно перевести контент.

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

**Тип** `string[]` · **Необязательно**

Необязательный список разрешённых целевых локалей. Сопоставление выполняется по языку, а не по точному диалекту. Если он указан, для целевой локали, язык которой не представлен в списке, возвращается `false`.

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

**Тип** [`CustomMapping`](/docs/platform/core/reference/types/custom-mapping) · **Необязательно**

Пользовательское сопоставление, используемое при сравнении локалей.

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

**Тип** `boolean`

`true`, если требуется перевод, иначе `false`.

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

```typescript
import { requiresTranslation } from 'generaltranslation';

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

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

// Разные диалекты одного языка всё равно требуют перевода
console.log(requiresTranslation('en-US', 'en-GB')); // true (регионы отличаются)

// С фильтром разрешённых локалей
const approved = ['en-US', 'es-ES', 'fr-FR'];
console.log(requiresTranslation('en-US', 'it-IT', approved)); // false (не разрешена)
console.log(requiresTranslation('en-US', 'es-ES', approved)); // true (разрешена и отличается)
console.log(requiresTranslation('en-US', 'es-MX', approved)); // true (испанский разрешён)
```

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

* Учитывает ограничения на разрешённые локали.
* Сопоставляет разрешённые локали по языку, а не по точному диалекту.
* Возвращает `false`, если целевой язык не представлен в списке разрешённых.
* Учитывает пользовательские сопоставления локалей.

## Sitemap

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