CakePHP:更改语言后重新加载.po文件

时间:2014-03-20 19:05:40

标签: cakephp internationalization cakephp-2.4 po

我必须将当前语言选择系统从表单提交更改为选择框ajax提交。因此,当语言改变时,我必须返回登录标签以使用javascript(具体地说,用户名,密码和登录按钮标签)来更改它们。

问题是,虽然我成功更改了语言,但.po文件已经加载,所以它会返回给我之前的语言。

这是我的代码:

public function cambiar_idioma($idioma)
{
    $this->Session->write('login.language', $idioma);
    Configure::write('config.language', $idioma);
    $this->set(array(
        'UsuarioLogin' => __("Usuario"), 
        'UsuarioPassword' => __("Contraseña"), 
        'login-button' => __("Ingresar")
    ));
    $this->set('_serialize', array('UsuarioLogin', 'UsuarioPassword', 'login-button'));
}

因此,当我更改为'spa'时,它会将其设置为新语言,但由于.po文件已加载,因此数组将以英语返回。反之亦然。所以我想我必须在返回的数组之前再次加载.po文件,但我不知道该怎么做。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:0)

尝试拨打I18n::clear(),不确定是否会执行此操作,因为它会清除翻译域,但您使用的是__()而不是__d(),请尝试一下。

答案 1 :(得分:0)

我得到了一个解决方案,虽然不是最好的解决方案。

我不得不使用i18n::loadPo()将.po文件加载到数组中。不是最好的解决方案,但至少它对我有用。