2008-11-20 7 views
6

Tengo configurado todo el modelo MVC y uso las vistas HTML como plantillas. Pero tengo cadenas alemanas allí que me gustaría traducir a otros idiomas en algún momento.Dónde utilizar la herramienta de traducción de Zend Framework

¿Cuál es la mejor manera de hacerlo? Sé que tengo que usar Zend_Translate, pero ¿tengo que implementar una sola llamada a una función de traducción para cada palabra que tengo en mis plantillas de vista?

Respuesta

12

Antes que nada, sugiero usar frases completas como base para su traducción. Con las palabras siempre tienes el problema de que los idiomas no son consistentes en lo que respecta a la estructura de las oraciones.

Luego tiene que elegir uno de los adaptadores Zend_Transalate disponibles: Array, Csv, Gettext, Ini, Tbx, Tmx, Qt, Xliff o XmlTm. La mayoría de ellos son adaptadores de los estándares de la industria para almacenar información de traducción, por lo que probablemente sea suficiente si elige Array, Csv o Ini para el comienzo y la facilidad de uso. Consulte 49.2.1. How to decide which translation adapter to use en el manual de Zend Framework.

// setup your translation 
$translate = new Zend_Translate('csv', '/my/path/source-de.csv', 'de'); 
$translate->addTranslation('/my/path/source-en.csv', 'en'); 
// add the translation adapter to the registry 
Zend_Registry::set('Zend_Translate', $translate); 

Como hay una Zend_View_Helper_Translate de que el acceso al estandarizada Zend_Registry entrada Zend_Translate como la fuente de la traducción del defecto, puede utilizar lo siguiente en sus puntos de vista:

[...] 
<title><?php echo this->translate('Title'); ?></title> 
[...] 
<p>You can also do <?php echo $this->translate('Hello %1$s', $this->userName); ?></p> 
[...] 

Tenga en cuenta que esto sólo es una breve introducción en Zend_Translate y de ninguna manera una presentación completa de la funcionalidad provista por este componente. Por ejemplo, hay mucho que decir sobre la determinación de la configuración regional que usará el adaptador de traducción.

le sugeriría leer la siguiente en el manual de Zend Framework, debido a la localización puede ser un tema complejo y Zend_Translate no se puede describir por completo aquí:

+0

Gracias. Así que siempre tengo que llamar $ this-> translate(). ¡Gracias! –

1

No, no tiene que traducir todas las palabras. La idea de la traducción en este sentido es más una idea de traducción de mensajes.

En mi proyecto actual hacemos dos tipos de traducciones. Cuando va a ser un texto breve, escribimos eso directamente en el código fuente para fines de legibilidad.

I.E.

<?=$this->translate('Add');?> 
<?=$this->translate('Delete');?> 
<?=$this->translate('Are you sure you want to delete %1$s?', $thing);?> 

Pero si el mensaje es mucho más largo, que por lo general siguen un estándar para marcarlo para el sistema de traducción:

<?=$this->translate('controller-action_form-information');?> 

La idea es que luego se puede sustituir eso con mucho texto en su herramienta de traducción y mantiene ordenada la secuencia de comandos de vista.