je vais réexpliquer mon probleme dans le cas ou je suis ! il s'agit d'un site web pour une agence immobilière en deux langues francais et espagnol !
J'ai une table properties(id,name,content,transaction_id,nbpiece...)
une table Transaction(id,name,slug)

Pour mon model property

class Property extends AppModel {
     var $actsAs = array('Containable', 'Media.Media');

    public $belongsTo = array(

        'Transaction' => array(
            'className' => 'Transaction',
            'foreignKey' => 'transaction_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )

    );

Pour mon model Transaction

class Transaction extends AppModel {

    var $actsAs = array('Containable' ,
         'Translate' => array(
                'name' => '_name',
                'slug' =>'_slug'
        ) );

/**
* hasMany associations
*
* @var array
*/
    public $hasMany = array(
        'Property' => array(
            'className' => 'Property',
            'foreignKey' => 'transaction_id',
            'dependent' => false,

        )
    );

Lorsque je fais un débug des propriétes a la vente par exemple j'ai les tableaux suivants :

'vente' => array(
        (int) 0 => array(
            'Property' => array(
                'id' => '61',
                'name' => 'JV101004_2',
                'slug' => 'jv101004-2',
                'nbpiece' => '0',
                'room' => '0',
                'thumb' => 'uploads/2012/06/panoramique_ngazobil_web.jpg',
                'thumbf' => 'uploads/2012/06/panoramique_ngazobil_web_%dx%d.jpg',
                'link' => array(
                    'controller' => 'properties',
                    'action' => 'show',
                    'id' => '61',
                    'slug' => 'jv101004-2'
                )
            ),
            'Transaction' => array(
                'name' => 'Vente'
            ),

Je n'ai pas les versions traduites des deux langues pour la Transaction ! Ou se trouve mon bug

11 réponses


Je ne comprend pas ce que tu veux dire par : "Je n'ai pas les versions traduites des deux langues pour la Transaction"

ndiayejp
Auteur

Dans mon debug je devrais avoir

'vente' => array(
        (int) 0 => array(
            'Property' => array(
                'id' => '61',
                'name' => 'JV101004_2',
                'slug' => 'jv101004-2',
                'nbpiece' => '0',
                'room' => '0',
                'thumb' => 'uploads/2012/06/panoramique_ngazobil_web.jpg',
                'thumbf' => 'uploads/2012/06/panoramique_ngazobil_web_%dx%d.jpg',
                'link' => array(
                    'controller' => 'properties',
                    'action' => 'show',
                    'id' => '61',
                    'slug' => 'jv101004-2'
                )
            ),
            'Transaction' => array(
                'name' => 'Vente'
            ),
'_name' => array(
                (int) 0 => array(
                    'id' => '33',
                    'locale' => 'fre',
                    'model' => 'Transaction',
                    'foreign_key' => '2',
                    'field' => 'name',
                    'content' => 'Vente'
                ),
                (int) 1 => array(
                    'id' => '34',
                    'locale' => 'esp',
                    'model' => 'Transaction',
                    'foreign_key' => '2',
                    'field' => 'name',
                    'content' => 'Venta'
                )
            ),
            '_slug' => array(
                (int) 0 => array(
                    'id' => '35',
                    'locale' => 'fre',
                    'model' => 'Transaction',
                    'foreign_key' => '2',
                    'field' => 'slug',
                    'content' => 'vente'
                ),
                (int) 1 => array(
                    'id' => '36',
                    'locale' => 'esp',
                    'model' => 'Transaction',
                    'foreign_key' => '2',
                    'field' => 'slug',
                    'content' => 'venta'
                )
            )
ndiayejp
Auteur

le probleme pour le résumé c'est la traduction de models liés ! Dans ton tuto sur l'internationalisation avec Cakephp tu n'as pas parlé du cas ou on a deux models liés ! exemple Posts liés a catégories dans ton tuto !

ndiayejp
Auteur

Le behavior "Translate" ne permet pas la traduction des modèles liés ! uune solution?

Je suis exactement dans le même cas que toi JP, pour l'instant la seule solution que j'ai trouvé c'est de ne pas utiliser le "containable" et de la faire à la main ... Si jamais tu as trouvé la solution, je suis preneur :)

ndiayejp
Auteur

toujours pas de solution à mon niveau et je trouve personne qui a une solution c'est le pire ! Faire à la main c'est à dire comment tu as fait? Je pense GRaf devrait avoir la solution !

Faire à la main, c'est faire un appel find en plus sur la table de translation. Mais peut être que je visualise mal ta conception. ça a l'air plus simple de mon coté dans le sens ou j'ai une table "Page", une "LanguagesPage" (qui contient le slug et le titre) et une "Language".
Je galère avec le router pour qu'il prenne en compte le slug dans les différentes langues et avec un préfix de langue ... et je trouve pas d'infos pour tout cela ...

Jp : peut être que tu trouveras ton bonheur ici : http://www.formation-cakephp.com/449/i18n-traduction-des-modeles-lies

ndiayejp
Auteur

je vais essayer pour mais ça m'étonne qu'il n'y est pas une solution plus simple ! Merci Tomcita tu as un siteweb perso !

il est dans mes infos perso mais je sais pas où on peut le voir mais ça n'a pas de rapport avec cakephp. Je suis en pleine autoformation ;)

ndiayejp
Auteur

ahh désolé impossible de le voir ton info là !