Edición de «KumbiaPHP y gettext»
De KumbiaPHP Framework Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.
Revisión actual | Tu texto | ||
Línea 1: | Línea 1: | ||
− | El objeto de este pequeño tutorial | + | El objeto de este pequeño tutorial es explicar como usar gettext para internacionalizar nuestras aplicaciones en [http://www.kumbiaphp.com KumbiaPHP]. |
===Importante=== | ===Importante=== | ||
Línea 7: | Línea 7: | ||
aptitude install locale | aptitude install locale | ||
Además, también debe estar disponible el lenguaje, al cual se quiere hacer la traducción. | Además, también debe estar disponible el lenguaje, al cual se quiere hacer la traducción. | ||
− | |||
=== Tutorial === | === Tutorial === | ||
Línea 16: | Línea 15: | ||
<source lang="php"> | <source lang="php"> | ||
<?php echo Form::open('formularios/prueba') ?> | <?php echo Form::open('formularios/prueba') ?> | ||
− | Nombre: <?php echo Form::text('nombre | + | Nombre: <?php echo Form::text('nombre) ?> |
</source> | </source> | ||
Línea 23: | Línea 22: | ||
<source lang="php"> | <source lang="php"> | ||
<?php echo Form::open('formularios/prueba') ?> | <?php echo Form::open('formularios/prueba') ?> | ||
− | + | _("Nombre:") <?php echo Form::text('nombre) ?> | |
</source> | </source> | ||
Con esto, ya sabemos como tenemos que escribir los textos, que queremos internacionalizar. Otra cosa que hay que tener en cuenta, es que deberemos crear (ahora explicaré como) un archivo '''.po''', por cada idioma que queramos tener en nuestra aplicación. | Con esto, ya sabemos como tenemos que escribir los textos, que queremos internacionalizar. Otra cosa que hay que tener en cuenta, es que deberemos crear (ahora explicaré como) un archivo '''.po''', por cada idioma que queramos tener en nuestra aplicación. | ||
− | Los '''códigos de idioma''' a utilizar | + | Los '''códigos de idioma''' a utilizar, son los que se definen en la norma '''ISO 639'''. Por ejemplo, es (español), fr (francés). |
− | + | Has de tener ubicado, en la correspondiente carpeta de su idioma, dentro de la aplicación. Por ejemplo, si yo quiero que mi aplicación se pueda mostrar en español y en ingles, la estructura sería esta: | |
− | |||
− | Has de tener ubicado, la correspondiente carpeta de su idioma, dentro de la aplicación | ||
<pre> | <pre> | ||
Línea 41: | Línea 38: | ||
|-- LC_MESSAGES | |-- LC_MESSAGES | ||
|-- es.po | |-- es.po | ||
− | |-- | + | |-- en_EN |
|-- LC_MESSAGES | |-- LC_MESSAGES | ||
− | |-- | + | |-- en.po |
− | |||
− | |||
− | |||
|-- core | |-- core | ||
</pre> | </pre> | ||
− | = | + | = Generacion de los archivos .po = |
− | Para la generación de estos dos archivos | + | Para la generación de estos dos archivos utilizo el programa '''''poedit''''', el cual podemos descargar desde su pagina oficial: [http://www.poedit.net/download.php www.poedit.net], para que veas como funciona vamos a generar los archivos .po y el idioma ingles: |
− | Abrimos el programa, en el menú superior seleccionamos ''''' | + | Abrimos el programa, en el menú superior seleccionamos '''''edicion->preferencias''''', en la ventana que se abre, nos vamos a la pestaña procesadores y seleccionamos PHP |
[[Archivo:po1.jpg]] | [[Archivo:po1.jpg]] | ||
− | + | ahora pulsaremos '''''Editar''''', para indicarle las extensiones que usamos (que serán las que escanee el programa en busca de etiquetas _("xxx")), en nuestro caso le añadiremos '''''*.phtml''''' | |
[[Archivo:po2.jpg]] | [[Archivo:po2.jpg]] | ||
− | + | ahora en '''''Ejecución''''' añadiremos '''''-L php''''' | |
[[Archivo:po3.jpg]] | [[Archivo:po3.jpg]] | ||
− | + | con lo que la linea de comandos a a procesar nos quedaría como en el grafico de arriba, ahora pulsaremos en '''''Aceptar''''', y con esto ya le hemos dicho al poedit como ha de trabajar, el siguiente paso será la cración de catálogos (un catálogo por cada idioma de nuestra aplicación), para ello pulsaremos ''''' Archivo->Nuevo catálogo''''', en la pestaña '''''Información del proyecto''''' pondremos los datos correspondientes al idioma que estamos creando, en nuestro caso el ingles | |
[[Archivo:Ejemplo.jpg]] | [[Archivo:Ejemplo.jpg]] | ||
− | Luego vamos a la pestaña '''''Carpetas''''' y en '''''Directorio Raiz''''', pondremos la ruta completa a nuestra app, y debajo en '''''Carpetas''''', | + | Luego vamos a la pestaña '''''Carpetas''''' y en '''''Directorio Raiz''''', pondremos la ruta completa a nuestra app, y debajo en '''''Carpetas''''', pondriamos las carpetas que queremos que nos escanee, pero mejor poner un '''''.''''' y así no se nos escapará ninguna |
[[Archivo:po5.jpg]] | [[Archivo:po5.jpg]] | ||
− | Pulsamos en '''''Aceptar''''', ahora nos pedirá donde queremos guardar el archivo .po correspondiente | + | Pulsamos en '''''Aceptar''''', ahora nos pedirá donde queremos guardar el archivo .po correspondiente, lo haremos dentro de locale, en la carpeta correspondiente al idioma que estemos creando, en este momento realizará el escaneo de los archivos en busca de todas las etiquetas con el formato '''''_("xxx")''''' que tengamos, y nos mostrará una pantalla como la siguiente, en la que estarán todos los textos encontrados. |
[[Archivo:po6.jpg]] | [[Archivo:po6.jpg]] | ||
− | En el gráfico anterior | + | En el gráfico anterior nos muestra que ha encontrado las siguientes etiquetas: 'esto es la prueba numero DOS' y 'esto es la prueba numero UNO', ya que en la vista correspondiente está como: |
<source lang="php"> | <source lang="php"> | ||
Línea 85: | Línea 79: | ||
</source> | </source> | ||
− | Ahora pulsaríamos '''''Aceptar''''' y ya tenemos nuestro archivo '''''.po''''' del idioma correspondiente | + | Ahora pulsaríamos '''''Aceptar''''' y ya tenemos nuestro archivo '''''.po''''' del idioma correspondiente y deberemos introducir las traducciones de las etiquetas correspondientes en é, ahora simplemente con cambiar el locale de nuestra aplicación nos la mostrara en el idioma seleccionado. |
= Como utilizar el archivo .po = | = Como utilizar el archivo .po = | ||
− | Para que las etiquetas aparezcan | + | Para que las etiquetas aparezcan traducidos habría que añadir el siguiente código en el aplication_controller, si quieres que este disponible en toda la aplicación o en el controlador que quieras usarlo |
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
− | $language="en_EN"; | + | $language="en_EN"; |
− | putenv("LC_ALL=$language"); | + | putenv("LC_ALL=$language"); |
− | setlocale(LC_ALL, $language); | + | setlocale(LC_ALL, $language); |
− | bindtextdomain("messages", | + | bindtextdomain("messages", "./locale"); |
− | textdomain("messages"); | + | textdomain("messages"); |
?> | ?> | ||
</source> | </source> | ||
− | '''''Nota:''''' El primer argumento de las funciones bindtextdomain y textdomain | + | '''''Nota:''''' El primer argumento de las funciones bindtextdomain y textdomain tiene que ser el nombre del archivo .po que se haya creado. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Ten en cuenta que con ese código nos lo mostraría en ingles, si quieres cambiarlo dinámicamente desde tu aplicación tendrás que adecuar el código, para que la variable '''''$language''''', tome el idioma que te interese en cada momento. | |
− | |||
− | |||
[[Categoría:Tutoriales KumbiaPHP]] | [[Categoría:Tutoriales KumbiaPHP]] |