Plataforma de código abierto para gobierno electrónico.Administración electrónica.
        Open Source Plattform for e-government.

"Las obras de conocimiento deben ser libres,
no hay excusas para que no sea así" (Richard Stallman)


4.4 Internacionalización (I18n)


Una de las características más importantes de Open Populi Application Framework, es la capacidad de construir aplicaciones multi idioma. En esta primer versión de la plataforma, tal característica se brinda en forma básica. Y se materializa a través de un diccionario de términos almacenados en base de datos.

Como se comentaba anteriormente, en esta primer versión solo se incluye un traductor basado en un diccionario en base de datos cuyo driver es OP_TranslatorDB, pero está planificado incluir en próximas versiones OP_TranslatorXliff, que brindará soporte para el formato XLIFF.

Estructura



La estructura que da soporte a I18n es la siguiente:

  • Diagrama Entidad Relación I18n



i18n

Modela los diferentes lenguajes soportados por una plataforma.

translations

Modela el diccionario de términos el cual es accedido por una clave con su correspondiente prefijo y sufijo para obtener el valor o traducción de la clave o termino en cuestión.



Configurando el idioma de la traducción



Se deberá establecer el idioma de la traducción en el archivo de configuración de la plataforma, config.ini. Para esto es necesario colocar la siguiente entrada:

  • Archivo config.ini
//...

[i18n]
culture = al_AL

//...

Traduciendo términos



La forma de incluir texto traducible a muchos idiomas en una plantilla en particular, es mediante el helper __(). Dicho helper se encuentra en el grupo de helpers de i18n. Su forma de utilización es sumamente practica y sencilla.

__($text, $args=array(), $prefix, $sufix)

text

termino clave a traducir.

args

argumentos que seran reemplzados con la funcion strtr .

prefijo

Prefijo que contextualiza al termino.

sufix

sufijo que contextualiza al termino



  • Ejemplo de utilización del helper i18n en un template index.tpl.php
<table style="margin: 0 auto;" border="1" summary="Data del controller">
<thead>
<tr>
<th><?= __('id',array(),'BKE','MOD'); ?></th>
<th><?= __('customer',array(),'BKE','MOD'); ?></th>
<th><?= __('birthday',array(),'BKE','MOD'); ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($customers as $key=>$customer): ?>
<tr>
<td><?= $customer['id_cliente'] ?> </td>
<td><?= $customer['surname'].', '. $customer['name'] ?> </td>
<td><?= $customer['birthday']?> </td>
</tr>
<?php endforeach;?>

</table>
<?php echo __('Existen %1% Clientes en el sistema', array('%1%' => $countClients)) ?>


««« Debugging | Routing



Indice del manual