0

我必须将当前的语言选择系统从表单提交更改为选择框 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 文件,但我不知道该怎么做。

有没有办法做到这一点?

4

2 回答 2

0

尝试调用I18n::clear(),不确定它是否会成功,因为它会清除翻译域但您使用的是 __() 而不是 __d(),试一试。

于 2014-03-20T20:23:52.697 回答
0

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

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

于 2014-03-21T01:04:30.003 回答