The online documentation is produced by a web publishing technology created by us to read the documents origins in OpenOffice Writer (ODT) and Microsoft Word (docx) formats and produces native web and PDF versions. In this way we maintain Louder project documentation update and in sync on each of its formats.
El componente Traslate permite la creación de aplicaciones multi-idioma usando diferentes adaptadores para obtener las listas de traducción. La clase implementa el patrón Proxy para acceder a la funcionalidad de los adaptadores de manera uniforme.
Adaptadores soportados por Traslate
Los siguientes adaptadores son soportados por este componente:
Tabla: Tipos de adaptadores soportados por Traslate
Tipo Formato
Descripción
Array
Utiliza arrays nativos de PHP para almacenar las listas de traducción. Las llaves son utilizadas para acceder al valor traducido.
CSV
Utiliza archivos separados por comas. El primer campo representa la llave de traducción y el segundo la traducción en sí.
INI
Utiliza archivos .ini. La traducción se establece normalmente como variables y su valor es la traducción.
Database
Utiliza una tabla para almacenar el diccionario de traducción.
Como funciona la traducción
Independientemente del adaptador utilizado, el proceso de traducción sigue estos principios:
Los recursos de traducción deben estar disponibles y mantener una estructura consistente de tal forma que sea posible cargar uno el otro dependiendo de la localización activa.
Los diccionarios de traducción deben tener una clave y un valor, en donde la clave es un código interno ó convención que usa el desarrollador para acceder a los valores de traducción. Las claves deben ser las mismas para cada diccionario de traducción de esta forma es posible obtener los valores consistentemente.
El tipo de idioma a utilizar debe ser cargado por el desarrollador. El componente Locale permite obtener mediante varios métodos el lenguaje más adecuado dependiendo de los requerimientos de negocio de la aplicación.
Una vez completados los pasos anteriores se instancia la clase Traslate indicando en el primer parámetro del constructor el tipo de adaptador a usar, seguido de este las opciones del mismo.
El recurso cargado en el objeto Traslate contiene las traducciones para la sesión activa. El uso del método $traslate->_(string $key) permite acceder a los valores de traducción siendo $key la llave de indexación del diccionario.
El desarrollador debe controlar que el objeto traslate este creado y disponible para cada vista multi-idioma en la aplicación.
Utilizar traducciones
El componente Traslate carga los datos de traducción del adaptador indicado y luego permite obtener las traducciones. En el siguiente ejemplo se muestra como crear el objeto de traducción en cada petición a un controlador:
Ejemplo: Cargar la lista de traducción según la cultura obtenida del navegador
<?php
class NewsController extends ApplicationController {
private function _loadTraslation(){
$locale = Locale::getBrowser();
$language = $locale->getLanguage();
$path = "apps/myapp/languages/$language/LC_MESSAGES/messages.php";
require $path;
$traslate = new Traslate('Array', $messages);
$this->setParamToView("traslate", $traslate);
}
public function beforeFilter(){
$this->_loadTraslation();
}
}
En cada petición al controlador la variable $traslate es transferida a la presentación para su uso:
Ejemplo: Obtener las traducciones mediante las llaves definidas
y el archivo "en/LC_MESSAGES/messages.php" tiene el siguiente diccionario:
<?php $messages = array("home" => "Home") ?>
Entonces se produce la salida respectiva para los idiomas español e inglés: "Inicio Salir" y "Home exit".
Consideraciones para el adaptador Array
Como se explicó este adaptador utiliza arrays nativos de PHP para almacenar los diccionarios de traducción. Se recomienda el uso de este adaptador ya que ofrece el mejor rendimiento en la mayoría de los casos.
Consideraciones para el adaptador Csv
El adaptador CSV permite cargar las listas de traducción desde archivos CSV (seperados por comas) FALTA.
Consideraciones para el adaptador Ini
El adaptador INI permite cargar las listas de traducción desde archivos INI FALTA.
Consideraciones para el adaptador Database
El adaptador Database permite cargar las listas de traducción desde una tabla en la base de datos. FALTA