我需要有翻译的后备。
如果我有2个翻译,例如:'eng'和'es' 有些记录有翻译,有些只有一个或没有。 如果我这样做,我希望如此:
$this->Post->locale = ['es', 'eng'];
$results = $this->Post->find('first', array(
'conditions' => array('Post.id' => $id)
));
我会得到'es'翻译,如果'es'不可用,我会得到'eng'。 但这似乎不起作用。 如果我将'locale'设置为单个值'eng'或'es',它可以正常工作,但是当我设置$ this-> locale = ['es','eng']; 它似乎被忽略了,结果中没有转换,只是来自模型表的数据。
答案 0 :(得分: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();
}
}
备注:字段“content”是使用“翻译行为”翻译的字段。