# General Translation Platform: determineLocale
URL: https://generaltranslation.com/es/docs/platform/core/reference/gt-class-methods/locales/determine-locale.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Encuentra la configuración regional que mejor se ajusta de una lista de configuraciones regionales aprobadas. Referencia de la API de determineLocale.

General Translation implementa la negociación de configuración regional para encontrar la configuración regional más adecuada cuando no hay una coincidencia exacta.

## Resumen [#overview]

Llama a `determineLocale` en una instancia de [`GT`](/docs/platform/core/reference/gt-class/constructor) con una o más configuraciones regionales preferidas, en orden de preferencia. Devuelve la configuración regional aprobada que mejor coincida, o `undefined` si no hay ninguna coincidencia.

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

// Coincidencia exacta
console.log(gt.determineLocale('en-US')); // 'en-US'

// Alternativa por idioma
console.log(gt.determineLocale('en-GB')); // 'en-US' (alternativa por región probable)

// Múltiples preferencias (gana el orden de preferencia)
console.log(gt.determineLocale(['fr-CA', 'es-MX', 'en-US'])); // 'fr-FR' (más cercana a la primera preferencia)

// Sin coincidencia
console.log(gt.determineLocale('it-IT')); // undefined
```

Firma:

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

*Nota: `determineLocale` se ejecuta localmente y no requiere una clave de API. Cuando se omiten `approvedLocales` y `customMapping`, usa `locales` y `customMapping` de la instancia. Para realizar la coincidencia sin una instancia de `GT`, consulta la versión independiente de [`determineLocale`](/docs/platform/core/reference/utility-functions/locales/determine-locale).*

## Cómo funciona [#how-it-works]

* **Primero, coincidencia exacta.** Devuelve una coincidencia exacta entre las configuraciones regionales aprobadas para la preferencia actual del usuario.
* **Coincidencia de configuraciones regionales derivadas.** Comprueba las formas idioma-región, idioma-script y minimizadas antes de usar la región y el script probables del idioma.
* **Orden de preferencia.** Respeta el orden de la lista de entrada, por lo que se elige una coincidencia por idioma con mayor preferencia antes que una coincidencia exacta con menor preferencia.
* **Configuraciones regionales aprobadas.** Trata `approvedLocales` como el conjunto de resultados posibles. El orden de su lista no determina la elección entre candidatos del mismo idioma.
* **Sin coincidencia.** Devuelve `undefined` cuando no se encuentra ninguna coincidencia adecuada.

## Parámetros [#parameters]

| Parámetro                              | Descripción                                                                                        | Tipo                                                                  | Opcional | Predeterminado       |
| -------------------------------------- | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | -------- | -------------------- |
| [`locales`](#locales)                  | Una sola configuración regional o una lista de configuraciones regionales en orden de preferencia. | `string \| string[]`                                                  | No       | —                    |
| [`approvedLocales`](#approved-locales) | Configuraciones regionales aptas para la coincidencia.                                             | `string[]`                                                            | Sí       | `this.locales`       |
| [`customMapping`](#custom-mapping)     | Mapeo personalizado de configuraciones regionales para la resolución.                              | [`CustomMapping`](/docs/platform/core/reference/types/custom-mapping) | Sí       | `this.customMapping` |

### `locales` [#locales]

**Tipo** `string | string[]` · **Obligatorio**

Una configuración regional o una lista de configuraciones regionales por orden de preferencia (por ejemplo, una lista `Accept-Language` del navegador).

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

**Tipo** `string[]` · **Opcional** · **Predeterminado** `this.locales`

Configuraciones regionales aptas para la coincidencia. Si se omite, se usan las `locales` de la instancia. El orden de la lista no determina qué configuración regional del mismo idioma prevalece.

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

**Tipo** [`CustomMapping`](/docs/platform/core/reference/types/custom-mapping) · **Opcional** · **Predeterminado** `this.customMapping`

Mapeo personalizado de configuración regional que se utiliza durante la resolución. Si se omite, se usa el `customMapping` de la instancia.

## Devuelve [#returns]

**Tipo** `string | undefined`

La configuración regional que mejor coincide, o `undefined` si no se encuentra ninguna.

## Ejemplos [#examples]

```typescript
// Negociación de configuración regional del usuario
const gt = new GT({
  sourceLocale: 'en-US',
  locales: ['en-US', 'en-GB', 'es-ES', 'fr-FR'],
});

// Simular una cabecera Accept-Language del navegador
const userPreferences = ['fr-CA', 'en-GB', 'en'];
const bestMatch = gt.determineLocale(userPreferences);
console.log(bestMatch); // 'fr-FR' según el orden de preferencia
```

## Notas [#notes]

* Comprueba los códigos de configuración regional exactos y derivados para cada preferencia del usuario.
* Usa alternativas de región probable y script probable, no una coincidencia arbitraria entre dialectos del mismo idioma.
* Respeta el orden de preferencia de la lista de entrada.
* No usa el orden de la lista de configuraciones regionales aprobadas como criterio de desempate.
* Devuelve `undefined` si no se encuentra ninguna coincidencia adecuada.
* Es esencial para implementar la negociación de configuración regional en aplicaciones web.

## Sitemap

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