2016-03-05 3 views
1

Désolé pour mon anglais, mais j'espère que vous me comprendrez. code simplifié ressemble à ceci:Cakephp 3 ne fonctionne pas pour la langue par défaut

// dans bootstrap.php

ini_set ('intl.default_locale', 'deu');

// MainMenusTable.php

initialize public function (array $ config) { parent :: initialiser (config $); ...

$this->addBehavior('Translate', ['fields' => ['title']]); 

...}

// dans le contrôleur - cela fonctionne!

public function add() 
{ 

    I18n::locale('eng'); 
    $mainMenu = $this->MainMenus->newEntity(); 
    if ($this->request->is('post')) {  
     $mainMenu = $this->MainMenus->patchEntity($mainMenu, $this->request->data); 
     $this->MainMenus->save($mainMenu) 
    } 
    $this->set(compact('mainMenu')); 
} 

// dans le contrôleur mais ce travail does't:

public function add() 
{ 

    I18n::locale('deu'); 
    $mainMenu = $this->MainMenus->newEntity(); 
    if ($this->request->is('post')) {  
     $mainMenu = $this->MainMenus->patchEntity($mainMenu, $this->request->data); 
     $this->MainMenus->save($mainMenu) 
    } 
    $this->set(compact('mainMenu')); 
} 

J'ai le même problème quand je lis le compte rendu

// dans contrôleur - CE FONCTIONNE!

I18n::locale('eng');  
    $query = $this->MainMenus->find('all')->order(['MainMenus.id' => 'ASC'])->all(); 

// dans le contrôleur mais ce travail does't:

I18n::locale('deu');  
    $query = $this->MainMenus->find('all')->order(['MainMenus.id' => 'ASC'])->all(); 

Pour 'deu' I enregistrements saisis manuellement. Savez-vous quel est le problème? Merci!

Répondre

1

Ceci est une solution au problème (provenant d'un autre forum): Le comportement suppose que vous stockez les enregistrements dans la langue par défaut. Si les paramètres régionaux actuels sont identiques à la langue par défaut, ils renverront simplement les enregistrements dans la base de données au lieu de les extraire de la table de traduction. Le titre ne sera pas sauvegardé dans la table i18n pour la langue par défaut, uniquement pour les autres langues.