Documentación
Configuración Inicial
Comience agregando el paquete de localización de Angular a su proyecto:
ng add @angular/localize
Este comando realizará los siguientes cambios:
- Agrega el paquete @angular/localize a tus dependencias
- Agrega "@angular/localize/init" al array de polyfills en angular.json
- Agrega la siguiente referencia a tu main.ts:
/// <reference types="@angular/localize" />
También se añadirá la configuración extract-i18n a angular.json:
"extract-i18n": {
"builder": "ng-extract-i18n-merge:ng-extract-i18n-merge",
"options": {
"buildTarget": "your-app:build",
"format": "xlf",
"outputPath": "src/locale",
"includeContext": true,
"resetTranslationState": true,
"targetFiles": [
"messages.fr.xlf",
"messages.vi.xlf"
]
}
}
Nota: Modificaremos el outputPath más adelante en la configuración para que coincida con nuestro flujo de trabajo.
Angular i18n CLI Tool
To simplify the management of Angular i18n configuration, you can use our CLI tool:
npm install --save-dev @softwarity/angular-i18n-cli
This tool provides several features to streamline your i18n workflow:
- Easy initialization of i18n configuration in your Angular project
- Simple addition and removal of locales
- Automatic configuration of build settings for each locale
- Proper setup of XLIFF file formats
Instalar Herramienta de Traducción
Para gestionar archivos de traducción, utilizaremos ng-extract-i18n-merge, que simplifica el proceso de extracción y fusión de traducciones:
npm install --save-dev ng-extract-i18n-merge
Esta herramienta ofrece varias ventajas:
- Extrae automáticamente cadenas traducibles de tu aplicación
- Fusiona nuevas traducciones con las existentes en un solo paso
- Preserva las traducciones existentes durante las actualizaciones
- Soporta múltiples idiomas de destino
Archivos de configuración
package.json
"scripts": {
...
"extract-i18n": "ng extract-i18n",
"build": "ng build --localize"
...
}
angular.json
Actualiza la configuración de i18n en angular.json:
"i18n": {
"sourceLocale": "en",
"locales": {
"fr": {
"translation": "src/locale/messages.fr.xlf"
},
"vi": {
"translation": "src/locale/messages.vi.xlf"
}
}
},
Luego reemplace la configuración estándar de extract-i18n con ng-extract-i18n-merge:
"extract-i18n": {
"builder": "ng-extract-i18n-merge:ng-extract-i18n-merge",
"options": {
"buildTarget": "your-app:build",
"format": "xlf",
"outputPath": "src/locale",
"includeContext": true,
"resetTranslationState": true,
"targetFiles": [
"messages.fr.xlf",
"messages.vi.xlf"
]
}
}
Opciones de configuración importantes:
- buildTarget: El nombre del objetivo de construcción de su aplicación
- rutaDeSalida: Directorio donde se almacenarán los archivos de traducción
- includeContext: Incluye información del archivo fuente en los archivos XLIFF
- restablecerEstadoDeTraducción: Marca todas las traducciones como necesarias para revisión en caso de cambios
- targetFiles: Lista de archivos de traducción a generar/actualizar
Build configurations
Agregue configuraciones para cada idioma en la sección de compilación:
"architect": {
"build": {
"configurations": {
"fr": {
"localize": ["fr"]
},
"vi": {
"localize": ["vi"]
}
}
}
}
Preparar Componentes para Traducción
Para preparar tus componentes para su traducción, necesitas marcar el texto que debe ser traducido. Angular proporciona dos formas de hacer esto:
Documentación de Angular: Marcado de texto para traducción
Aprende más sobre cómo preparar tu aplicación para la traducción.
Translation de Plantilla
Utiliza el atributo i18n en tus plantillas para marcar el texto para su traducción:
<tag attribute="This is a sample attribute text that needs translation."
i18n-attribute="@@ATTRIBUTE_TEXT"
i18n="@@TAG_TEXT">This is a sample text that needs translation.</tag>
// EXAMPLE
<button title="Title button" i18n-title="@@TITLE_BUTTON"i18n="@@LABEL_BUTTON">label button</button>
El @@prefix define un ID personalizado para la traducción. Se recomienda utilizar SNAKE_CASE para mantener la consistencia.
Traducción de Componentes
Para el texto en el código de su componente, utilice la etiqueta de plantilla $localize:
import { Component } from '@angular/core';
@Component({
selector: 'app-example',
template: '...'
})
export class ExampleComponent {
title = $localize`:@@PAGE_TITLE:Welcome to our application`;
errorMessage = $localize`:@@ERROR_MESSAGE:An error occurred while processing your request`;
}
Construcción y servicio
Construir con traducciones
Construya su aplicación con todas las traducciones:
npm run build
O construya para un idioma específico (usando el francés como ejemplo):
ng build --configuration=fr
Servidor de Desarrollo
Sirve tu aplicación con traducciones durante el desarrollo:
ng serve --configuration=fr
⚠️ Nota Importante
Después de añadir nuevo contenido traducible o modificar las traducciones existentes:
ng extract-i18n
- para extraer y actualizar todos los archivos de traducción en un solo paso
Este flujo de trabajo simplificado garantiza que sus archivos de traducción estén siempre actualizados con el contenido fuente, haciendo que el proceso de internacionalización sea más eficiente y libre de errores.