Pregunta

No hay documentación en cakephp.org y no puedo encontrar ninguna en Google.¡Por favor vincúleme alguna documentación o proporcione una!

¿Fue útil?

Solución

El comportamiento de traducción es otra de las características muy útiles pero poco documentadas de CakePHP.Lo implementé un par de veces con éxito razonable en sitios web multilingües de la siguiente manera.

En primer lugar, el comportamiento de traducción sólo internacionalizará el contenido de la base de datos de su sitio.Si tienes más contenido estático, querrás ver el de Cake. __('string') función de envoltura y gettext (hay información útil sobre esto aquí)

Suponiendo que hay contenidos que queremos traducir con la siguiente tabla de base de datos:

CREATE TABLE `contents` (
    `id` int(11) unsigned NOT NULL auto_increment,
    `title` varchar(255) default NULL,
    `body` text,
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

El modelo content.php tiene entonces:

var $actsAs = array('Translate' => array('title'   => 'titleTranslation',
                     'body'    => 'bodyTranslation'
                     ));

en su definición.Luego deberás agregar la tabla i18n a la base de datos de la siguiente manera:

CREATE TABLE `i18n` (
  `id` int(10) NOT NULL auto_increment,
  `locale` varchar(6) NOT NULL,
  `model` varchar(255) NOT NULL,
  `foreign_key` int(10) NOT NULL,
  `field` varchar(255) NOT NULL,
  `content` mediumtext,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

Luego, cuando guarde los datos en la base de datos de su controlador, configure la configuración regional en el idioma que desee (este ejemplo sería para polaco):

$this->Content->locale = 'pol';
$result = $this->Content->save($this->data);

Esto creará entradas en la tabla i18n para los campos de título y cuerpo de la configuración regional.Las búsquedas se realizarán según la configuración regional actual configurada en el navegador del usuario y devolverán una matriz como:

[Content]
  [id]
  [titleTranslation]
  [bodyTranslation]

Usamos el excelente componente p28n implementar una solución de cambio de idioma que funcione bastante bien con los comportamientos de obtención de texto y traducción.

No es un sistema perfecto: como crea relaciones HABTM sobre la marcha, puede causar algunos problemas con otras relaciones que haya creado manualmente, pero si tiene cuidado, puede funcionar bien.

Otros consejos

Para cualquiera que busque lo mismo, cakephp actualizó su documentación.Para traducir comportamiento, vaya aquí..

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top