# General Translation Platform: determineLocale
URL: https://generaltranslation.com/ru/docs/platform/core/reference/utility-functions/locales/determine-locale.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Найти наиболее подходящую локаль без экземпляра GT. Справка по API для determineLocale.

[`determineLocale`](/docs/platform/core/reference/gt-class-methods/locales/determine-locale) — это независимая вспомогательная функция из основной библиотеки Core от General Translation, которая определяет наиболее подходящую локаль из списка разрешённых локалей на основе пользовательских предпочтений. Она обеспечивает согласование контента без необходимости создавать экземпляр GT.

## Обзор [#overview]

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

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

const approvedLocales = ['en-US', 'es-ES', 'fr-FR', 'de-DE'];

const best = determineLocale(['fr-CA', 'es-MX'], approvedLocales);
// Возвращает: "fr-FR"
```

Сигнатура:

```typescript
determineLocale(
  locales: string | string[],
  approvedLocales?: string[],
  customMapping?: CustomMapping
): string | undefined
```

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

* **Порядок предпочтений.** `locales` — это одна локаль или массив, отсортированный по приоритету. Каждое предпочтение по очереди сверяется со списком разрешённых локалей.
* **Сопоставление.** Сначала проверяется точное совпадение локали, затем производные коды «язык-регион», «язык-письменность» и минимизированные коды. Если совпадений нет, проверяются вероятные регион и письменность языка. Например, `fr-CA` может совпасть с `fr-FR`, тогда как `en-AU` не совпадёт со списком разрешённых локалей, содержащим только `en-GB`.
* **Нет совпадений.** Возвращает `undefined`, если ни одно предпочтение не удаётся сопоставить с разрешёнными локалями.
* **Пользовательское сопоставление.** Любой [`customMapping`](/docs/platform/core/reference/types/custom-mapping) применяется при проверке и нормализации локалей.

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

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

### `locales` [#locales]

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

Одна локаль или массив локалей, упорядоченных по приоритету (сначала наиболее предпочтительные).

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

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

Список локалей, участвующих в сопоставлении. Порядок элементов массива не определяет, какая из локалей с одним и тем же языком победит; при сопоставлении используются выведенные region и script для каждого пользовательского предпочтения.

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

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

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

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

**Тип** `string | undefined`

Наиболее подходящая локаль из `approvedLocales` или `undefined`, если совпадение не найдено.

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

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

const approvedLocales = ['en-US', 'es-ES', 'fr-FR', 'de-DE'];

// Точное совпадение
console.log(determineLocale('en-US', approvedLocales)); // 'en-US'

// Резервный язык (en-GB → en-US)
console.log(determineLocale('en-GB', approvedLocales)); // 'en-US'

// Несколько предпочтений (fr-CA соответствует fr-FR раньше, чем рассматривается es-MX)
console.log(determineLocale(['fr-CA', 'es-MX'], approvedLocales)); // 'fr-FR'

// Совпадений нет
console.log(determineLocale('it-IT', approvedLocales)); // undefined
```

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

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

## Sitemap

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