una tablas tabla que obtener historia funciona ejemplos definicion datos con como caracteristicas agregar javascript php jquery internationalization gettext

tablas - ¿Cómo introduzco los términos de un diccionario gettext en JavaScript?



que es javascript pdf (3)

Estoy intentando desarrollar un sitio web con php y javascript (jquery) que sea compatible con varios idiomas. Estoy tratando de obtener algo que sea:

  • Eficiente: necesito reducir todo lo posible el procesamiento de back-end para esta operación.
  • Ampliable: debe ser fácil y práctico agregar nuevas cadenas a las traducciones

El problema es que mi código de JavaScript está generando dinámicamente varios elementos en el DOM y necesita imprimir algunas cadenas que están en los archivos de idioma.

Mi solución real es, usando gettext en php, imprimir en el documento las cadenas que deben ser usadas por javascript:

<?php ... some kind of gettext initialization ... ?> <!DOCTYPE html> <html> <head> <title><?php echo _("My page Title"); ?></title> ... </head> <body> ... <script type="text/javascript"> var LANG = { "string1" : "<?php echo _("string1"); ?>", "string2" : "<?php echo _("string2"); ?>", "string3" : "<?php echo _("string3"); ?>", ... }; </script> </body> </html>

Luego estoy accediendo al LANG en mis fuentes de js, pero no creo que esta sea la mejor solución ...

Mis preguntas son:

  • ¿Cuál es el enfoque correcto para aplicar una traducción a un archivo javascript, usando la misma "base de datos" de php?
  • ¿Qué tan eficiente es gettext library? ¿Podría ser útil implementar alguna forma de mecanismo de almacenamiento en caché en las páginas generadas?

Deberías echarle un vistazo a Poedit, por lo que yo sé, es el mejor software de localización que existe, se usa mucho en wordpress, etc. También puedes almacenar todas las diferentes traducciones en un db y servirlas de acuerdo a la ubicación geográfica.


Utilizo define, los archivos de idioma php y una sesión para decir qué idioma mostrar.

index.php <?php session_start(); if (isset($_SESSION[''lang''])){ require(''language/'' . $_SESSION[''lang''] . ''.php''); }else{ require(''language/english.php''); } <html> <?= HELLO_WORLD ; ?> </html>

luego haz tus archivos de idioma así.

language/english.php define("HELLO_WORLD", "Hello world!");


gettext es utilizado por muchas aplicaciones estándar de la industria. No hay nada fundamentalmente erróneo en ello, excepto que creo que no funciona muy bien (ya que tiende a depender de las configuraciones regionales instaladas en el sistema y cosas así).

Una alternativa más compleja, pero también más flexible, podría ser Zend_Translate que se puede conectar a diferentes backends de diccionario: archivos .po / mo como gettext (que son geniales porque tiene un universo completo de herramientas de edición para todas las plataformas), pero también bases de datos.

El enfoque que muestra (alimentar el diccionario con JavaScript en el documento principal) está bien, ya que supuestamente supuestamente ya está usando PHP para hacer el procesamiento dinámico en ese punto y el archivo JavaScript puede permanecer estático, lo cual es genial.

Sin embargo, puede ser un poco pesado en el archivo HTML si tiene un gran diccionario, ya que está transfiriendo toda esa información en cada solicitud. En ese caso, debes considerar un recurso externo de JavaScript después de todo. Tienes dos opciones:

  • Sirva un archivo JavaScript generado por PHP, uno que contenga todas las definiciones del diccionario. Utilice alguna forma de almacenamiento en caché If-modified-since por lo que debe volver a procesar el diccionario solo cuando algo realmente ha cambiado, o enviar encabezados de almacenamiento en caché con un tiempo de vida útil largo.

  • o: siempre que el diccionario se actualice, ejecute un script PHP (automática o manualmente) que genere un archivo JavaScript estático que contenga todas las definiciones del diccionario. Eso podría ser lo mejor de ambos mundos.