![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Clase I18n para PHP
A ver qué os parece la clase I18n para PHP que al cabo he tomado como base para "internacionalizar" y hasta "localizar" mis futuros proyectos. Casi desde el principio quise utilizar Gettext (1) para estas tareas, sin embargo, pronto descubrí que dicho programa, mejor dicho la extensión para PHP (2), no siempre está disponible y lista para ser utilizada. En otras palabras, nunca me gustó utilizar archivos INI, "Arrays" u otras soluciones que he visto y aun veo utilizar en no pocos proyectos.
Utilizar Gettext ofrece varias ventajas, pero, dos de ellas son las que me hicieron decantarme por este programa y su forma de hacer las cosas: 1º Las cadenas de texto a traducir se escriben en el propio código fuente, es decir, no es necesario hacer uso de constantes o variables, sino que se escriben prácticamente "tal cual", y, sin embargo, pueden ser traducidas sencillamente. Y 2º, precisamente, que utilizar Gettext permite utilizar programas como PO Edit (3), algo que los traductores sin duda agradecerán. Afortunadamente, hace años descubrí la biblioteca para PHP Gettext (4) y es la herramienta que he estado utilizando, por ejemplo, en mi proyecto Gesbit (5). Podríamos decir que PHP Gettext emula a la extensión Gettext de PHP, aunque esto no sea completamente así. Sin embargo, hace un tiempo que me puse a estudiar el código fuente del proyecto Habari (6), y descubrí que en el mismo se hacía uso de PHP Gettext, sin embargo, habían conseguido reducir su complejidad, de manera que las varias clases que incluye este proyecto se ve reducida a una clase. Empero, dicha clase en Habari está demasiado "anclada" al propio proyecto. Así que en base a la experiencia que he tenido usando PHP Gettext, no me ha costado demasiado preparar una clase que incorpora todo lo necesario para ayudarnos a "internacionalizar" nuestros proyectos en PHP, siendo dicha clase completamente independiente de ninguna otra e incorporando las funciones "cortas" que básicamente son las que utilizaremos en nuestro código fuente para traducir las cadenas de texto que sea necesario, de manera que no tengas excusas y te decantes por usar otras soluciones menos elegantes y más costosas a la larga. Junto con la clase I18n se incluye un ejemplo de uso sencillo, pero, que a la vez deja claro cómo funciona. En lugar de enrrollarme aquí con cómo funciona la clase I18n, lo que son "dominios de texto", archivos ".po" y ".mo" y cómo trabajar con estos en programas como PO Edit, digo que, mejor que todo esto, prefiero dejaros probar el invento (que no es tal) y que comentéis vuestras sugerencias, críticas, opiniones y sobre todo dudas que podáis tener aquí mismo, y así me evito escribir un tocho y a vosotros su pesadez. Así que ya lo sabéis. Por supuesto, me gustaría dar el crédito oportuno al autor de PHP Gettext y al equipo de Habari, pues yo muy poco he puesto de mi cosecha. PD. He publicado también este texto en PHP-Hispano, y, para evitar duplicar esfuerzos, también desde ahí puedes descargar la clase I18n, si quieres. ![]() Notas: 1. http://www.gnu.org/software/gettext/ 2. http://php.net/manual/en/book.gettext.php 3. http://www.poedit.net/ 4. http://savannah.nongnu.org/projects/php-gettext/ 5. http://gesbit.sf.net/ 6. http://habariproject.org/ |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Clase HtmlForm para PHP | dec | PHP | 12 | 21-01-2010 17:13:27 |
clase que contiene otra clase definida de forma posterior | astwin | OOP | 5 | 20-02-2009 11:26:55 |
Crear eventos para una clase | DarkByte | OOP | 10 | 07-12-2005 20:02:28 |
Clase para hacer ABM | mateamargo | OOP | 3 | 25-10-2005 22:34:23 |
Ayuda para crear una clase | estebanx | OOP | 0 | 10-03-2005 16:36:49 |
![]() |
|