# General Translation Platform: requiresTranslation URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/locales/requires-translation.mdx --- title: requiresTranslation 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`) перевод требуется, поэтому более близкий диалект может использоваться как резервный вариант. * Учитывает список одобренных локалей: сопоставление выполняется по языку, а не по точному диалекту.