Estudié la nueva función i18n en Angular 9. https://angular.io/guide/i18n
¿Cómo traducir texto en TypeScript, por ejemplo, mensajes de SnackBar?
Consulte este blog https://blog.ninja-squad.com/2019/12/10/angular-localize/
Del documento oficial: https://angular.io/api/localize
@Component({ template: '{{ title }}' }) export class HomeComponent { title = $localize`You have 10 users`; }Y
Tienes que agregarlo manualmente a tus mensajes.fr.xlf
<trans-unit id="6480943972743237078"> <source>You have 10 users</source> <target>Vous avez 10 utilisateurs</target> </trans-unit>no olvide reservar su aplicación angular.
ACTUALIZAR PARA IDENTIFICACIÓN
@Component({ template: '{{ title }}' }) export class HomeComponent { title = $localize`:@@6480943972743237078:`; }La mejor manera de translationId es:
title = $localize`:@@Home.Title:Some title text`y debe agregarlo manualmente a sus mensajes.xx.xlf (por ejemplo, mensajes.fr.xlf, etc.)
<trans-unit id="Home.Title"> <source>Some title text</source> <target>TRANSLATION_HERE</target> </trans-unit>Aquí hay algunos scripts que se pueden usar para extraer las localizaciones laterales de html + ts a un archivo xlf. Entonces usas $localize como sugiere @Cyclion. Esta solución utiliza el paquete locl cli de Ocombe https://www.npmjs.com/package/@locl/cli Primero debe compilar su proyecto sin localización.
ng build ProjectName --localize=falseLuego puede extraer traducciones de archivos "binary js" usando la herramienta locl. Uso la versión 0.0.1-beta.6 porque no genera partes de destino en el archivo xlf. Esas partes de destino arruinarán la fusión con xlf-merge. Y también la herramienta ng xi18n tampoco genera esas partes de destino, por lo que la estructura es consistente después de la fusión.
npx locl extract -s='dist/ProjectName/**/*.js' -f=xlf -o='projects/ProjectName/src/locale/messages_extracted.xlf' --locale=fiLuego puede combinar el resultado ng xi18n y este resultado. Esto contiene todas las traducciones de html y ts pero sin los metadatos que proporciona el comando ng xi18n de las traducciones del lado html. Yo uso xlf-merge para esto.
xlf-merge ./projects/ProjectName/src/locale/messages_extracted.xlf projects/ProjectName/src/locale/messages.xlf -o projects/ProjectName/src/locale/messages.xlfEste comando de combinación agregará todas las traducciones del lado ts faltantes al final del archivo message.xlf
Aquí está el guión completo.
ng xi18n --project=ProjectName --output-path src/locale && ng build ProjectName --localize=false && npx locl extract -s='dist/ProjectName/**/*.js' -f=xlf -o='projects/ProjectName/src/locale/messages_extracted.xlf' --locale=fi && xlf-merge ./projects/ProjectName/src/locale/messages_extracted.xlf projects/ProjectName/src/locale/messages.xlf -o projects/ProjectName/src/locale/messages.xlfY después de estos pasos, tiene todas las etiquetas de traducción en mensajes.xlf. Luego, debe generar/traducir cada archivo de idioma utilizando, por ejemplo, la herramienta xliffmerge.