Question

Il n'y a pas de documentation sur cakephp.org et je ne parviens pas à en trouver une sur google. Veuillez me lier de la documentation ou en fournir une!

Était-ce utile?

La solution

Le comportement de traduction est une autre des fonctionnalités très utiles mais mal documentées de CakePHP. Je l'ai implémenté à quelques reprises avec un succès raisonnable sur des sites Web multilingues, comme indiqué ci-dessous.

Premièrement, le comportement de traduction n'internationalise que le contenu de la base de données de votre site. Si vous avez plus de contenu statique, vous voudrez peut-être regarder la fonction wrapper __ ('chaîne') de Cake et gettext (il y a quelques informations utiles sur ce ici )

En supposant qu'il y ait des contenus que nous souhaitons traduire avec le tableau de base de données suivant:

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;

Le modèle content.php a alors:

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

dans sa définition. Vous devez ensuite ajouter la table i18n à la base de données de la manière suivante:

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;

Ensuite, lorsque vous enregistrez les données dans la base de données de votre contrôleur, définissez les paramètres régionaux sur la langue de votre choix (cet exemple concerne le polonais):

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

Ceci créera des entrées dans la table i18n pour les champs de titre et de corps pour les paramètres régionaux pol. Les recherches seront basées sur les paramètres régionaux définis dans le navigateur de l'utilisateur et renverront un tableau tel que:

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

Nous utilisons l'excellent p28n composant pour implémenter une solution de changement de langue qui fonctionne plutôt bien avec les comportements de gettext et de traduction.

Ce n’est pas un système parfait. Comme il crée des relations HABTM à la volée, il peut causer des problèmes avec d’autres relations que vous avez peut-être créées manuellement, mais si vous êtes prudent, cela peut fonctionner.

Autres conseils

Pour ceux qui cherchent la même chose, Cakephp a mis à jour sa documentation. Pour traduire le comportement, allez ici ..

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top