我必须将当前语言选择系统从表单提交更改为选择框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文件,但我不知道该怎么做。
有办法做到这一点吗?
答案 0 :(得分:0)
尝试拨打I18n::clear(),不确定是否会执行此操作,因为它会清除翻译域,但您使用的是__()而不是__d(),请尝试一下。
答案 1 :(得分:0)
我得到了一个解决方案,虽然不是最好的解决方案。
我不得不使用i18n::loadPo()
将.po文件加载到数组中。不是最好的解决方案,但至少它对我有用。