InicioEntorno de pruebasExhibiciónAppDocBlog
    • Englishinglés
      EN
    • русскийruso
      RU
    • 日本語japonés
      JA
    • françaisfrancés
      FR
    • 한국어coreano
      KO
    • 中文chino
      ZH
    • españolespañol
      ES
    • Deutschalemán
      DE
    • العربيةárabe
      AR
    • italianoitaliano
      IT
    • British Englishinglés británico
      EN-GB
    • portuguêsportugués
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolaco
      PL
    • Indonesiaindonesio
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraniano
      UK
    /
    Filtrar documentación por framework
    Alt+←
    ¿Por qué Intlayer?
    Empezar
    Concepto
    • Cómo funciona Intlayer
    • Configuración
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visual
    • CMS
    • Integración CI/CD
    • TraducciónPluralEnumeraciónCondiciónGéneroInserciónArchivoAnidaciónMarkdownHTMLObtención de función
    • Archivo por locale
    • Compilador
    • Autocompletado
    • Pruebas
    • Optimización de bundle
    Entornos
    • Next.js 14 y App Router
      Next.js 15
      Next.js sin locale URL
      Next.js y Page Router
      Compiler
    • Tanstack Start Solid
    • Astro y React
      Astro y Svelte
      Astro y Vue
      Astro y Solid
      Astro y Preact
      Astro y Lit
      Astro y Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt y Vue
    • Vite y Solid
    • SvelteKit
    • Vite y Preact
    • Vite y Vanilla JS
    • Vite y Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native y Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx y React
    Plugins
    • JSON
    • gettext (.po)
    Extensión VS Code
    Agente
    • Servidor MCP
    • Habilidades del agente
    Versiones
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Preguntar una pregunta
    1. Documentation
    2. Concepto
    3. Archivo por locale
    Creación:2025-04-18Última actualización:2025-06-29
    Referencia esta doc a tu asistente AI favorito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Haz tu pregunta y obtén un resumen del documento referenciando esta página y el proveedor AI de tu elección

    Historial de versiones

    1. "Historial inicial"
      v5.5.1029/6/2025

    El contenido de esta página ha sido traducido con una IA.

    Ver la última versión del contenido original en inglés
    Editar esta documentación

    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
    Copiar

    Copiar el Markdown del documento a la portapapeles

    Declaración de contenido Por-Locale en Intlayer

    Intlayer soporta dos formas de declarar contenido multilingüe:

    • Archivo único con todas las traducciones
    • Un archivo por locale (formato por-locale)

    Esta flexibilidad permite:

    • Migración sencilla desde otras herramientas i18n
    • Soporte para flujos de trabajo de traducción automatizados
    • Organización clara de las traducciones en archivos separados y específicos por locale

    Archivo único con múltiples traducciones

    Este formato es ideal para:

    • Iteración rápida en el código.
    • Integración fluida con el CMS.

    Este es el enfoque recomendado para la mayoría de los casos de uso. Centraliza las traducciones, facilitando la iteración y la integración con el CMS.

    hello-world.content.ts
    Copiar código

    Copiar el código al portapapeles

    import { t, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      content: {
        multilingualContent: t({
          en: "Title of my component",
          es: "Título de mi componente",
        }),
      },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    Recomendado: Este formato es el mejor cuando se utiliza el editor visual de Intlayer o se gestionan las traducciones directamente en el código.

    Configuración global para archivos por locale

    Puedes configurar la configuración global para archivos por locale agregando lo siguiente a tu archivo intlayer.config.ts:

    ts
    Copiar código

    Copiar el código al portapapeles

    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  dictionary: {    locale: Locales.ENGLISH,  },};export default config;

    Usando esta configuración, todos los archivos por locale se generarán con el locale predeterminado establecido en inglés. También incluye la generación de archivos .content utilizando el comando extract y el compilador. (Consulta Compiler o Extract para más información.)

    Formato por idioma

    Este formato es útil cuando:

    • Deseas versionar o sobrescribir traducciones de forma independiente.
    • Estás integrando flujos de trabajo de traducción automática o humana.

    También puedes dividir las traducciones en archivos individuales por idioma especificando el campo locale:

    hello-world.es.content.ts
    Copiar código

    Copiar el código al portapapeles

    import { t, Locales, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      locale: Locales.SPANISH, // Importante
      content: { multilingualContent: "Título de mi componente" },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    Importante: Asegúrate de que el campo locale esté definido. Indica a Intlayer qué idioma representa el archivo.
    Nota: En ambos casos, el archivo de declaración de contenido debe seguir el patrón de nombres *.content.{ts,tsx,js,jsx,mjs,cjs,json} para ser reconocido por Intlayer. El sufijo .[locale] es opcional y se usa solo como convención de nombres.

    Mezclando formatos

    Puedes combinar ambos enfoques de declaración para la misma clave de contenido. Por ejemplo:

    • Declara tu contenido base de forma estática en un archivo como index.content.ts.
    • Añade o sobrescribe traducciones específicas en archivos separados como index.fr.content.ts o index.content.json.

    Esta configuración es especialmente útil cuando:

    • Quieres definir la estructura inicial del contenido en código.
    • Planeas enriquecer o completar las traducciones más adelante usando el CMS o herramientas automatizadas.
    bash
    Copiar código

    Copiar el código al portapapeles

    .└── Components    └── MyComponent        ├── index.content.ts        ├── index.content.json        └── index.ts

    Ejemplo

    Aquí un archivo de declaración de contenido multilingüe:

    Components/MyComponent/index.content.ts
    Copiar código

    Copiar el código al portapapeles

    import { t, type Dictionary } from "intlayer";const helloWorldContent = {  key: "hello-world",  locale: Locales.ENGLISH,  content: {    multilingualContent: "Título de mi componente",    projectName: "Mi proyecto",  },} satisfies Dictionary;export default helloWorldContent;
    Components/MyComponent/index.content.json
    Copiar código

    Copiar el código al portapapeles

    {  "$schema": "https://intlayer.org/schema.json",  "key": "hello-world",  "content": {    "multilingualContent": {      "nodeType": "translation",      "translation": {        "fr": "Titre de mon composant",        "es": "Título de mi componente"      }    }  }}

    Intlayer combina automáticamente archivos multilingües y por idioma.

    Components/MyComponent/index.ts
    Copiar código

    Copiar el código al portapapeles

    import { getIntlayer, Locales } from "intlayer";const intlayer = getIntlayer("hello-world"); // La configuración regional predeterminada es INGLÉS, por lo que devolverá el contenido en INGLÉSconsole.log(JSON.stringify(intlayer, null, 2));// Resultado:// {//  "multilingualContent": "Título de mi componente",//  "projectName": "Mi proyecto"// }const intlayer = getIntlayer("hello-world", Locales.SPANISH);console.log(JSON.stringify(intlayer, null, 2));// Resultado:// {//  "multilingualContent": "Título de mi componente",//  "projectName": "Mi proyecto"// }const intlayer = getIntlayer("hello-world", Locales.FRENCH);console.log(JSON.stringify(intlayer, null, 2));// Resultado:// {//  "multilingualContent": "Titre de mon composant",//  "projectName": "Mi proyecto"// }

    Generación Automática de Traducciones

    Utilice el intlayer CLI para completar automáticamente las traducciones faltantes según sus servicios preferidos.

    Obtención de función
    Compilador
    Alt+→

    En esta página

      Las conversaciones son anónimas y se revisan regularmente para abordar problemas comunes. No dudes en compartir ideas de funcionalidades, comentarios sobre la documentación o cualquier cosa relacionada con Intlayer, usamos esta información para definir nuestra hoja de ruta y mejorar el producto.

      import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  dictionary: {    locale: Locales.ENGLISH,  },};export default config;
      .└── Components    └── MyComponent        ├── index.content.ts        ├── index.content.json        └── index.ts
      import { t, type Dictionary } from "intlayer";const helloWorldContent = {  key: "hello-world",  locale: Locales.ENGLISH,  content: {    multilingualContent: "Título de mi componente",    projectName: "Mi proyecto",  },} satisfies Dictionary;export default helloWorldContent;
      {  "$schema": "https://intlayer.org/schema.json",  "key": "hello-world",  "content": {    "multilingualContent": {      "nodeType": "translation",      "translation": {        "fr": "Titre de mon composant",        "es": "Título de mi componente"      }    }  }}
      import { getIntlayer, Locales } from "intlayer";const intlayer = getIntlayer("hello-world"); // La configuración regional predeterminada es INGLÉS, por lo que devolverá el contenido en INGLÉSconsole.log(JSON.stringify(intlayer, null, 2));// Resultado:// {//  "multilingualContent": "Título de mi componente",//  "projectName": "Mi proyecto"// }const intlayer = getIntlayer("hello-world", Locales.SPANISH);console.log(JSON.stringify(intlayer, null, 2));// Resultado:// {//  "multilingualContent": "Título de mi componente",//  "projectName": "Mi proyecto"// }const intlayer = getIntlayer("hello-world", Locales.FRENCH);console.log(JSON.stringify(intlayer, null, 2));// Resultado:// {//  "multilingualContent": "Titre de mon composant",//  "projectName": "Mi proyecto"// }