Pergunta

Não há documentação sobre cakephp.org e eu sou incapaz de encontrar um no Google. Por favor, ligar-me alguma documentação ou fornecimento one!

Foi útil?

Solução

O comportamento traduzir é outra das características muito úteis, mas mal documentados do CakePHP. Eu tenho implementado um par de vezes com razoável sucesso em sites multi-lingual ao longo das seguintes linhas.

Em primeiro lugar, o comportamento traduzir só irá internacionalizar o conteúdo do banco de dados do seu site. Se você tiver qualquer conteúdo mais estático, você vai querer olhar para a função __('string') invólucro do bolo e gettext (há alguma informação sobre esta aqui )

Assumindo que há conteúdos que deseja traduzir com a tabela db seguinte:

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;

O modelo content.php então tem:

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

em sua definição. Então você precisa adicionar a tabela i18n ao banco de dados da seguinte maneira:

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;

Então, quando você está salvando os dados ao banco de dados em seu controlador, definir a localidade para o idioma desejado (neste exemplo seria para Polish):

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

Isto irá criar entradas na tabela i18n para o título e corpo campos para o local pol. Encontra-se em base no conjunto de localidade atual no navegador do usuário, retornando um array como:

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

Nós usamos o excelente p28n componente para implementar uma solução de comutação linguagem que funciona muito bem com o gettext e traduzir comportamentos.

Não é um sistema perfeito -., Pois cria relações HABTM em tempo real, pode causar alguns problemas com outros relacionamentos que você pode ter criado manualmente, mas se você for cuidadoso, ele pode trabalhar bem

Outras dicas

Para quem procura a mesma coisa, CakePHP atualizou sua documentação. Para Traduzir Comportamento ir aqui ..

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top