Bonjour,

Je suis en train de créer un site sur cakephp2 en multilingue.
J'avais pas eu trop de soucis sur la version 1.3 mais j'ai une erreur avec la version 2.0.

En effet lorsque que j'affiche un contenu dans une langue j'obtiens un array comme ci dessous:

Array
(
    [CatalogueGamme] => Array
        (
            [id] => 1
            [name] => Nom de la gamme
            [slug] => slug-de-la-gamme
            [description] => 
            [banniere] => banniere-gamme
            [ext] => .jpg
            [catalogue_pathology_id] => 1
            [created] => 2011-11-25 10:26:21
            [modified] => 2011-11-28 11:13:52
            [locale] => fre
        )
    [0] => Array
        (
            [CatalogueGamme __i18n__ description] => Ma description
        )

Ai-je oublié quelque chose dans le développement pour que la description vienne remplir les contenus de la gamme ou dois-je modifier le comportement des models via l'AppModel pour le faire?

Merci pour vos retours.

10 réponses


Freega
Auteur
Réponse acceptée

J'ai réussit à faire quelque en ajoutant ceci dans l'AppModel:

function findAll(){
        $datas = $this->find('all');
        $i = 0;
        foreach($datas as $field):
            foreach($field'0'] as $f=>$t):
                $array = preg_split("/\s]*[__]\s]*/", $f);
                $model = $array'0'];
                $champ = $array'4'];
                $datas$i]$model]$champ] = $t;

            endforeach;
        $i ++;
        endforeach;
        return $datas;
    }

Je pense que c'est loin d'être la bonne méthode mais ça à l'air de fonctionner...

Je suis ouvert à toute solution pour arranger ça soucis plus proprement.

Le meilleur conseil que je puisse te donner est de suivre le tutoriel sur l'internationalisation d'un site sous cakephp 2.0 qu'a fait grafikart.
Tutoriel Internationalisation

Freega
Auteur

Je vais aller le voir. Mais si je me trompe pas ce tuto était pour la 1.3.
Je l'avais suivi et réussit sous la version 1.3. J'ai refait de même pour la version 2 mais j'ai ce bug.

Je vais revisionner la vidéo voir si j'ai rien oublié.

Merci

Salut ce nouveau tuto est pour la version 2.0 du coup plus de problème

Freega
Auteur

J'ai de nouveau regardé la vidéo et je n'ai toujours pas résolu mon problème.

Je dois passé à côté de quelque chose.

Personne à une idée de la direction où je dois regarder?

Merci

J'ai mis en place un système de langue mais je me suis limité à la partie POedit, du coup je peux pas beaucoup t'aider. Désolé

Freega
Auteur

Pas de soucis merci quand même.

Je suis en train d'essayer de faire la même que la function readAll mais avec findAll. Ainsi je vais pouvoir replacer les informations à leurs places.

Si il y a une meilleur solution, je suis preneur.

Ok bon courage pour la suite.

Je ne vois pas quoi changer, tu peux clôturer le sujet.

j'aimerai savoir comment faire pour deux tables liés ! je galere dessus depuis 2 jours aucun sujet dessus par exemple une table articles et une autre catégorie sachant qu'on un hasMany et belongsTo entre ces deux tables !
articles (id, name, content,category_id)
category(id,name,content)

Donc dans les modeles si je fais ça
Class category extends appmodel{
var ActsAs = array('translate'=>array(
'name'=>'_name',
'content'=>'_content',
'category_id' pour ce champ je sais pas quoi faire vu qu'il vient de l'autre table
));
}

Class Post extends appmodel{
var ActsAs = array('translate'=>array(
'name'=>'_name',
'content'=>'_content',

));
}
Comment gérer la traduction dans cas précis ???,