Bonsoir à tous,

Comme un bon élève j'ai suivi le tuto de Grafikart sur l'internationalisation.
Pas de problème du coté des traductions PO.
Pas de problème pour l'écriture sous plusieurs langues (I18n et sa table se débrouille très bien)

Seul problème, la modification du Behaviour de mes modèles empêche le find('all') de récupérer le contenu dans la bonne locale (ou plutot meme du contenu tout court...)

J'illustre :

Mon Modèle :

var $actsAs = array(
        'Translate' => array(
            'title' => '_title',
            'descript' => '_descript'
        )
    );

me renvoie :

(int) 0 => array(
            'Activity' => array(
                'id' => '14',
                'title' => '',
                'descript' => '',
                'img_url' => '/img/activities/std/851578-455087414601994-1601110696-n_1396994007.png',
                'locale' => 'eng'
            ),
            (int) 0 => array(
                'Activity __i18n__ title' => 'en',
                'Activity __i18n__ descript' => 'des en'
            ),
            '_title' => array(
                (int) 0 => array(
                    'id' => '101',
                    'locale' => 'fra',
                    'model' => 'Activity',
                    'foreign_key' => '14',
                    'field' => 'title',
                    'content' => 'fr'
                ),
                (int) 1 => array(
                    'id' => '102',
                    'locale' => 'eng',
                    'model' => 'Activity',
                    'foreign_key' => '14',
                    'field' => 'title',
                    'content' => 'en'
                ),
                (int) 2 => array(
                    'id' => '103',
                    'locale' => 'spa',
                    'model' => 'Activity',
                    'foreign_key' => '14',
                    'field' => 'title',
                    'content' => 'sp'
                ),
                (int) 3 => array(
                    'id' => '104',
                    'locale' => 'eus',
                    'model' => 'Activity',
                    'foreign_key' => '14',
                    'field' => 'title',
                    'content' => 'eus'
                )
            ),
            '_descript' => array(
                (int) 0 => array(
                    'id' => '105',
                    'locale' => 'fra',
                    'model' => 'Activity',
                    'foreign_key' => '14',
                    'field' => 'descript',
                    'content' => 'des fr'
                ),
                (int) 1 => array(
                    'id' => '106',
                    'locale' => 'eng',
                    'model' => 'Activity',
                    'foreign_key' => '14',
                    'field' => 'descript',
                    'content' => 'des en'
                ),
                (int) 2 => array(
                    'id' => '107',
                    'locale' => 'spa',
                    'model' => 'Activity',
                    'foreign_key' => '14',
                    'field' => 'descript',
                    'content' => 'des sp'
                ),
                (int) 3 => array(
                    'id' => '108',
                    'locale' => 'eus',
                    'model' => 'Activity',
                    'foreign_key' => '14',
                    'field' => 'descript',
                    'content' => 'des eus'
                )
            )
        ), ...

La ou Modèle :

var $actsAs = array(
        'Translate' => array(
            'title',
            'descript'
        )
    );

me renvoie : (en locale eng)

(int) 0 => array(
        'Activity' => array(
            'id' => '14',
            'title' => 'en',
            'descript' => 'des en',
            'img_url' => '/img/activities/std/851578-455087414601994-1601110696-n_1396994007.png',
            'locale' => 'eng'
        )

Ma question est a présent, comment garder la possibilité d'enregistrer sur plusieurs langues et sélectionner la lecture d'une seule ?

J'ai bien essayé de forcer la locale ou encore de trafiquer le $actsAs à la volée, mais sans succès.

Je m'en remet à vous, merci de votre aide.

Bonne soirée.

2 réponses


nclsndr
Auteur
Réponse acceptée

Bonsoir à tous,
j'ai trouver un petit fix pour la fonction proposé dans le tutoriel de Grafikart.
Pour les versions 2.x, le parse via le _ (underscore) pose problème.
Voici mon fix :

function readAll(){
        $datas = $this->read();
        foreach($datas as $field=>$trad){
            if(ctype_lower($field)){
                $datas$this->name]$field] = array();
                foreach($trad as $v){
                    $locale = $v'locale'];
                    $datas$this->name]$field]$locale] = $v'content']; 
                }
            }
        }
        return $datas; 
    }

Salut,

Moi j'ai suivi également le tuto, mais je n''arrive tout bonnement pas à générer mes index préfixés "_..."

Voici le post que j'ai créé, afin d'expliquer ce que j'obtiens.

Du coup, je ne peux même pas avancer dans le tutos, car je ne récupère pas toutes mes datas via le behavior Containable

http://www.grafikart.fr/forum/topic/14573

Si tu as une idée, je suis vraiment preneur, car là je suis bloqué

Merci