Changes between Version 3 and Version 4 of Version2/Tutoriales/Consola_Web/Tutorial_3_Internacionalizacion


Ignore:
Timestamp:
May 3, 2011, 4:33:26 PM (9 years ago)
Author:
edulix
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Version2/Tutoriales/Consola_Web/Tutorial_3_Internacionalizacion

    v3 v4  
    44En este tutorial sobre Opengnsys 2 vamos a explicar el funcionamiento de las traducciones de los plugins para la Consola Web.
    55
    6 Los plugins de la consola web pueden ser internacionalizables, lo que implica que podrán ser utilizados por diferentes usuarios en diferentes idiomas a un bajo coste programático, es decir, que utilizando las funcionalidades que la consola web nos ofrece para internacionalizar, traducir un plugin y utilizarlo en otro idioma no supone ningún esfuerzo adicional.
     6Los plugins de la consola web son internacionalizables, lo que implica que podrán ser utilizados por diferentes usuarios en diferentes idiomas a un bajo coste programático. Utilizando las funcionalidades que la consola web nos ofrece para internacionalizar, traducir un plugin y utilizarlo en otro idioma no supone apenas esfuerzo adicional.
    77
    8 Para la internacionalización se utiliza la herramienta [http://es.wikipedia.org/wiki/Gettext gettext], utilizada ampliamente en multitud de proyectos. El uso de gettext consiste básicamente en escribir todas las cadenas del código en inglés, pero pasadas a través de una función que se encargará de coger la cadena correspondiente en caso de estar viendo otro idioma. Normalmente en código se utiliza la función _() y es común ver líneas de código con cadenas como _("hello world!").
     8Para la internacionalización se utiliza la herramienta [http://es.wikipedia.org/wiki/Gettext gettext], utilizada ampliamente en multitud de proyectos. El uso de gettext consiste básicamente en escribir todas las cadenas del código en un idioma base a partir del cual se realizarán las traducciones (en nuestro caso es el inglés), pero pasadas a través de una función que se encargará de coger la cadena correspondiente en caso de estar viendo otro idioma. Normalmente en código se utiliza la función _() y es común ver líneas de código con cadenas como _("hello world!").
    99
    1010== Utilizando i18n en las vistas ==
     
    2929}}}
    3030
    31 En el código de esta vista del plugin hello_world se puede observer cómo importamos '''pi18n''' del módulo '''decorators''' y luego cómo se utiliza en la vista, decorando el método GET, situando '''@pi18n''' justo antes de su definición. Luego, dentro de la función hacemos uso de '''_()''' que es la variable que introduce el decorador dentro del contexto de la función. Toda cadena traducible debe ir dentro de '''_()'''.
     31En el código de esta vista del plugin hello_world se puede observar cómo importamos '''pi18n''' del módulo '''decorators''' y luego cómo se utiliza en la vista, decorando el método GET, situando '''@pi18n''' justo antes de su definición. Luego, dentro de la función hacemos uso de '''_()''' que es la variable que introduce el decorador dentro del contexto de la función. Toda cadena traducible debe ir dentro de '''_()'''.
    3232
    3333Es así de simple, importar pi18n, decorar la vista con cadenas internacionalizables y pasar toda cadena por la llamada '''_()'''.
     
    3535== Utilizando i18n en los templates ==
    3636
    37 Los templates de los plugins también son internacionalizables, por lo tanto también se pueden escribir cadenas traducibles dentro de los templates html.
     37Los templates de los plugins también son internacionalizables, por lo tanto también se pueden escribir cadenas traducibles dentro de los templates HTML.
    3838
    39 En los templates es aún más fácil hacer uso de la internacionalización, porque la función la está en el contexto y tan sólo hay que utilizarla. Para los templates también existen dos funciones de internacionalización, '''_()''' y '''_p()''', la primera es para la internacionalización del core de la consola web, y la segunda es para traducciones de plugins. En principio en una plantilla de un plugin sólo se debería usar '''_p()''', aunque es posible utilizar '''_()''', pero sólo es recomendable para aquellos que sepan lo que están haciendo.
     39En los templates es aún más fácil hacer uso de la internacionalización, porque la función ya está en el contexto y tan sólo hay que utilizarla. Para los templates también existen dos funciones de internacionalización, '''_()''' y '''_p()''', la primera es para la internacionalización del core de la consola web, y la segunda es para traducciones de plugins. En principio en una plantilla de un plugin sólo se debería usar '''_p()''', aunque es posible utilizar '''_()''', pero sólo es recomendable para aquellos que sepan lo que están haciendo.
    4040
    4141Por lo tanto, para traducir cadenas dentro de un plugin lo que hay que hacer es meter esta cadena dentro de la función '''_p()'''. Veamos un ejemplo: