2015-12-04 39 views
3

我需要翻譯後備。CakePHP 2.x翻譯後退

如果我有2個翻譯,例如:'eng'和'es' 某些記錄既有翻譯,也有一些只有一個或沒有翻譯。 我希望如果我做這種方式:

$this->Post->locale = ['es', 'eng']; 
$results = $this->Post->find('first', array(
    'conditions' => array('Post.id' => $id) 
)); 

我會得到「上課」的翻譯,如果「上課」是不可用,我會得到「工程」。 但這似乎並不奏效。 如果我將'locale'設置爲單個值'eng'或'es',它可以正常工作,但是當我設置$ this-> locale = ['es','eng']; 它似乎被忽略,沒有翻譯結果,只是來自模型表的數據。

回答

0

我有同樣的問題,並沒有發現足夠的解決辦法,所以我用以下解決方法:

 if (!isset($data['Page']['content'])) { 
      // TRANSLATION NOT AVAILABLE or empty content -> take default lang 
      $this->Page->locale = Configure::read('Page.default_language'); 
      $data = $this->Page->find('first', $options); 
      if (!isset($data['Page'])) { 
      // Not even the default translation found 
       throw new NotFoundException(); 
      } 
     } 

備註:字段「內容」是被翻譯與翻譯行爲的人。

+0

是的,您可以手動爲每個數據行執行此操作,但我希望在查詢多行時使用此回退 - 並且希望接收具有第一個可用翻譯的每行。 –