i18n español angularjs internationalization templating

angularjs - español - i18n angular 5



Internacionalización con angularjs. (4)

Estoy pensando en mover mi sitio a angularjs, y quiero comenzar muy pequeño, moviendo todas mis plantillas estáticas de texto plano del lado del servidor de django a angular (de lo contrario habrá problemas de sintaxis con el ''{{}}'' ).

Parece que la mejor manera de hacerlo será una de las dos opciones:

  1. Para tener una llamada ajax que devuelve un JSON con todos los textos de mi sitio. Los textos se almacenarán en una variable que se vincula a mis elementos HTML, por lo que angular actualizará todo.
  2. Para almacenar un archivo js estático con el diccionario e incluirlo en mi HTML y vincular el diccionario con angularjs.

Ambas opciones me permitirán cambiar entre idiomas sin volver a cargar la página.

¿Cuál es mejor? En general, ¿es este un buen enfoque o hay una forma más correcta?


AngularJS admite il8n / L10n solo para filtros de moneda, fecha y números. Según este libro :

(perdón por la baja calidad! cámara del teléfono celular)

Yo diría que siga el primer enfoque y cargue la traducción dinámicamente. Implicaría mucho trabajo, pero no hay otra alternativa.



En primer lugar, hay una manera de cambiar los delimitadores de los ángulos a otros símbolos como se responde aquí: Delimitador personalizado Angular JS

La opción 2. es más fácil. Lo incluyes una vez y tienes todas las traducciones en carga de página. No hay llamadas asíncronas, ni promesas, bonitas y fáciles.

Y sin embargo, me gustaría ir con el primero. Los servicios como $translate realmente le facilitarían la vida siguiendo la opción 1. Además, tiene muchas opciones para cargar y almacenar datos cargados en LocalStorage y cookies, por lo que hay mucho espacio para la extensión y la personalización. Luego puede traducir su contenido con el servicio, la directiva o el filtro de $ translate.

Y no olvide que la opción 2 deshabilita cualquier opción de solicitudes en caché. En cada solicitud a su página de inicio, el servidor debe leer el archivo estático e incluirlo en el html. Con la primera opción, el navegador del usuario puede almacenar en caché .json durante el tiempo que desee.


Probé algunas opciones diferentes, incluyendo Angular Translate, pero hasta ahora me ha gustado Angular-gettext .

Una cosa que ayudó tremendamente es que hay una demostración en funcionamiento para ella en la que se encuentra TodoMVC, llamada angular-gettext-example .

El flujo de trabajo es simple:

  1. Agregue la directiva "traducir" a sus plantillas
  2. Ejecutar grunt para extraer plantillas .pot
  3. Entregue el .pot a su proveedor de traducción o bricolaje con POEdit o software similar
  4. Vuelve a colocar los archivos de traducción .po en tu proyecto.
  5. Ejecute grunt para compilar los archivos .po
  6. Establezca el idioma predeterminado en su ámbito
  7. ¡Mira la magia!

Estoy seguro de que las otras soluciones publicadas aquí también son buenas, pero no he visto un ejemplo de extremo a extremo tan bien organizado como el ejemplo de texto angular-gettext.

Saludos, JD