2015-12-04 176 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

是的,您可以手动为每个数据行执行此操作,但我希望在查询多行时使用此回退 - 并且希望接收具有第一个可用翻译的每行。 –