Documentación de Configuración de Intlayer

    Descripción General

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


    Soporte para Archivos de Configuración

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

    • intlayer.config.ts
    • intlayer.config.js
    • intlayer.config.json
    • intlayer.config.cjs
    • intlayer.config.mjs
    • .intlayerrc

    Ejemplo de archivo de configuración

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [Locales.ESPAÑOL],
      },
      content: {
        typesDir: "content/types",
      },
      middleware: {
        noPrefix: false,
      },
    };
    
    export default config;

    Referencia de Configuración

    Las siguientes secciones describen las diversas configuraciones disponibles para Intlayer.


    Configuración de Internacionalización

    Define la configuración relacionada con la internacionalización, incluyendo los locales disponibles y el locale predeterminado para la aplicación.

    Propiedades

    • locales:
      • Tipo: string[]
      • Predeterminado: ['es']
      • Descripción: La lista de locales soportados en la aplicación.
      • Ejemplo: ['es', 'fr', 'en']
    • strictMode:

      • Tipo: string
      • Predeterminado: required_only
      • Descripción: Asegura implementaciones sólidas de contenido internacionalizado usando typescript.
      • Nota: Si se establece en "strict", la función de traducción t requerirá que cada locale declarado 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 "required_only", la función de traducción t requerirá que cada locale declarado 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
      • Predeterminado: 'es'
      • Descripción: El locale predeterminado utilizado como fallback si el locale solicitado no se encuentra.
      • Ejemplo: 'es'
      • Nota: Esto se usa para determinar el locale cuando ninguno está especificado en la URL, cookie, o cabecera.

    Configuración del Editor

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

    Propiedades

    • backendURL:

      • Tipo: string
      • Predeterminado: https://back.intlayer.org
      • Descripción: La URL del servidor backend.
      • Ejemplo: http://localhost:4000
    • enabled:

      • Tipo: boolean
      • Predeterminado: true
      • Descripción: Indica si el editor está activo.
      • Ejemplo: true
      • Nota: Puede establecerse utilizando NODE_ENV, o otra variable de entorno dedicada.
    • clientId:

      • Tipo: string | undefined
      • Predeterminado: undefined
      • Descripción: clientId y clientSecret permiten a los paquetes de intlayer autenticarse con el backend usando autenticación oAuth2. Se usa un token de acceso para autenticar al usuario relacionado con el proyecto. Para obtener un token de acceso, dirígete a https://back.intlayer.org/dashboard/project y crea una cuenta.
      • Ejemplo: true
      • Nota: Importante: El clientId y el clientSecret deben mantenerse en secreto y no compartirse públicamente. Asegúrate de mantenerlos en un lugar seguro, como variables de entorno.
    • clientSecret:

      • Tipo: string | undefined
      • Predeterminado: undefined
      • Descripción: clientId y clientSecret permiten a los paquetes de intlayer autenticarse con el backend usando autenticación oAuth2. Se usa un token de acceso para autenticar al usuario relacionado con el proyecto. Para obtener un token de acceso, dirígete a https://back.intlayer.org/dashboard/project y crea una cuenta.
      • Ejemplo: true
      • Nota: Importante: El clientId y el clientSecret deben mantenerse en secreto y no compartirse públicamente. Asegúrate de mantenerlos en un lugar seguro, como variables de entorno.

    Configuración de Middleware

    Configuraciones que controlan el comportamiento del middleware, incluyendo cómo la aplicación maneja cookies, cabeceras, y prefijos de URL para la gestión de locales.

    Propiedades

    • headerName:
      • Tipo: string
      • Predeterminado: 'x-intlayer-locale'
      • Descripción: El nombre de la cabecera HTTP utilizada para determinar el locale.
      • Ejemplo: 'x-custom-locale'
      • Nota: Esto es útil para la determinación del locale basada en API.
    • cookieName:
      • Tipo: string
      • Predeterminado: 'intlayer-locale'
      • Descripción: El nombre de la cookie utilizada para almacenar el locale.
      • Ejemplo: 'custom-locale'
      • Nota: Usado para persistir el locale a través de sesiones.
    • prefixDefault:
      • Tipo: boolean
      • Predeterminado: true
      • Descripción: Si incluir el locale predeterminado en la URL.
      • Ejemplo: false
      • Nota: Si false, las URLs para el locale predeterminado no tendrán un prefijo de locale.
    • basePath:
      • Tipo: string
      • Predeterminado: ''
      • Descripción: La ruta base para las URLs de la aplicación.
      • Ejemplo: '/mi-aplicacion'
      • Nota: Esto afecta cómo se construyen las URLs para la aplicación.
    • serverSetCookie:
      • Tipo: string
      • Predeterminado: 'always'
      • Descripción: Regla para establecer la cookie de locale en el servidor.
      • Opciones: 'always', 'never'
      • Ejemplo: 'never'
      • Nota: Controla si la cookie de locale se establece en cada solicitud o nunca.
    • noPrefix:
      • Tipo: boolean
      • Predeterminado: false
      • Descripción: Si omitir el prefijo de locale de las URLs.
      • Ejemplo: true
      • Nota: Si true, las URLs no contendrán información de locale.

    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

    • watch:
      • Tipo: boolean
      • Predeterminado: process.env.NODE_ENV === 'development'
      • Descripción: Indica si Intlayer debe observar cambios en los archivos de declaración de contenido en la aplicación para reconstruir los diccionarios relacionados.
    • fileExtensions:
      • Tipo: string[]
      • Predeterminado: ['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']
      • Descripción: Extensiones de archivo a buscar al construir diccionarios.
      • Ejemplo: ['.data.ts', '.data.js', '.data.json']
      • Nota: Personalizar las extensiones de archivo puede ayudar a evitar conflictos.
    • baseDir:
      • Tipo: string
      • Predeterminado: 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.
    • dictionaryOutput:
      • Tipo: string[]
      • Predeterminado: ['intlayer']
      • Descripción: El tipo de salida del diccionario a utilizar, p.ej., 'intlayer' o 'i18next'.
    • contentDirName:
      • Tipo: string
      • Predeterminado: 'src'
      • Descripción: El nombre del directorio donde se almacena el contenido.
      • Ejemplo: 'data', 'content', 'locales'
      • Nota: Si no está en el nivel del directorio base, actualiza el contentDir.
    • contentDir:

      • Tipo: string
      • DerivedFrom: 'baseDir' / 'contentDirName'
      • Descripción: La ruta del directorio donde se almacena el contenido.
    • resultDirName:
      • Tipo: string
      • Predeterminado: '.intlayer'
      • Descripción: El nombre del directorio donde se almacenan los resultados.
      • Ejemplo: 'outputOFIntlayer'
      • Nota: Si este directorio no está en el nivel base, actualiza resultDir.
    • resultDir:

      • Tipo: string
      • DerivedFrom: 'baseDir' / 'resultDirName'
      • Descripción: La ruta del directorio para almacenar resultados intermedios o de salida.
    • moduleAugmentationDirName:

      • Tipo: string
      • Predeterminado: 'types'
      • Descripción: Directorio para la augmentación de módulos, permitiendo mejores sugerencias de IDE y verificación de tipos.
      • Ejemplo: 'intlayer-types'
      • Nota: Asegúrate de incluir esto en tsconfig.json.
    • moduleAugmentationDir:

      • Tipo: string
      • DerivedFrom: 'baseDir' / 'moduleAugmentationDirName'
      • Descripción: La ruta para la augmentación de módulos y definiciones de tipos adicionales.
    • dictionariesDirName:
      • Tipo: string
      • Predeterminado: 'dictionary'
      • Descripción: Directorio para almacenar diccionarios.
      • Ejemplo: 'translations'
      • Nota: Si no está en el nivel del directorio de resultados, actualiza dictionariesDir.
    • dictionariesDir:

      • Tipo: string
      • DerivedFrom: 'resultDir' / 'dictionariesDirName'
      • Descripción: El directorio para almacenar diccionarios de localización.
    • i18nDictionariesDirName:
      • Tipo: string
      • Predeterminado: 'i18n_dictionary'
      • Descripción: Directorio para almacenar diccionarios i18n.
      • Ejemplo: 'translations'
      • Nota: Si no está en el nivel del directorio de resultados, actualiza i18nDictionariesDir.
      • Nota: Asegúrate de que la salida de los diccionarios i18n incluya i18next para construir los diccionarios para i18next.
    • i18nDictionariesDir:

      • Tipo: string
      • DerivedFrom: 'resultDir' / 'i18nDictionariesDirName'
      • Descripción: El directorio para almacenar diccionarios i18n.
      • Nota: Asegúrate de que este directorio esté configurado para el tipo de salida de i18next.
    • typeDirName:

      • Tipo: string
      • Predeterminado: 'types'
      • Descripción: Directorio para almacenar tipos de diccionario.
      • Ejemplo: 'intlayer-types'
      • Nota: Si no está en el nivel del directorio de resultados, actualiza typesDir.
    • typesDir:

      • Tipo: string
      • DerivedFrom: 'resultDir' / 'typeDirName'
      • Descripción: El directorio para almacenar tipos de diccionario.
    • mainDirName:
      • Tipo: string
      • Predeterminado: 'main'
      • Descripción: Directorio para almacenar archivos principales.
      • Ejemplo: 'intlayer-main'
      • Nota: Si no está en el nivel del directorio de resultados, actualiza mainDir.
    • mainDir:
      • Tipo: string
      • DerivedFrom: 'resultDir' / 'mainDirName'
      • Descripción: El directorio donde se almacenan los archivos principales de la aplicación.
    • excludedPath:
      • Tipo: string[]
      • Predeterminado: ['node_modules']
      • Descripción: Directorios excluidos de la búsqueda de contenido.
      • Nota: Esta configuración aún no se utiliza, pero está planeada para una futura implementación.

    Configuración del Registrador

    Configuraciones que controlan el registrador, incluyendo el nivel de logging y el prefijo a usar.

    Propiedades

    • enabled:
      • Tipo: boolean
      • Predeterminado: true
      • Descripción: Indica si el registrador está habilitado.
      • Ejemplo: true
      • Nota: Puede establecerse utilizando NODE_ENV, o otra variable de entorno dedicada.
    • level:
      • Tipo: 'info' | 'warn' | 'debug' | 'log'
      • Predeterminado: 'log'
      • Descripción: El nivel del registrador.
      • Ejemplo: 'info'
      • Nota: El nivel del registrador. Puede ser 'log', 'info', 'warn', 'error', o 'debug'.
    • prefix:
      • Tipo: string
      • Predeterminado: '[intlayer] '
      • Descripción: El prefijo del registrador.
      • Ejemplo: '[mi prefijo personalizado] '
      • Nota: El prefijo del registrador.

    Si tienes una idea para mejorar esta documentación, no dudes en contribuir enviando una pull request en GitHub.

    Enlace de GitHub a la documentación