---
createdAt: 2024-08-13
updatedAt: 2026-03-12
title: Configuración
description: Aprende cómo configurar Intlayer para tu aplicación. Entiende las diversas configuraciones y opciones disponibles para personalizar Intlayer según tus necesidades.
keywords:
  - Configuración
  - Ajustes
  - Personalización
  - Intlayer
  - Opciones
slugs:
  - doc
  - concept
  - configuration
history:
  - version: 8.3.0
    date: 2026-03-11
    changes: Mover 'baseDir' de la configuración 'content' a la de 'system'
  - version: 8.2.0
    date: 2026-03-09
    changes: Actualizar opciones del compilador, añadir soporte para 'output' y 'noMetadata'
  - version: 8.1.7
    date: 2026-02-25
    changes: Actualizar opciones del compilador
  - version: 8.1.5
    date: 2026-02-23
    changes: Añadir opción de compilador 'build-only' y prefijo de diccionario
  - version: 8.0.6
    date: 2026-02-12
    changes: Añadir soporte para los proveedores Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face y Together.ai
  - version: 8.0.5
    date: 2026-02-06
    changes: Añadir `dataSerialization` a la configuración de IA
  - version: 8.0.0
    date: 2026-01-24
    changes: Renombrar el modo de importación `live` a `fetch` para describir mejor el mecanismo subyacente.
  - version: 8.0.0
    date: 2026-01-22
    changes: Mover la configuración de construcción para `importMode` a la configuración del diccionario.
  - version: 8.0.0
    date: 2026-01-22
    changes: Añadir la opción `rewrite` a la configuración de enrutamiento
  - version: 8.0.0
    date: 2026-01-18
    changes: Separar la configuración del sistema de la configuración del contenido. Mover las rutas internas a la propiedad `system`. Añadir `codeDir` para separar los archivos de contenido de la transformación del código.
  - version: 8.0.0
    date: 2026-01-18
    changes: Añadir opciones de diccionario `location` y `schema`
  - version: 7.5.1
    date: 2026-01-10
    changes: Añadir soporte para formatos de archivo JSON5 y JSONC
  - version: 7.5.0
    date: 2025-12-17
    changes: Añadir opción `buildMode`
  - version: 7.0.0
    date: 2025-10-25
    changes: Añadir configuración de `dictionary`
  - version: 7.0.0
    date: 2025-10-21
    changes: Reemplazar el `middleware` por la configuración de `routing`
  - version: 7.0.0
    date: 2025-10-12
    changes: Añadir opción `formatCommand`
  - version: 6.2.0
    date: 2025-10-12
    changes: Actualizar opción `excludedPath`
  - version: 6.0.2
    date: 2025-09-23
    changes: Añadir opción `outputFormat`
  - version: 6.0.0
    date: 2025-09-21
    changes: Eliminar el campo `dictionaryOutput` y el campo `i18nextResourcesDir`
  - version: 6.0.0
    date: 2025-09-16
    changes: Añadido modo de importación `live`
  - version: 6.0.0
    date: 2025-09-04
    changes: Reemplazar el campo `hotReload` por `liveSync` y agregar los campos `liveSyncPort` y `liveSyncURL`
  - version: 5.6.1
    date: 2025-07-25
    changes: Reemplazar `activateDynamicImport` por la opción `importMode`
  - version: 5.6.0
    date: 2025-07-13
    changes: Cambiar el valor predeterminado de contentDir de `['src']` a `['.']`
  - version: 5.5.11
    date: 2025-06-29
    changes: Agregar comandos `docs`
---

# Documentación de Configuración de Intlayer

## Visión General

Los archivos de configuración de Intlayer permiten la personalización de varios aspectos del plugin, como la internacionalización, middleware y manejo de contenido. Este documento proporciona una descripción detallada de cada propiedad en la configuración.

---

## Tabla de Contenidos

<TOC/>

---

## Soporte de Archivos de Configuración

Intlayer acepta formatos de archivo de configuración JSON, JS, MJS y TS:

- `intlayer.config.ts`
- `intlayer.config.js`
- `intlayer.config.json`
- `intlayer.config.json5`
- `intlayer.config.jsonc`
- `intlayer.config.cjs`
- `intlayer.config.mjs`
- `.intlayerrc`

---

## Archivo de configuración de ejemplo

````typescript fileName="intlayer.config.ts" codeFormat="typescript"
import { Locales, type IntlayerConfig } from "intlayer";
import { nextjsRewrite } from "intlayer/routing";
import { z } from "zod";

/**
 * Example Intlayer configuration file showing all available options.
 */
const config: IntlayerConfig = {
  /**
   * Configuration for internationalization settings.
   */
  internationalization: {
    /**
     * List of supported locales in the application.
     * Default: [Locales.ENGLISH]
     */
    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],

    /**
     * List of required locales that must be defined in every dictionary.
     * If empty, all locales are required in `strict` mode.
     * Default: []
     */
    requiredLocales: [Locales.ENGLISH],

    /**
     * Strictness level for internationalized content.
     * - "strict": Errors if any declared locale is missing or undeclared.
     * - "inclusive": Warnings if a declared locale is missing.
     * - "loose": Accepts any existing locale.
     * Default: "inclusive"
     */
    strictMode: "inclusive",

    /**
     * Default locale used as a fallback if the requested locale is not found.
     * Default: Locales.ENGLISH
     */
    defaultLocale: Locales.ENGLISH,
  },

  /**
   * Settings that control dictionary operations and fallback behavior.
   */
  dictionary: {
    /**
     * Controls how dictionaries are imported.
     * - "static": Statically imported at build time.
     * - "dynamic": Dynamically imported using Suspense.
     * - "fetch": Fetched dynamically via the live sync API.
     * Default: "static"
     */
    importMode: "static",

    /**
     * Strategy for auto-filling missing translations using AI.
     * Can be a boolean or a path pattern to store filled content.
     * Default: true
     */
    fill: true,

    /**
     * Physical location of the dictionary files.
     * - "local": Stored in the local filesystem.
     * - "remote": Stored in the Intlayer CMS.
     * - "hybrid": Stored in the local filesystem and the Intlayer CMS.
     * - "plugin" (or any custom string): Provided by a plugin or a custom source.
     * Default: "local"
     */
    location: "local",

    /**
     * Whether to automatically transform content (e.g., Markdown to HTML).
     * Default: false
     */
    contentAutoTransformation: false,
  },

  /**
   * Routing and middleware configuration.
   */
  routing: {
    /**
     * Locale routing strategy.
     * - "prefix-no-default": Prefix all except the default locale (e.g., /dashboard, /fr/dashboard).
     * - "prefix-all": Prefix all locales (e.g., /en/dashboard, /fr/dashboard).
     * - "no-prefix": No locale in the URL.
     * - "search-params": Use ?locale=...
     * Default: "prefix-no-default"
     */
    mode: "prefix-no-default",

    /**
     * Where to store the user's selected locale.
     * Options: 'cookie', 'localStorage', 'sessionStorage', 'header', or an array of these.
     * Default: ['cookie', 'header']
     */
    storage: ["cookie", "header"],

    /**
     * Base path for the application URLs.
     * Default: ""
     */
    basePath: "",

    /**
     * Custom URL rewriting rules for locale-specific paths.
     */
    rewrite: nextjsRewrite({
      "/[locale]/about": {
        en: "/[locale]/about",
        fr: "/[locale]/a-propos",
      },
    }),
  },

  /**
   * Settings for finding and processing content files.
   */
  content: {
    /**
     * File extensions to scan for dictionaries.
     * Default: ['.content.ts', '.content.js', '.content.json', etc.]
     */
    fileExtensions: [".content.ts", ".content.js", ".content.json"],

    /**
     * Directories where .content files are located.
     * Default: ["."]
     */
    contentDir: ["src"],

    /**
     * Directories where source code is located.
     * Used for build optimization and code transformation.
     * Default: ["."]
     */
    codeDir: ["src"],

    /**
     * Patterns to exclude from scanning.
     * Default: ['node_modules', '.intlayer', etc.]
     */
    excludedPath: ["node_modules"],

    /**
     * Whether to watch for changes and rebuild dictionaries in development.
     * Default: true in development
     */
    watch: true,

    /**
     * Command to format newly created / updated .content files.
     */
    formatCommand: 'npx prettier --write "{{file}}"',
  },

  /**
   * Visual Editor configuration.
   */
  editor: {
    /**
     * Whether the visual editor is enabled.
     * Default: false
     */
    enabled: true,

    /**
     * URL of your application for origin validation.
     * Default: ""
     */
    applicationURL: "http://localhost:3000",

    /**
     * Port for the local editor server.
     * Default: 8000
     */
    port: 8000,

    /**
     * Public URL for the editor.
     * Default: "http://localhost:8000"
     */
    editorURL: "http://localhost:8000",

    /**
     * Intlayer CMS URL.
     * Default: "https://app.intlayer.org"
     */
    cmsURL: "https://app.intlayer.org",

    /**
     * Backend API URL.
     * Default: "https://back.intlayer.org"
     */
    backendURL: "https://back.intlayer.org",

    /**
     * Whether to enable real-time content synchronization.
     * Default: false
     */
    liveSync: true,
  },

  /**
   * AI-powered translation and generation settings.
   */
  ai: {
    /**
     * AI provider to use.
     * Options: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
     * Default: 'openai'
     */
    provider: "openai",

    /**
     * Model to use from the selected provider.
     */
    model: "gpt-4o",

    /**
     * Provider API key.
     */
    apiKey: process.env.OPENAI_API_KEY,

    /**
     * Global context to guide the AI in generating translations.
     */
    applicationContext: "Esta es una aplicación de reserva de viajes.",

    /**
     * Base URL for the AI API.
     */
    baseURL: "http://localhost:3000",

    /**
     * Serialización de datos
     *
     * Opciones:
     * - "json": Estándar, confiable; consume más tokens.
     * - "toon": Menos tokens, menos consistente que JSON.
     *
     * Por defecto: "json"
     */
    dataSerialization: "json",
  },

  /**
   * Build and optimization settings.
   */
  build: {
    /**
     * Build execution mode.
     * - "auto": Automatic build during app build.
     * - "manual": Requires explicit build command.
     * Default: "auto"
     */
    mode: "auto",

    /**
     * Whether to optimize the final bundle by pruning unused dictionaries.
     * Default: true in production
     */
    optimize: true,

    /**
     * Output format for generated dictionary files.
     * Default: ['cjs', 'esm']
     */
    outputFormat: ["cjs", "esm"],

    /**
     * Indicates if the build should check TypeScript types.
     * Default: false
     */
    checkTypes: false,
  },

  /**
   * Logger configuration.
   */
  log: {
    /**
     * Logging level.
     * - "default": Standard logging.
     * - "verbose": Detailed debug logging.
     * - "disabled": No logging.
     * Default: "default"
     */
    mode: "default",

    /**
     * Prefix for all log messages.
     * Default: "[intlayer]"
     */
    prefix: "[intlayer]",
  },

  /**
   * System configuration (Advanced use cases)
   */
  system: {
    /**
     * Directory for storing localization dictionaries.
     */
    dictionariesDir: ".intlayer/dictionary",

    /**
     * Directory for module augmentation.
     */
    moduleAugmentationDir: ".intlayer/types",

    /**
     * Directory for storing unmerged dictionaries.
     */
    unmergedDictionariesDir: ".intlayer/unmerged_dictionary",

    /**
     * Directory for storing dictionary types.
     */
    typesDir: ".intlayer/types",

    /**
     * Directory where main application files are stored.
     */
    mainDir: ".intlayer/main",

    /**
     * Directory where the configuration files are stored.
     */
    configDir: ".intlayer/config",

    /**
     * Directory where the cache files are stored.
     */
    cacheDir: ".intlayer/cache",
  },

  /**
   * Compiler configuration (Advanced use cases)
   */
  compiler: {
    /**
     * Indica si el compilador debe estar habilitado.
     *
     * - false : Deshabilita el compilador.
     * - true : Habilita el compilador.
     * - "build-only" : Omite el compilador durante el desarrollo para acelerar los tiempos de inicio.
     *
     * Por defecto : false
     */
    enabled: true,

    /**
     * Define la ruta de los archivos de salida. Reemplaza `outputDir`.
     *
     * - Las rutas `./` se resuelven de forma relativa al directorio del componente.
     * - Las rutas `/` se resuelven de forma relativa a la raíz del proyecto (`baseDir`).
     *
     * - Incluir la variable `{{locale}}` en la ruta activará la generación de diccionarios separados por locale.
     *
     * Ejemplo:
     * ```ts
     * {
     *   // Crear archivos .content.ts multilingües cerca del componente
     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,
     *
     *   // output: './{{fileName}}{{extension}}', // Equivalente usando una cadena de plantilla
     * }
     * ```
     *
     * ```ts
     * {
     *   // Crear JSON centralizados por locale en la raíz del proyecto
     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
     *
     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Equivalente usando una cadena de plantilla
     * }
     * ```
     *
     * Lista de variables:
     *   - `fileName`: El nombre del archivo.
     *   - `key`: La clave del contenido.
     *   - `locale`: El locale del contenido.
     *   - `extension`: La extensión del archivo.
     *   - `componentFileName`: El nombre del archivo del componente.
     *   - `componentExtension`: La extensión del archivo del componente.
     *   - `format`: El formato del diccionario.
     *   - `componentFormat`: El formato del diccionario del componente.
     *   - `componentDirPath`: La ruta del directorio del componente.
     */
    output: ({ locale, key }) => `compiler/${locale}/${key}.json`,

    /**
     * Indica si los componentes deben guardarse después de ser transformados.
     * De esta manera, el compilador puede ejecutarse una sola vez para transformar la aplicación y luego puede eliminarse.
     */
    saveComponents: false,

    /**
     * Inserta solo el contenido en el archivo generado. Útil para salidas JSON de i18next o ICU MessageFormat por locale.
     */
    noMetadata: false,

    /**
     * Prefijo de clave de diccionario
     */
    dictionaryKeyPrefix: "", // Añadir un prefijo opcional para las claves de diccionario extraídas
  },

  /**
   * Custom schemas to validate the dictionaries content.
   */
  schemas: {
    "my-schema": z.object({
      title: z.string(),
    }),
  },

  /**
   * Plugins configuration.
   */
  plugins: [],
};

export default config;
````

## Referencia de Configuración

Las siguientes secciones describen las diversas configuraciones disponibles para Intlayer.

---

### Configuración de Internacionalización

Define configuraciones relacionadas con la internacionalización, incluyendo los locales disponibles y el local predeterminado para la aplicación.

#### Propiedades

- **locales**:
  - _Tipo_: `string[]`
  - _Por defecto_: `['en']`
  - _Descripción_: La lista de locales soportados en la aplicación.
  - _Ejemplo_: `['en', 'fr', 'es']`

- **requiredLocales**:
  - _Tipo_: `string[]`
  - _Por defecto_: `[]`
  - _Descripción_: La lista de locales requeridos en la aplicación.
  - _Ejemplo_: `[]`
  - _Nota_: Si está vacío, todos los locales son obligatorios en modo `strict`.
  - _Nota_: Asegúrese de que los locales requeridos también estén definidos en el campo `locales`.
- **strictMode**:
  - _Tipo_: `string`
  - _Por defecto_: `inclusive`
  - _Descripción_: Garantiza implementaciones sólidas de contenido internacionalizado usando typescript.
  - _Nota_: Si se establece en "strict", la función de traducción `t` requerirá que cada uno de los locales declarados esté definido. Si falta un locale, o si un locale no está declarado en su configuración, lanzará un error.
  - _Nota_: Si se establece en "inclusive", la función de traducción `t` requerirá que cada uno de los locales declarados esté definido. Si falta un locale, lanzará una advertencia. Pero aceptará si un locale no está declarado en su configuración, pero existe.
  - _Nota_: Si se establece en "loose", la función de traducción `t` aceptará cualquier locale existente.

- **defaultLocale**:
  - _Tipo_: `string`
  - _Por defecto_: `'en'`
  - _Descripción_: El locale predeterminado que se usa como respaldo si no se encuentra el locale solicitado.
  - _Ejemplo_: `'en'`
  - _Nota_: Esto se usa para determinar el locale cuando no se especifica ninguno en la URL, cookie o encabezado.

---

### Configuración del Editor

Define configuraciones relacionadas con el editor integrado, incluyendo el puerto del servidor y el estado activo.

#### Propiedades

- **applicationURL**:
  - _Tipo_: `string`
  - _Por defecto_: `http://localhost:3000`
  - _Descripción_: La URL de la aplicación. Se usa para restringir el origen del editor por razones de seguridad.
  - _Ejemplo_:
    - `'http://localhost:3000'`
    - `'https://example.com'`
    - `process.env.INTLAYER_EDITOR_URL`
  - _Nota_: La URL de la aplicación. Se usa para restringir el origen del editor por razones de seguridad. Si se establece en `'*'`, el editor es accesible desde cualquier origen.

- **port**:
  - _Tipo_: `number`
  - _Por defecto_: `8000`
  - _Descripción_: El puerto utilizado por el servidor del editor visual.

- **editorURL**:
  - _Tipo_: `string`
  - _Por defecto_: `'http://localhost:8000'`
  - _Descripción_: La URL del servidor del editor. Se usa para restringir el origen del editor por razones de seguridad.
    - `'http://localhost:3000'`
    - `'https://example.com'`
    - `process.env.INTLAYER_EDITOR_URL`
  - _Nota_: La URL del servidor del editor a la que se accede desde la aplicación. Se usa para restringir los orígenes que pueden interactuar con la aplicación por razones de seguridad. Si se establece en `'*'`, el editor es accesible desde cualquier origen. Debe configurarse si se cambia el puerto o si el editor está alojado en un dominio diferente.

- **cmsURL**:
  - _Tipo_: `string`
  - _Por defecto_: `'https://intlayer.org'`
  - _Descripción_: La URL del CMS de Intlayer.
  - _Ejemplo_: `'https://intlayer.org'`
  - _Nota_: La URL del CMS de Intlayer.

- **backendURL**:
  - _Tipo_: `string`
  - _Por defecto_: `https://back.intlayer.org`
  - _Descripción_: La URL del servidor backend.
  - _Ejemplo_: `http://localhost:4000`

- **enabled**:
  - _Tipo_: `boolean`
  - _Por defecto_: `true`
  - _Descripción_: Indica si la aplicación interactúa con el editor visual.
  - _Ejemplo_: `process.env.NODE_ENV !== 'production'`
  - _Nota_: Si es verdadero, el editor podrá interactuar con la aplicación. Si es falso, el editor no podrá interactuar con la aplicación. En cualquier caso, el editor solo puede ser habilitado por el editor visual. Deshabilitar el editor para entornos específicos es una forma de reforzar la seguridad.

- **clientId**:
  - _Tipo_: `string` | `undefined`
  - _Por defecto_: `undefined`
  - _Descripción_: clientId y clientSecret permiten que los paquetes de intlayer se autentiquen con el backend utilizando la autenticación oAuth2. Un token de acceso se usa para autenticar al usuario relacionado con el proyecto. Para obtener un token de acceso, visite https://app.intlayer.org/project y cree una cuenta.
  - _Ejemplo_: `true`
  - _Nota_: Importante: El clientId y clientSecret deben mantenerse en secreto y no compartirse públicamente. Asegúrese de guardarlos en un lugar seguro, como variables de entorno.

- **clientSecret**:
  - _Tipo_: `string` | `undefined`
  - _Por defecto_: `undefined`
  - _Descripción_: clientId y clientSecret permiten que los paquetes de intlayer se autentiquen con el backend utilizando la autenticación oAuth2. Se utiliza un token de acceso para autenticar al usuario relacionado con el proyecto. Para obtener un token de acceso, vaya a https://app.intlayer.org/project y cree una cuenta.
  - _Ejemplo_: `true`
  - _Nota_: Importante: El clientId y clientSecret deben mantenerse en secreto y no compartirse públicamente. Por favor, asegúrese de mantenerlos en un lugar seguro, como variables de entorno.

- **dictionaryPriorityStrategy**:
  - _Tipo_: `string`
  - _Por defecto_: `'local_first'`
  - _Descripción_: La estrategia para priorizar los diccionarios en caso de que estén presentes tanto diccionarios locales como remotos. Si se establece en `'distant_first'`, la aplicación priorizará los diccionarios remotos sobre los locales. Si se establece en `'local_first'`, la aplicación priorizará los diccionarios locales sobre los remotos.
  - _Ejemplo_: `'distant_first'`

- **liveSync**:
  - _Tipo_: `boolean`
  - _Por defecto_: `false`
  - _Descripción_: Indica si el servidor de la aplicación debe recargar en caliente el contenido de la aplicación cuando se detecta un cambio en el CMS / Editor Visual / Backend.
  - _Ejemplo_: `true`
  - _Nota_: Por ejemplo, cuando se añade o actualiza un nuevo diccionario, la aplicación actualizará el contenido para mostrarlo en la página.
  - _Nota_: La sincronización en vivo necesita externalizar el contenido de la aplicación a otro servidor. Esto significa que puede afectar ligeramente el rendimiento de la aplicación. Para limitar esto, recomendamos alojar la aplicación y el servidor de sincronización en vivo en la misma máquina. Además, la combinación de sincronización en vivo y `optimize` puede generar un número considerable de solicitudes al servidor de sincronización en vivo. Dependiendo de su infraestructura, recomendamos probar ambas opciones y su combinación.

- **liveSyncPort**:
  - _Tipo_: `number`
  - _Por defecto_: `4000`
  - _Descripción_: El puerto del servidor de sincronización en vivo.
  - _Ejemplo_: `4000`
  - _Nota_: El puerto del servidor de sincronización en vivo.

- **liveSyncURL**:
  - _Tipo_: `string`
  - _Por defecto_: `'http://localhost:{liveSyncPort}'`
  - _Descripción_: La URL del servidor de sincronización en vivo.
  - _Ejemplo_: `'https://example.com'`
  - _Nota_: Apunta a localhost por defecto, pero puede cambiarse a cualquier URL en el caso de un servidor de sincronización en vivo remoto.

### Configuración de Enrutamiento

Configuraciones que controlan el comportamiento del enrutamiento, incluyendo la estructura de la URL, el almacenamiento de locales y el manejo del middleware.

#### Propiedades

- **mode**:
  - _Tipo_: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
  - _Par defecto_: `'prefix-no-default'`
  - _Descripción_: Modo de enrutamiento de URL para el manejo de locales.
  - _Ejemplos_:
    - `'prefix-no-default'`: `/dashboard` (en) o `/fr/dashboard` (fr)
    - `'prefix-all'`: `/en/dashboard` (en) o `/fr/dashboard` (fr)
    - `'no-prefix'`: `/dashboard` (locale gestionado por otros medios)
    - `'search-params'`: `/dashboard?locale=fr`
  - _Nota_: Esta configuración no afecta la gestión de cookies o el almacenamiento de locales.

- **storage**:
  - _Tipo_: `false | 'cookie' | 'localStorage' | 'sessionStorage' | 'header' | CookiesAttributes | StorageAttributes | Array`
  - _Par defecto_: `['cookie', 'header']`
  - _Descripción_: Configuración para almacenar el locale en el cliente.

  - **cookie**:
    - _Descripción_: Almacena datos en cookies, pequeños fragmentos de datos almacenados en el navegador del cliente, accesibles tanto en el lado del cliente como del servidor.
    - _Note_: Para el almacenamiento conforme al RGPD, asegúrese del consentimiento del usuario antes del uso.
    - _Note_: Los parámetros de las cookies son personalizables si se configuran como CookiesAttributes (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`).

  - **localStorage**:
    - _Descripción_: Almacena datos en el navegador sin fechas de expiración, permitiendo la persistencia de datos entre sesiones, accesible solo en el lado del cliente.
    - _Note_: Ideal para almacenar datos a largo plazo, pero tenga en cuenta las implicaciones de privacidad y seguridad.
    - _Note_: El almacenamiento local solo es accesible en el lado del cliente, el proxy de intlayer no podrá acceder a él.
    - _Note_: Los parámetros de almacenamiento local son personalizables si se configuran como StorageAttributes (`{ type: 'localStorage', name: 'custom-locale' }`).

  - **sessionStorage**:
    - _Descripción_: Almacena datos durante la sesión de la página, lo que significa que se borran una vez que se cierra la pestaña o ventana, accesible solo en el lado del cliente.
    - _Note_: Adecuado para el almacenamiento temporal de datos para cada sesión.
    - _Note_: El almacenamiento de locales solo es accesible en el lado del cliente, el proxy de intlayer no podrá acceder a él.
    - _Note_: Los parámetros de almacenamiento local son personalizables si se configuran como StorageAttributes (`{ type: 'sessionStorage', name: 'custom-locale' }`).

  - **header**:
    - _Descripción_: Utiliza encabezados HTTP para almacenar o transmitir datos de locales, adecuado para la determinación del idioma en el lado del servidor.
    - _Note_: Útil en llamadas API para mantener configuraciones de idioma consistentes entre solicitudes.
    - _Note_: El encabezado solo es accesible en el lado del servidor, el lado del cliente no podrá acceder a él.
    - _Note_: El nombre del encabezado es personalizable si se configura como StorageAttributes (`{ type: 'header', name: 'custom-locale' }`).

- **basePath**:
  - _Type_: `string`
  - _Par defecto_: `''`
  - _Descripción_: La ruta base para las URLs de la aplicación.
  - _Exemple_: `'/my-app'`
  - _Note_:
    - Si la aplicación está alojada en `https://example.com/my-app`
    - La ruta base es `'/my-app'`
    - La URL será `https://example.com/my-app/en`
    - Si no se establece la ruta base, la URL será `https://example.com/en`

- **rewrite**:
  - _Type_: `Record<string, StrictModeLocaleMap<string>>`
  - _Par defecto_: `undefined`
  - _Descripción_: Reglas personalizadas de reescritura de URL que sobrescriben el modo de enrutamiento predeterminado para rutas específicas. Permite definir rutas específicas por locale que difieren del comportamiento de enrutamiento estándar. Admite parámetros de ruta dinámicos usando la sintaxis `[param]`.
  - _Ejemplo_:
    ```typescript
    routing: {
      mode: "prefix-no-default", // Estrategia de respaldo
      rewrite: nextjsRewrite({
        "/about": {
          en: "/about",
          fr: "/a-propos",
        },
        "/product/[slug]": {
          en: "/product/[slug]",
          fr: "/produit/[slug]",
        },
        "/blog/[category]/[id]": {
          en: "/blog/[category]/[id]",
          fr: "/journal/[category]/[id]",
        },
      }),
    }
    ```
  - _Note_: Las reglas de reescritura tienen prioridad sobre el comportamiento predeterminado de `mode`. Si una ruta coincide con una regla de reescritura, se usará la ruta localizada de la configuración de reescritura en lugar del prefijo de locale estándar.
  - _Note_: Los parámetros de ruta dinámicos se admiten mediante la notación de corchetes (por ejemplo, `[slug]`, `[id]`). Los valores de los parámetros se extraen automáticamente de la URL y se interpolan en la ruta reescrita.
  - _Note_: Funciona con aplicaciones Next.js y Vite. El middleware/proxy reescribirá automáticamente las solicitudes entrantes para que coincidan con la estructura interna de las rutas.
  - _Note_: Al generar URLs con `getLocalizedUrl()`, las reglas de reescritura se aplican automáticamente si coinciden con la ruta proporcionada.
  - _Reference_: Para obtener más información, consulte [Reescrituras de URL Personalizadas](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/custom_url_rewrites.md).

#### Atributos de Cookie

Cuando use el almacenamiento de cookies, puede configurar atributos de cookies adicionales:

- **name**: Nombre de la cookie (por defecto: `'INTLAYER_LOCALE'`)
- **domain**: Dominio de la cookie (por defecto: undefined)
- **path**: Ruta de la cookie (por defecto: undefined)
- **secure**: Requiere HTTPS (por defecto: undefined)
- **httpOnly**: Bandera HTTP-only (por defecto: undefined)
- **sameSite**: Política SameSite (`'strict' | 'lax' | 'none'`)
- **expires**: Fecha de expiración o días (por defecto: undefined)

#### Atributos de Almacenamiento Local de Locales

Cuando use localStorage o sessionStorage:

- **type**: Tipo de almacenamiento (`'localStorage' | 'sessionStorage'`)
- **name**: Nombre de la clave de almacenamiento (por defecto: `'INTLAYER_LOCALE'`)

#### Ejemplos de Configuración

Aquí hay algunos ejemplos comunes de configuración para la nueva estructura de enrutamiento v8:

**Configuración Básica (Predeterminada)**:

```typescript
import { Locales, type IntlayerConfig } from "intlayer";
// intlayer.config.ts
const config: IntlayerConfig = {
  internationalization: {
    locales: ["en", "fr", "es"],
    defaultLocale: "en",
  },
  routing: {
    mode: "prefix-no-default",
    storage: "localStorage",
    basePath: "",
  },
};

export default config;
```

**Configuración Conforme al RGPD**:

```typescript
import { Locales, type IntlayerConfig } from "intlayer";
// intlayer.config.ts
const config: IntlayerConfig = {
  internationalization: {
    locales: ["en", "fr", "es"],
    defaultLocale: "en",
  },
  routing: {
    mode: "prefix-no-default",
    storage: [
      {
        type: "localStorage",
        name: "user-locale",
      },
      {
        type: "cookie",
        name: "user-locale",
        secure: true,
        sameSite: "strict",
        httpOnly: false,
      },
    ],
    basePath: "",
  },
};

export default config;
```

**Modo de Parámetros de Búsqueda**:

```typescript
import { Locales, type IntlayerConfig } from "intlayer";
// intlayer.config.ts
const config: IntlayerConfig = {
  internationalization: {
    locales: ["en", "fr", "es"],
    defaultLocale: "en",
  },
  routing: {
    mode: "search-params",
    storage: "localStorage",
    basePath: "",
  },
};

export default config;
```

**Modo Sin Prefijo con Almacenamiento Personalizado**:

```typescript
import { Locales, type IntlayerConfig } from "intlayer";
// intlayer.config.ts
const config: IntlayerConfig = {
  internationalization: {
    locales: ["en", "fr", "es"],
    defaultLocale: "en",
  },
  routing: {
    mode: "no-prefix",
    storage: {
      type: "sessionStorage",
      name: "app-locale",
    },
    basePath: "/my-app",
  },
};

export default config;
```

**Reescritura de URL Personalizada con Rutas Dinámicas**:

```typescript
// intlayer.config.ts
import { nextjsRewrite } from "intlayer/routing";

const config: IntlayerConfig = {
  internationalization: {
    locales: ["en", "fr"],
    defaultLocale: "en",
  },
  routing: {
    mode: "prefix-no-default", // Estrategia de respaldo para rutas no reescritas
    storage: "cookie",
    rewrite: nextjsRewrite({
      "/about": {
        en: "/about",
        fr: "/a-propos",
      },
      "/product/[slug]": {
        en: "/product/[slug]",
        fr: "/produit/[slug]",
      },
      "/blog/[category]/[id]": {
        en: "/blog/[category]/[id]",
        fr: "/journal/[category]/[id]",
      },
    }),
  },
};

export default config;
```

---

### Configuración de Contenido

Configuraciones relacionadas con el manejo de contenido dentro de la aplicación, incluyendo nombres de directorios, extensiones de archivos y configuraciones derivadas.

#### Propiedades

- **autoFill**:
  - _Tipo_: `boolean | string | FilePathPattern | { [key in Locales]?: string }`
  - _Por defecto_: `undefined`
  - _Descripción_: Indica cómo debe completarse automáticamente el contenido usando IA. Puede declararse globalmente en el archivo `intlayer.config.ts`.
  - _Ejemplo_: true
  - _Ejemplo_: `'./{{fileName}}.content.json'`
  - _Ejemplo_: `{ fr: './{{fileName}}.fr.content.json', es: './{{fileName}}.es.content.json' }`
  - _Nota_: La configuración de auto completado. Puede ser:
    - booleano: Habilitar auto completado para todas las locales
    - cadena: Ruta a un solo archivo o plantilla con variables
    - objeto: Rutas de archivo por locale

- **watch**:
  - _Tipo_: `boolean`
  - _Por defecto_: `process.env.NODE_ENV === 'development'`
  - _Descripción_: Indica si Intlayer debe vigilar cambios en los archivos de declaración de contenido en la aplicación para reconstruir los diccionarios relacionados.

- **fileExtensions**:
  - _Tipo_: `string[]`
  - _Por defecto_: `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']`
  - _Descripción_: Extensiones de archivo que se buscan al construir los diccionarios.
  - _Ejemplo_: `['.data.ts', '.data.js', '.data.json']`
  - _Nota_: Personalizar las extensiones de archivo puede ayudar a evitar conflictos.

- **contentDir**:
  - _Tipo_: `string[]`
  - _Por defecto_: `['.']`
  - _Ejemplo_: `['src', '../../ui-library', require.resolve("@my-package/content")]`
  - _Descripción_: La ruta del directorio donde se almacenan los archivos de definición de contenido (`.content.*`).
  - _Nota_: Esto se usa para vigilar los archivos de contenido para reconstruir los diccionarios.

- **codeDir**:
  - _Tipo_: `string[]`
  - _Por defecto_: `['.']`
  - _Ejemplo_: `['src', '../../ui-library']`
  - _Descripción_: La ruta del directorio donde se almacena el código, relativa al directorio base.
  - _Nota_: Esto se usa para vigilar los archivos de código para transformar (podar, optimizar). Mantener esto separado de `contentDir` puede mejorar el rendimiento de la compilación al evitar escaneos innecesarios de archivos de contenido.

- **excludedPath**:
  - _Tipo_: `string[]`
  - _Por defecto_: `['**/node_modules/**', '**/dist/**', '**/build/**', '**/.intlayer/**', '**/.next/**', '**/.nuxt/**', '**/.expo/**', '**/.vercel/**', '**/.turbo/**', '**/.tanstack/**']`
  - _Descripción_: Directorios excluidos de la búsqueda de contenido.
  - _Nota_: Esta configuración aún no se utiliza, pero está planificada para una implementación futura.

- **formatCommand**:
  - _Tipo_: `string`
  - _Por defecto_: `undefined`
  - _Descripción_: El comando para formatear el contenido. Cuando Intlayer escribe tus archivos .content localmente, este comando se usará para formatear el contenido.
  - _Ejemplo_: `'npx prettier --write "{{file}}" --log-level silent'` Usando Prettier
  - _Ejemplo_: `'npx biome format "{{file}}" --write --log-level none'` Usando Biome
  - _Ejemplo_: `'npx eslint --fix "{{file}}"  --quiet'` Usando ESLint
  - _Nota_: Intlayer reemplazará {{file}} con la ruta del archivo a formatear.
  - _Nota_: Si no se establece, Intlayer intentará detectar automáticamente el comando de formato. Intentando resolver los siguientes comandos: prettier, biome, eslint.

---

### Configuración del Sistema

Estructura de directorios y resultados de salida de Intlayer. Estas configuraciones son típicamente internas y no deberían necesitar ser modificadas por el usuario.

#### Propiedades

- **baseDir**:
  - _Tipo_: `string`
  - _Por defecto_: `process.cwd()`
  - _Descripción_: El directorio base para el proyecto.
  - _Ejemplo_: `'/ruta/al/proyecto'`
  - _Nota_: Esto se usa para resolver todos los directorios relacionados con Intlayer.

- **dictionariesDir**:
  - _Tipo_: `string`
  - _Por defecto_: `'.intlayer/dictionary'`
  - _Descripción_: La ruta del directorio para almacenar los diccionarios de localización.

- **moduleAugmentationDir**:
  - _Tipo_: `string`
  - _Por defecto_: `'.intlayer/types'`
  - _Descripción_: Directorio para la ampliación de módulos, permitiendo mejores sugerencias en el IDE y verificación de tipos.
  - _Ejemplo_: `'intlayer-types'`
  - _Nota_: Asegúrate de incluir esto en `tsconfig.json`.

- **unmergedDictionariesDir**:
  - _Tipo_: `string`
  - _Por defecto_: `'.intlayer/unmerged_dictionary'`
  - _Descripción_: El directorio para almacenar diccionarios no fusionados.

- **typesDir**:
  - _Tipo_: `string`
  - _Por defecto_: `'.intlayer/types'`
  - _Descripción_: El directorio para almacenar los tipos de diccionario.

- **mainDir**:
  - _Tipo_: `string`
  - _Por defecto_: `'.intlayer/main'`
  - _Descripción_: El directorio donde se almacenan los archivos principales de la aplicación.

- **configDir**:
  - _Tipo_: `string`
  - _Por defecto_: `'.intlayer/config'`
  - _Descripción_: El directorio donde se almacenan los archivos de configuración.

- **cacheDir**:
  - _Tipo_: `string`
  - _Por defecto_: `'.intlayer/cache'`
  - _Descripción_: El directorio donde se almacenan los archivos de caché.

- **outputFilesPatternWithPath**:
  - _Tipo_: `string`
  - _Por defecto_: `'{{dictionariesDir}}/**/*.json'`
  - _Descripción_: Patrón para archivos de salida incluyendo la ruta relativa.

### Configuración del diccionario

Configuraciones que controlan las operaciones del diccionario, incluyendo el comportamiento de auto-relleno y la generación de contenido.

Esta configuración de diccionario sirve para dos propósitos principales:

1. **Valores por defecto**: Define valores por defecto al crear archivos de declaración de contenido
2. **Comportamiento de respaldo**: Proporciona valores de respaldo cuando campos específicos no están definidos, permitiéndote definir el comportamiento de las operaciones del diccionario globalmente

Para más información sobre los archivos de declaración de contenido y cómo se aplican los valores de configuración, consulta la [Documentación del archivo de contenido](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/dictionary/content_file.md).

#### Propiedades

- **fill**
- **description**
- **locale**
- **location**
- **priority**
- **live**
- **schema**
- **title**
- **tags**
- **version**

---

### Configuración del Logger

Configuraciones que controlan el logger, incluyendo el prefijo a usar.

#### Propiedades

- **mode**:
  - _Tipo_: `string`
  - _Por defecto_: `default`
  - _Descripción_: Indica el modo del logger.
  - _Opciones_: `default`, `verbose`, `disabled`
  - _Ejemplo_: `default`
  - _Nota_: El modo del logger. El modo verbose registrará más información, pero puede usarse para propósitos de depuración. El modo disabled desactivará el logger.

- **prefix**:
  - _Tipo_: `string`
  - _Por defecto_: `'[intlayer] '`
  - _Descripción_: El prefijo del logger.
  - _Ejemplo_: `'[my custom prefix] '`
  - _Nota_: El prefijo del registrador.

### Configuración de IA

Configuraciones que controlan las funciones de IA de Intlayer, incluyendo el proveedor, modelo y clave API.

Esta configuración es opcional si estás registrado en el [Panel de Control de Intlayer](https://app.intlayer.org/project) usando una clave de acceso. Intlayer gestionará automáticamente la solución de IA más eficiente y rentable para tus necesidades. Usar las opciones predeterminadas asegura un mejor mantenimiento a largo plazo, ya que Intlayer se actualiza continuamente para usar los modelos más relevantes.

Si prefieres usar tu propia clave API o un modelo específico, puedes definir tu configuración personalizada de IA.
Esta configuración de IA se utilizará globalmente en todo su entorno Intlayer. Los comandos CLI usarán estas configuraciones como valores predeterminados para los comandos (por ejemplo, `fill`), así como el SDK, el Editor Visual y el CMS. Puede anular estos valores predeterminados para casos de uso específicos utilizando parámetros de comando.

Intlayer admite múltiples proveedores de IA para una mayor flexibilidad y elección. Los proveedores actualmente soportados son:

- **OpenAI** (predeterminado)
- **Anthropic Claude**
- **Mistral AI**
- **DeepSeek**
- **Google Gemini**
- **Meta Llama**
- **Ollama**
- **OpenRouter**
- **Alibaba Cloud**
- **Fireworks**
- **Hugging Face**
- **Groq**
- **Amazon Bedrock**
- **Google AI Studio**
- **Google Vertex**
- **Together.ai**
- **ollama**

#### Propiedades

- **provider** :
  - _Tipo_ : `string`
  - _Par defecto_ : `'openai'`
  - _Descripción_ : El proveedor que se utilizará para las funciones de IA de Intlayer.
  - _Opciones_ : `'openai'`, `'anthropic'`, `'mistral'`, `'deepseek'`, `'gemini'`, `'ollama'`, `'openrouter'`, `'alibaba'`, `'fireworks'`, `'groq'`, `'huggingface'`, `'bedrock'`, `'googleaistudio'`, `'googlevertex'`, `'togetherai'`
  - _Ejemplo_ : `'anthropic'`
  - _Nota_: Diferentes proveedores pueden requerir diferentes claves de API y tener diferentes modelos de precios.

- **model** :
  - _Tipo_ : `string`
  - _Par defecto_ : Ninguno
  - _Descripción_ : El modelo que se utilizará para las funciones de IA de Intlayer.
  - _Ejemplo_ : `'gpt-4o-2024-11-20'`
  - _Nota_ : El modelo específico que se utilizará varía según el proveedor.

- **temperature** :
  - _Tipo_ : `number`
  - _Par defecto_ : Ninguna
  - _Descripción_ : La temperatura controla la aleatoriedad de las respuestas de la IA.
  - _Ejemplo_ : `0.1`
  - _Nota_ : Una temperatura más alta hará que la IA sea más creativa y menos predecible.

- **apiKey** :
  - _Tipo_ : `string`
  - _Par defecto_ : Ninguna
  - _Descripción_ : Tu clave de API para el proveedor seleccionado.
  - _Ejemplo_ : `process.env.OPENAI_API_KEY`
  - _Nota_ : Importante: Las claves de API deben mantenerse en secreto y no compartirse públicamente. Asegúrate de guardarlas en un lugar seguro, como variables de entorno.

- **applicationContext** :
  - _Tipo_ : `string`
  - _Par defecto_ : Ninguno
  - _Descripción_ : Proporciona contexto adicional sobre tu aplicación al modelo de IA, ayudándole a generar traducciones más precisas y contextualmente adecuadas. Esto puede incluir información sobre el dominio de tu aplicación, el público objetivo, el tono o terminología específica.
  - _Note_: Puedes usarlo para añadir más reglas al modelo de IA (por ejemplo, "No debes transformar las URLs").
  - _Ejemplo_ : `'Mi contexto de aplicación'`

- **baseURL** :
  - _Tipo_ : `string`
  - _Par defecto_ : Ninguna
  - _Descripción_ : La URL base para la API de IA.
  - _Ejemplo_ : `'https://api.openai.com/v1'`
  - _Exemple_ : `'http://localhost:5000'`
  - _Nota_ : Puede usarse para apuntar a un punto final de API de IA local o personalizado.

- **dataSerialization**:
  - _Type_: `'json' | 'toon'`
  - _Par defecto_: `'json'`
  - _Descripción_: El formato de serialización de datos que se utilizará para las funciones de IA de Intlayer.
  - _Ejemplo_: `'toon'`
  - _Note_: `json`: Estándar, confiable; utiliza más tokens. `toon`: Menos tokens, menos consistente que el JSON.
    > Si proporcionas parámetros adicionales, Intlayer los pasará al modelo de IA como contexto. Esto se puede usar para personalizar el esfuerzo de razonamiento, la verbosidad del texto, etc.

### Configuración de Build

Configuraciones que controlan cómo Intlayer optimiza y construye la internacionalización de tu aplicación.

Las opciones de compilación se aplican a los plugins `@intlayer/babel` y `@intlayer/swc`.

> En modo de desarrollo, Intlayer utiliza importaciones estáticas para los diccionarios para simplificar la experiencia de desarrollo.

> Cuando se optimiza, Intlayer reemplazará las llamadas a los diccionarios para optimizar la división, de modo que el paquete final solo importe los diccionarios que realmente se utilizan.

#### Propiedades

- **mode** :
  - _Tipo_ : `'auto' | 'manual'`
  - _Par defecto_ : `'auto'`
  - _Descripción_ : Controla el modo del build.
  - _Ejemplo_ : `'manual'`
  - _Nota_ : Si es 'auto', el build se activará automáticamente durante la construcción de la aplicación.
  - _Nota_ : Si es 'manual', el build solo se activará cuando se ejecute la orden de construcción.
  - _Nota_ : Se puede usar para desactivar la construcción de diccionarios, por ejemplo, cuando se debe evitar la ejecución en un entorno Node.js.

- **checkTypes**:
  - _Tipo_: `boolean`
  - _Por defecto_: `false`
  - _Descripción_: Indica si la compilación debe comprobar los tipos de TypeScript y registrar errores.
  - _Nota_: Esto puede ralentizar la compilación.

- **optimize** :
  - _Tipo_ : `boolean`
  - _Par defecto_ : `undefined`
  - _Descripción_ : Controla si el build debe optimizarse.
  - _Ejemplo_ : `process.env.NODE_ENV === 'production'`
  - _Note_ : Por defecto, la optimización del build no está fijada. Si no se define, Intlayer activará la optimización del build durante la construcción de tu aplicación (vite / nextjs / etc). Establecerlo en `true` forzará la optimización del build, incluso en modo de desarrollo. Establecerlo en `false` desactivará la optimización del build.
  - _Nota_ : Cuando se habilita, Intlayer reemplazará todas las llamadas a los diccionarios para optimizar la división. Por lo tanto, el paquete final solo importará los diccionarios utilizados. Todas las importaciones seguirán siendo importaciones estáticas para evitar el procesamiento asíncrono al cargar los diccionarios.
  - _Nota_ : Intlayer reemplazará todas las llamadas de `useIntlayer` por el modo definido a través de la opción `importMode` y `getIntlayer` por `getDictionary`.
  - _Nota_ : Esta opción depende de los plugins `@intlayer/babel` y `@intlayer/swc`.
  - _Nota_ : Asegúrate de que todas las claves se declaren estáticamente en las llamadas a `useIntlayer`. Por ejemplo, `useIntlayer('navbar')`.

- **outputFormat** :
  - _Type_ : `('esm' | 'cjs')[]`
  - _Par defecto_ : `['cjs', 'esm']`
  - _Descripción_ : Controla el formato de salida de los diccionarios.
  - _Ejemplo_ : `'cjs'`
  - _Nota_ : El formato de salida de los diccionarios.

- **traversePattern** :
  - _Tipo_ : `string[]`
  - _Par defecto_ : `['**\/*.{js,ts,mjs,cjs,jsx,tsx}', '!**\/node_modules/**']`
  - _Descripción_ : Patrones que definen qué archivos deben recorrerse durante la optimización.
    - _Ejemplo_ : `['src/**\/*.{ts,tsx}', '../ui-library/**\/*.{ts,tsx}', '!**/node_modules/**']`
  - _Nota_ : Usa esto para limitar la optimización a los archivos de código relevantes y mejorar el rendimiento de la construcción.
  - _Nota_ : Esta opción se ignorará si `optimize` está desactivado.
  - _Nota_ : Usa un patrón glob.

---

### Configuración del compilador

Ajustes que controlan el compilador Intlayer, que extrae diccionarios directamente de sus componentes.

#### Propiedades

- **enabled**:
  - _Tipo_: `boolean | 'build-only'`
  - _Por defecto_: `true`
  - _Descripción_: Indica si el compilador debe estar habilitado para extraer los diccionarios.
  - _Ejemplo_: `'build-only'`
  - _Nota_: Establecerlo en `'build-only'` saltará el compilador durante el modo de desarrollo para acelerar los tiempos de inicio. Solo se ejecutará en los comandos de construcción.

- **dictionaryKeyPrefix**:
  - _Tipo_: `string`
  - _Por defecto_: `''`
  - _Descripción_: Prefijo para las claves de diccionario extraídas.
  - _Ejemplo_: `'my-key-'`
  - _Nota_: Cuando se extraen diccionarios, la clave se genera a partir del nombre del archivo. Este prefijo se añade a la clave generada para evitar conflictos.

- **saveComponents**:
  - _Tipo_: `boolean`
  - _Por defecto_: `false`
  - _Descripción_: Indica si los componentes deben guardarse después de ser transformados.
  - _Nota_: Si es verdadero, el compilador reemplazará los archivos originales con los archivos transformados. De esa manera, el compilador puede ejecutarse solo una vez para transformar la aplicación y luego puede eliminarse.

- **transformPattern**:
  - _Tipo_: `string | string[]`
  - _Por defecto_: `['**/*.{ts,tsx,jsx,js,cjs,mjs,svelte,vue}', '!**/node_modules/**']`
  - _Descripción_: Patrones que definen qué archivos deben ser recorridos durante la optimización.
  - _Ejemplo_: `['src/**/*.{ts,tsx}', '!**/node_modules/**']`
  - _Nota_: Use esto para limitar la optimización a archivos de código relevantes y mejorar el rendimiento de la construcción.

- **excludePattern**:
  - _Tipo_: `string | string[]`
  - _Por defecto_: `['**/node_modules/**']`
  - _Descripción_: Patrones que definen qué archivos deben excluirse durante la optimización.
  - _Ejemplo_: `['**/node_modules/**', '!**/node_modules/react/**']`

- **output**:
  - _Type_: `FilePathPattern`
  - _Par defecto_: `undefined`
  - _Descripción_: Define la ruta de los archivos de salida. Reemplaza `outputDir`. Maneja variables dinámicas a través de cadenas de plantillas o una función. Variables compatibles: `{{fileName}}`, `{{key}}`, `{{locale}}`, `{{extension}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{format}}`, `{{componentFormat}}` y `{{componentDirPath}}`.
  - _Nota_: Las rutas `./` se resuelven de forma relativa al directorio del componente. Las rutas `/` se resuelven de forma relativa a la raíz del proyecto (`baseDir`).
  - _Nota_: Incluir la variable `{{locale}}` en la ruta activará la generación de diccionarios separados por locale.
  - _Ejemplo_:
    - **Archivos multilingües cerca del componente** :
    - Cadena : `'./{{fileName}}{{extension}}'`
    - Función : `({ fileName, extension }) => \`./${fileName}${extension}\``

    - **JSON centralizado por locale** :
    - Cadena : `'/locales/{{locale}}/{{key}}.content.json'`
    - Función : `({ key, locale }) => \`/locales/${locale}/${key}.content.json\``

- **noMetadata**:
  - _Tipo_: `boolean`
  - _Par defecto_: `false`
  - _Descripción_: Indica si los metadatos deben guardarse en el archivo. Si es verdadero, el compilador no guardará los metadatos de los diccionarios (clave, contenedor de contenido). Útil para las salidas JSON de i18next o ICU MessageFormat por locale.
  - _Nota_: Útil si se usa con el plugin `loadJSON`.
  - _Ejemplo_:
    Si es `true` :
    ```json
    {
      "key": "value"
    }
    ```
    Si es `false`:
    ```json
    {
      "key": "value",
      "content": {
        "key": "value"
      }
    }
    ```
