Internacionalización Joomla


La traducción o internacionalización en nuestro mundo de hoy donde los clientes surfean a través de la internet hasta llegar a nuestros sitios web y aplicaciones es prácticamente tarea obligada a la hora de concebir el desarrollo de un producto. Es el método mediante el cual se abstraen cadenas dependiendo de la configuración regional de los clientes o la necesidad de traducción para ampliar la gama de usuarios a los que debe llegar nuestro producto.

Técnicamente hablando no es más que una clase la cual consta de diccionarios de traducción para cada lenguaje, donde el elemento común siempre es una costante que cambia de valores dependiendo del idioma en cuestión. Estos diccionarios no son más que ficheros de texto en un formato determinado, generalmente XML, YML o INI que son los más usados. Para determinar que diccionario de traducción debe ser usado los sistemas se ayudan del término locale el cual se refiere al lenguaje y país del usuario, por ejemplo es(España), en(Inglés EU), fr(Francés) y una lista tan grande como países existan. Evidentemente solo haremos uso de los locale que necesitemos en nuestra aplicación.

Mucho son los sistemas que poseen esta funcionalidad, CMS y Frameworks casi todos poseen mecanismos para ello. A continuación les voy a poner algunos ejemplos de su uso en la etapa de implementación en diferentes sistemas.

Joomla

Joomla como ya todos conocen uno de los CMS más populares hoy día, desde sus versiones iniciales soporta internacionalización. Una vez configurados e instalados todos los lenguajes necesarios provee de una clase llamada JText que se encarga principalmente de traducir textos en el lenguaje activo (mediante el locale activo). Se alimenta de una pequeña base de datos dentro del directorio language que posee una serie de ficheros de texto INI ordenados por componentes y módulos.

Digamos que tenemos lo siguiente

  # Fichero language/en-GB/en-GB.com_xxx.ini 
  HELLO="HELLO World!!!!"

  # Fichero language/es-ES/es-ES.com_xxx.ini 
  HELLO="HOLA Mundo!!!!"

Dos lenguajes instalados con sus respectivos locale y necesitamos que el texto en pantalla salga en correspondencia con el seleccionado por el usuario, pues hacemos uso de la clase JText teniendo en cuenta que la constante es HELLO, único punto común entre los lenguajes.

  echo JText::_( 'HELLO' );

Symfony2

  # .../Resource/translations/messages.es.yml
  HELLO: "HELLO World!!!!"

  # .../Resource/translations/messages.en.yml
  HELLO: "HOLA Mundo!!!!"

Luego en el controlador lo traduzco y se lo paso a la plantilla

  public function indexAction()
  {
      $t = $this->get('translator')->trans('HELLO');

      return new Response($t);
  }

O como alternativa y personalmente es la que más me gusta lo traduzco en la plantilla directamente

  {% trans %}HELLO{% endtrans %}

Conclusión

Una aplicación internacionalizada dispone de varias versiones de un mismo contenido en diferentes idiomas o formatos. Nos permite que el producto llegue a todo tipo de cliente, recuerden que el mundo es más chico con el internet donde desde cualquier parte del mundo tu producto llega sin importar fronteras ni banderas. Los mecanismos existen, no solo en Joomla o Symfony2, también para los que prefieren Drupal o WordPress, Zend u otro framework. No pierdas la oportunidad, intégrate a la gran comunidad del mundo.

Latest posts by Leroy Ley (see all)