1.最小它是如何工作
在你查看使用功能__()
,例如,用英文写(主要语言):
<?php echo __('My name is Tom');?>
然后在.po
文件for French/app/Locale/fra/LC_MESSAGES/default.po translate:
msgid "My name is Tom"
msgstr "Mon nom est Tom"
您可以使用poedit还是不错的PHP编辑器(UTF-8)所示eclipse
然后在控制器 - 可以AppController.php
- >public function beforeFilter()
你可以设置你的语言,如:
$this->Session->write('Config.language', 'fra');
和...
不要忘记设置您的主要语言/Config/core.php
例如:
Configure::write('Config.language', 'eng');
和使用会话组件 - 在你的控制器:
public $components = array('Session');
2。有关完整的多语言系统 您需要:
- 附加功能初始化语言像
$this->_setLanguage();
从网址参数
- 附加功能获得语言切换语言在你的视图/站点布局的链接语言PARAM
- 集你的config/routes.php文件
- 可以路由扩展的HtmlHelper语言PARAM添加到所有哟乌尔链接,如:
应用::使用( '的HtmlHelper', '查看/助手'); 类MyHtmlHelper扩展的HtmlHelper {
public function url($url = null, $full = false) {
if(!isset($url['language']) && isset($this->params['language'])) {
$url['language'] = $this->params['language'];
}
return parent::url($url, $full);
}
}
UPDATE:
表现场实地所有语言:http://api.cakephp.org/2.4/source-class-L10n.html#177-326
你是绝对正确的,当我设置在核心默认语言。 php ::配置::写('Config.language','eng');工作正常 但当我改变英语法语,在beforeFilter() $ this-> Session-> write('Config.language','fre'); 法国版本不起作用。 终于在英文版本正常工作,但不适用于法文版本 – psanjib
您应该使用'fra'而不是'fre' - 对不起,我的错误 –
我也使用'fra',但在得到您的反馈后,我使用'fre'不工作 – psanjib