CakePHP 2.x翻译后备

时间:2015-12-04 10:46:54

标签: cakephp internationalization cakephp-2.x

我需要有翻译的后备。

如果我有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']; 它似乎被忽略了,结果中没有转换,只是来自模型表的数据。

1 个答案:

答案 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”是使用“翻译行为”翻译的字段。