2
我已经绝对阅读过有关CakePHP国际化的SO帖子,而且似乎没有任何东西可以用于我。我正在使用CakePHP 2.5.1。CakePHP国际化不起作用
在配置/ bootstrap.php中:
//Default language
Configure::write('Config.language', 'spa');
在控制器/ AppController.php:
public $components = array('Session', 'DebugKit.Toolbar');
public function beforeFilter()
{
//Set the UI lang preference
if($this->Session->check('Config.language'))
{
Configure::write('Config.language', $this->Session->read('Config.language'));
}
}
我的文件结构是这样:
/Locale/
- default.mo
- default.po
- default.pot
- eng/LC_MESSAGES/
- default.mo
- default.po
我联系上这样的观点:
echo '<p class="">' . $this->Html->link('EN', array('controller' => 'users', 'action' => 'lang', 'en')) . '</p>';
echo '<p class="">' . $this->Html->link('ES', array('controller' => 'users', 'action' => 'lang', 'es')) . '</p>';
和我的用户控制器是否与此如下:
public function lang($which)
{
if($which == "en")
{
$this->Session->write('Config.language', 'eng');
} elseif($which == "es")
{
$this->Session->write('Config.language', 'spa');
} else
{
$this->Session->setFlash(_('Unknown language.'), 'flash_red');
}
$this->redirect('/');
}
当我点击任何链接(EN或ES),页面重新加载,但显示普通文本。
任何线索我可能会失踪?或者有关Cake核心代码开始调试的任何提示?
PD。错误日志不显示任何内容。
谢谢!
第一步,删除缓存('/ app/tmp/cache /')。 – ndm 2014-10-07 03:55:41
1)改变config/bootstrap.php以便没有名为“Config.language”的默认语言配置变量: 配置:: write('Config.defaultLanguage','spa');如果($ this-> Session-> check('Config.language')){Configure :: write('Config.language',$ this-> Session-> read(012) 'Config.language'));} else {Configure :: write('Config.language',Configure :: read('Config.defaultLanguage'));} 3)从/ app/tmp/cache /持久/*.* 4)验证您的po文件或使用poedit 5)使用调试包,并按照会话值 – 2014-10-07 11:56:28
@ndm我试过删除缓存,但这并没有解决它。 – Sandy 2014-10-07 15:36:16