CakePHP无法在保存时将翻译保存到i18n

时间:2014-03-31 10:05:33

标签: cakephp internationalization translation cakephp-2.2

试图让我理解CakePHP 2的翻译行为,并在创建内容步骤时失败。

我们正在努力让翻译基于访问该网站的子域工作。因此en.example.com将成为英语网站,fr.example.com将成为法语网站。然后通过检查HTTP主机在引导程序中设置语言环境: -

switch ($_SERVER['HTTP_HOST']) {
    case 'fr.example.com':
        Configure::write('Config.language', 'fre');
        break;
    case 'en.example.com':
    default:
        Configure::write('Config.language', 'eng');
        break;

}

我使用i18n shell脚本创建了i18n表,并测试了如果我手动将一些已翻译的字段添加到表中,上面的配置可用于检索数据。

我们有一个页面模型,我们想要翻译标题和正文: -

class Page extends AppModel {

    public $actsAs = array(
        'Translate' => array(
            'title',
            'body'
        )
    );

我们的想法是,当在子域上创建页面时,我们希望它为每种语言创建页面版本。因此,如果在en.example.com上创建页面,则会同时创建法语版本。我试图在Page :: afterSave()方法中执行此操作,但它没有将替代转换保存到i18n表:

public function afterSave($created, $options=array()) {

    parent::afterSave($created, $options);

    if ($created) {

        $this->locale = $this->locale=='eng' ? 'fre' : 'eng';
        $this->save($this->data, false, array('callbacks' => false));

    }

    return;

}

有什么建议吗?

0 个答案:

没有答案