【问题标题】:CakePHP: Reload .po file after changing languageCakePHP:更改语言后重新加载 .po 文件
【发布时间】:2014-04-27 21:00:58
【问题描述】:

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

有没有办法做到这一点?

【问题讨论】:

    标签: cakephp internationalization cakephp-2.4 po


    【解决方案1】:

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

    【讨论】:

    • 它不起作用:/但它给了我一些解决方案的提示。无论如何,谢谢。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      相关资源
      最近更新 更多