Decidimos darle una vuelta y comenzamos un nuevo proyecto usando Angular2. Hasta ahora todo bien, pero en este punto nos enfrentamos a un problema. En este punto, ¿cuál es el enfoque adecuado para i18n para Angular2? Investigamos un poco y encontramos esto:
Sin embargo, la última confirmación tiene más de 5 meses... No parece un desarrollo activo.
¿Alguien intentó usar angular-translate o angular-gettext? ¿O tal vez con Angular2 es mejor envolver algo JS como i18next? ¿Alguien podría compartir sus pensamientos? ¿Quizás enfrentaste el mismo problema?
Plunk se actualizó a Angular 2 Final : https://plnkr.co/edit/4euRQQ . Las cosas parecen funcionar igual que en RC7.
Se ha agregado una nueva sección i18n a los documentos oficiales de Angular 2. Básicamente, explica en detalle lo que sucede en el plunkr anterior.
XLIFF es el único formato para traducciones, no admite json . Se debe crear un archivo fuente de traducción (xliff, xlf) usando la herramienta ng-xi18n :
paquete.json :
"scripts": { "i18n": "ng-xi18n", ... }y
npm run i18nConsulte la sección Fusionar traducción para obtener detalles sobre cómo fusionar una traducción en una plantilla de componente. Se hace usando el complemento de texto SystemJS .
Otro ejemplo usando Gulp http://www.savethecode.com/angular2-i18n-native-support/
Personal antiguo : actualización basada en RC7 y enlaces proporcionados por Herman Fransen :
Hice un ejemplo mínimo de Plunkr: https://plnkr.co/edit/4W3LqZYAJWdHjb4Q5EbM
Comentarios a plunkr:
bootstrap debe proporcionar TRANSLATIONS , TRANSLATIONS_FORMAT , LOCALE_ID con valores -> configurar traduccionesi18n.xlf . Los lazos entre idiomas se realizan a través de Id , los lazos con html por un valor de etiqueta <source> en xlfxlf no se usan directamente; un archivo .ts se crea manualmente para envolver el contenido de xlf en una variable exportable. Supongo que esto debería funcionar automáticamente en la versión final (tal vez incluso ahora).Este es el primer enfoque documentado oficialmente que encontré. Sin embargo, todavía es apenas utilizable. Veo los siguientes problemas en la implementación actual:
bootstrap , no se puede cambiar en tiempo de ejecución. Esto debe cambiarse en Final.xlf se genera SHA. La forma actual de obtener esta identificación es un poco complicada: crea un nuevo elemento traducible, lo usa, copia la identificación SHA del error y la pega en su archivo i18n.lang.xlf .Hay una gran solicitud de extracción de documentación sobre i18n
Personal más antiguo : las notas de la versión https://github.com/angular/angular/blob/master/CHANGELOG.md tienen un registro
i18n : combinar traducciones 7a8ef1e
Se introdujo una gran parte de i18n en Angular 2 RC5
Desafortunadamente, todavía no hay documentación disponible.
Todos están ansiosos por la implementación oficial, pero esta funcionó para mi caso de uso: https://github.com/ocombe/ng2-translate
README es bastante completo, y si necesita algo realmente particular (para mí fue dividir el código), el código en sí no es demasiado largo ni difícil de leer.
El soporte para i18n ahora es oficial en Angular 2 RC6
Blog de lanzamiento oficial:
https://angularjs.blogspot.nl/2016/09/angular-2-rc6_1.html
Una muestra de internacionalización con Angular 2 RC6
https://github.com/StephenFluin/i18n-sample
Más información sobre cómo funciona el nuevo concepto de i18n en angular2:
https://lingohub.com/blog/2015/03/angular-2-i18n-update-ng-conf-2015