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. Entornos
    3. Analog
    Creación:2025-04-18Última actualización:2026-05-06
    Ver la plantilla de aplicación en GitHub

    Esta página tiene una plantilla de aplicación disponible.

    Ver la aplicación de demostración

    Esta página enlaza a una demo en vivo de la plantilla.

    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. "Actualizar el uso de la API useIntlayer de Solid para el acceso directo a las propiedades"
      v8.9.04/5/2026
    2. "Inicio del historial"
      v8.0.426/1/2026

    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

    Traduce tu aplicación Analog (Angular) con Intlayer | Internacionalización (i18n)

    ide.intlayer.org
    intlayer-analog-template.vercel.app

    Tabla de contenidos

    ¿Qué es Intlayer?

    Intlayer es una biblioteca de internacionalización (i18n) innovadora y de código abierto diseñada para simplificar el soporte multilingüe en aplicaciones web modernas.

    Con Intlayer, puedes:

    • Gestionar fácilmente las traducciones utilizando diccionarios declarativos a nivel de componente.
    • Localizar dinámicamente metadatos, rutas y contenido.
    • Garantizar el soporte de TypeScript con tipos autogenerados, mejorando el autocompletado y la detección de errores.
    • Beneficiarte de funciones avanzadas, como la detección y el cambio dinámico de idioma.

    Guía paso a paso para configurar Intlayer en una aplicación Analog

    Ver Plantilla de Aplicación en GitHub.

    Paso 1: Instalar dependencias

    Instala los paquetes necesarios usando npm:

    bash
    Copiar código

    Copiar el código al portapapeles

    npm install intlayer angular-intlayer vite-intlayernpx intlayer init
    • intlayer

      El paquete principal que proporciona herramientas de internacionalización para la gestión de la configuración, traducción, declaración de contenido, transpilación y comandos de CLI.

    • angular-intlayer El paquete que integra Intlayer con la aplicación Angular. Proporciona proveedores de contexto y hooks para la internacionalización de Angular.

    • vite-intlayer El paquete que integra Intlayer con Vite. Proporciona un complemento para manejar archivos de declaración de contenido y establece alias para un rendimiento óptimo.

    Paso 2: Configuración de tu proyecto

    Crea un archivo de configuración para configurar los idiomas de tu aplicación:

    intlayer.config.ts
    Copiar código

    Copiar el código al portapapeles

    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [
          Locales.ENGLISH,
          Locales.FRENCH,
          Locales.SPANISH,
          // Tus otros idiomas
        ],
        defaultLocale: Locales.ENGLISH,
      },
    };
    
    export default config;
    A través de este archivo de configuración, puedes configurar URLs localizadas, redirección de middleware, nombres de cookies, la ubicación y extensión de tus declaraciones de contenido, desactivar los registros de Intlayer en la consola y más. Para obtener una lista completa de los parámetros disponibles, consulta la documentación de configuración.

    Paso 3: Integrar Intlayer en tu configuración de Vite

    Para integrar Intlayer con Analog, necesitas usar el complemento vite-intlayer.

    Modifica tu archivo vite.config.ts:

    vite.config.ts
    Copiar código

    Copiar el código al portapapeles

    import { defineConfig } from "vite";import { intlayer } from "vite-intlayer";import analog from "@analogjs/platform";// https://vitejs.dev/config/export default defineConfig(() => ({  plugins: [    analog(),    intlayer(), // Añadir el complemento Intlayer  ],}));
    El complemento intlayer() configura Vite con Intlayer. Maneja los archivos de declaración de contenido y establece alias para un rendimiento óptimo.

    Paso 4: Declarar tu contenido

    Crea y gestiona tus declaraciones de contenido para almacenar traducciones:

    Tus declaraciones de contenido se pueden definir en cualquier lugar de tu aplicación, siempre que se incluyan en el directorio contentDir (por defecto, ./src). Y coincidan con la extensión del archivo de declaración de contenido (por defecto, .content.{json,ts,tsx,js,jsx,mjs,cjs}).
    Para más detalles, consulta la documentación de declaración de contenido.

    Paso 5: Utilizar Intlayer en tu código

    Para utilizar las funciones de internacionalización de Intlayer en toda tu aplicación Analog, debes proporcionar Intlayer en la configuración de tu aplicación.

    src/app/app.config.ts
    Copiar código

    Copiar el código al portapapeles

    import { ApplicationConfig } from "@angular/core";import { provideIntlayer } from "angular-intlayer";export const appConfig: ApplicationConfig = {  providers: [    provideIntlayer(), // Añade el proveedor de Intlayer aquí  ],};

    Luego, puedes usar la función useIntlayer dentro de cualquier componente.

    src/app/pages/index.page.ts
    Copiar código

    Copiar el código al portapapeles

    import { Component } from "@angular/core";import { useIntlayer } from "angular-intlayer";@Component({  selector: "app-home",  standalone: true,  template: `    <div class="content">      <h1>{{ content().title }}</h1>      <p>{{ content().congratulations }}</p>    </div>  `,})export default class HomeComponent {  content = useIntlayer("app");}

    El contenido de Intlayer se devuelve como un Signal, por lo que accedes a los valores llamando al signal: content().title.

    (Opcional) Paso 6: Cambiar el idioma de tu contenido

    Para cambiar el idioma de tu contenido, puedes usar la función setLocale proporcionada por la función useLocale. Esto te permite establecer la locale de la aplicación y actualizar el contenido en consecuencia.

    Crea un componente para cambiar entre idiomas:

    src/app/locale-switcher.component.ts
    Copiar código

    Copiar el código al portapapeles

    import { Component } from "@angular/core";import { CommonModule } from "@angular/common";import { useLocale } from "angular-intlayer";@Component({  selector: "app-locale-switcher",  standalone: true,  imports: [CommonModule],  template: `    <div class="locale-switcher">      <select        [value]="locale()"        (change)="setLocale($any($event.target).value)"      >        @for (loc of availableLocales; track loc) {          <option [value]="loc">{{ loc }}</option>        }      </select>    </div>  `,})export class LocaleSwitcherComponent {  localeCtx = useLocale();  locale = this.localeCtx.locale;  availableLocales = this.localeCtx.availableLocales;  setLocale = this.localeCtx.setLocale;}

    Luego, usa este componente en tus páginas:

    src/app/pages/index.page.ts
    Copiar código

    Copiar el código al portapapeles

    import { Component } from "@angular/core";import { useIntlayer } from "angular-intlayer";import { LocaleSwitcherComponent } from "../locale-switcher.component";@Component({  selector: "app-home",  standalone: true,  imports: [LocaleSwitcherComponent],  template: `    <app-locale-switcher></app-locale-switcher>    <div class="content">      <h1>{{ content().title }}</h1>      <p>{{ content().congratulations }}</p>    </div>  `,})export default class HomeComponent {  content = useIntlayer("app");}

    Configurar TypeScript

    Intlayer utiliza la aumentación de módulos para obtener los beneficios de TypeScript y fortalecer tu base de código.

    Autocompletado

    Error de traducción

    Asegúrate de que tu configuración de TypeScript incluya los tipos autogenerados.

    tsconfig.json
    Copiar código

    Copiar el código al portapapeles

    {  // ... Tus configuraciones de TypeScript existentes  "include": [    // ... Tus configuraciones de TypeScript existentes    ".intlayer/**/*.ts", // Incluir los tipos autogenerados  ],}

    Configuración de Git

    Se recomienda ignorar los archivos generados por Intlayer. Esto te permite evitar subirlos a tu repositorio de Git.

    Para hacer esto, puedes añadir las siguientes instrucciones a tu archivo .gitignore:

    bash
    Copiar código

    Copiar el código al portapapeles

    #  Ignorar los archivos generados por Intlayer.intlayer

    Extensión de VS Code

    Para mejorar tu experiencia de desarrollo con Intlayer, puedes instalar la Extensión oficial de Intlayer para VS Code.

    Instalar desde el Marketplace de VS Code

    Esta extensión proporciona:

    • Autocompletado para las claves de traducción.
    • Detección de errores en tiempo real para traductions faltantes.
    • Vistas previas en línea del contenido traducido.
    • Acciones rápidas para crear y actualizar traducciones fácilmente.

    Para más detalles sobre cómo usar la extensión, consulta la documentación de la extensión de Intlayer para VS Code.


    Ir más allá

    Para ir más allá, puedes implementar el editor visual o externalizar tu contenido utilizando el CMS.

    Angular 19 (Webpack)
    React CRA
    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.

      npm install intlayer angular-intlayer vite-intlayernpx intlayer init
      import { defineConfig } from "vite";import { intlayer } from "vite-intlayer";import analog from "@analogjs/platform";// https://vitejs.dev/config/export default defineConfig(() => ({  plugins: [    analog(),    intlayer(), // Añadir el complemento Intlayer  ],}));
      import { ApplicationConfig } from "@angular/core";import { provideIntlayer } from "angular-intlayer";export const appConfig: ApplicationConfig = {  providers: [    provideIntlayer(), // Añade el proveedor de Intlayer aquí  ],};
      import { Component } from "@angular/core";import { useIntlayer } from "angular-intlayer";@Component({  selector: "app-home",  standalone: true,  template: `    <div class="content">      <h1>{{ content().title }}</h1>      <p>{{ content().congratulations }}</p>    </div>  `,})export default class HomeComponent {  content = useIntlayer("app");}
      import { Component } from "@angular/core";import { CommonModule } from "@angular/common";import { useLocale } from "angular-intlayer";@Component({  selector: "app-locale-switcher",  standalone: true,  imports: [CommonModule],  template: `    <div class="locale-switcher">      <select        [value]="locale()"        (change)="setLocale($any($event.target).value)"      >        @for (loc of availableLocales; track loc) {          <option [value]="loc">{{ loc }}</option>        }      </select>    </div>  `,})export class LocaleSwitcherComponent {  localeCtx = useLocale();  locale = this.localeCtx.locale;  availableLocales = this.localeCtx.availableLocales;  setLocale = this.localeCtx.setLocale;}
      import { Component } from "@angular/core";import { useIntlayer } from "angular-intlayer";import { LocaleSwitcherComponent } from "../locale-switcher.component";@Component({  selector: "app-home",  standalone: true,  imports: [LocaleSwitcherComponent],  template: `    <app-locale-switcher></app-locale-switcher>    <div class="content">      <h1>{{ content().title }}</h1>      <p>{{ content().congratulations }}</p>    </div>  `,})export default class HomeComponent {  content = useIntlayer("app");}
      {  // ... Tus configuraciones de TypeScript existentes  "include": [    // ... Tus configuraciones de TypeScript existentes    ".intlayer/**/*.ts", // Incluir los tipos autogenerados  ],}
      #  Ignorar los archivos generados por Intlayer.intlayer