La internacionalización (i18n) es el proceso de diseñar una aplicación de manera que pueda ser adaptada fácilmente a diferentes idiomas y regiones sin cambios en el código fuente. Angular proporciona un conjunto de herramientas y técnicas para facilitar este proceso.

Conceptos Clave

  1. Internacionalización (i18n): Proceso de preparar la aplicación para soportar múltiples idiomas.
  2. Localización (l10n): Proceso de adaptar la aplicación a un idioma y región específicos.
  3. Mensajes de Traducción: Textos que se traducen a diferentes idiomas.
  4. Marcadores de Traducción: Etiquetas en el código que indican qué textos deben ser traducidos.

Configuración de i18n en Angular

Paso 1: Añadir Marcadores de Traducción

Para marcar los textos que deben ser traducidos, Angular utiliza el atributo i18n. Este atributo se añade a los elementos HTML que contienen texto.

<h1 i18n="@@welcomeMessage">Welcome to our application!</h1>

Paso 2: Extraer Mensajes de Traducción

Angular CLI proporciona un comando para extraer los mensajes de traducción a un archivo de mensajes.

ng extract-i18n

Este comando genera un archivo messages.xlf en el directorio src/locale. Este archivo contiene todos los textos marcados para traducción.

Paso 3: Traducir Mensajes

El archivo messages.xlf debe ser traducido a los idiomas deseados. Por ejemplo, para traducir al español, se crea un archivo messages.es.xlf.

<trans-unit id="welcomeMessage" datatype="html">
  <source>Welcome to our application!</source>
  <target>¡Bienvenido a nuestra aplicación!</target>
</trans-unit>

Paso 4: Configurar Angular para Usar Traducciones

Se debe configurar Angular para utilizar los archivos de traducción. Esto se hace en el archivo angular.json.

"projects": {
  "your-project-name": {
    "i18n": {
      "sourceLocale": "en",
      "locales": {
        "es": "src/locale/messages.es.xlf"
      }
    }
  }
}

Paso 5: Construir la Aplicación para Diferentes Idiomas

Finalmente, se construye la aplicación para los diferentes idiomas utilizando el comando ng build.

ng build --localize

Este comando genera una versión de la aplicación para cada idioma configurado.

Ejemplo Práctico

Paso 1: Añadir Marcadores de Traducción

<p i18n="@@greeting">Hello, world!</p>

Paso 2: Extraer Mensajes de Traducción

ng extract-i18n

Paso 3: Traducir Mensajes

Archivo messages.es.xlf:

<trans-unit id="greeting" datatype="html">
  <source>Hello, world!</source>
  <target>¡Hola, mundo!</target>
</trans-unit>

Paso 4: Configurar Angular para Usar Traducciones

Archivo angular.json:

"projects": {
  "your-project-name": {
    "i18n": {
      "sourceLocale": "en",
      "locales": {
        "es": "src/locale/messages.es.xlf"
      }
    }
  }
}

Paso 5: Construir la Aplicación para Diferentes Idiomas

ng build --localize

Ejercicio Práctico

Ejercicio

  1. Añade un marcador de traducción a un texto en tu aplicación Angular.
  2. Extrae los mensajes de traducción.
  3. Traduce los mensajes a un idioma de tu elección.
  4. Configura Angular para usar las traducciones.
  5. Construye la aplicación para el idioma traducido.

Solución

  1. Añadir marcador de traducción:
<p i18n="@@farewell">Goodbye!</p>
  1. Extraer mensajes de traducción:
ng extract-i18n
  1. Traducir mensajes (archivo messages.fr.xlf para francés):
<trans-unit id="farewell" datatype="html">
  <source>Goodbye!</source>
  <target>Au revoir!</target>
</trans-unit>
  1. Configurar Angular (archivo angular.json):
"projects": {
  "your-project-name": {
    "i18n": {
      "sourceLocale": "en",
      "locales": {
        "fr": "src/locale/messages.fr.xlf"
      }
    }
  }
}
  1. Construir la aplicación:
ng build --localize

Conclusión

La internacionalización en Angular es un proceso sistemático que implica marcar textos para traducción, extraer mensajes, traducirlos y configurar la aplicación para usar estas traducciones. Siguiendo estos pasos, puedes preparar tu aplicación para soportar múltiples idiomas y regiones, mejorando así su accesibilidad y alcance global.

Curso de Angular

Módulo 1: Introducción a Angular

Módulo 2: Componentes de Angular

Módulo 3: Enlace de Datos y Directivas

Módulo 4: Servicios e Inyección de Dependencias

Módulo 5: Enrutamiento y Navegación

Módulo 6: Formularios en Angular

Módulo 7: Cliente HTTP y Observables

Módulo 8: Gestión de Estado

Módulo 9: Pruebas en Angular

Módulo 10: Conceptos Avanzados de Angular

Módulo 11: Despliegue y Mejores Prácticas

© Copyright 2024. Todos los derechos reservados