2

我已经阅读了关于 CakePHP 国际化的所有 SO 帖子,但似乎没有什么对我有用。我正在使用 CakePHP 2.5.1。

在 config/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。错误日志不显示任何内容。

谢谢!

4

1 回答 1

0

上面的错误是使用了一个下划线,而不是两个:

$this->Session->setFlash(_('Unknown language.'), 'flash_red');

应该

$this->Session->setFlash(__('Unknown language.'), 'flash_red');

在代码的所有其他部分中,我只使用一个下划线,而国际化应该是两个。

于 2014-10-09T17:30:37.653 回答