试图让我理解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;
}
有什么建议吗?