【问题标题】:i18n - update labelsi18n - 更新标签
【发布时间】:2023-07-12 13:46:01
【问题描述】:

我正在为多语言混合应用程序准备框架。我想使用 i18n 作为多语言库。我面临的问题非常简单,但我找不到合适的文档:

假设我将语言设置为“de”,从这一点开始,每次我调用 i18n.t("some_key") 时,都会返回“de”翻译,但是对于每个已经呈现的标签,文本不变。

有没有办法刷新 i18n 呈现的所有文本标签,也是页面中已经存在的标签?或者唯一的选择是将新选择保存在某处并重新加载所有内容,以便 init() 命令考虑保存的信息? (例如 cookie?)

【问题讨论】:

    标签: javascript hybrid-mobile-app i18next


    【解决方案1】:

    这取决于您使用的框架。如果您决定使用 JQUERY,这很简单。检查使用 JQUERY 解决此问题的其他帖子:

    How to dynamically change language using jquery-i18n-properties and JavaScript?

    Angular 还实现了 i18n 并允许在运行时切换语言:

    做类似的事情:

    $translate.use('es'); 
    

    http://www.ng-newsletter.com/posts/angular-translate.html

    【讨论】:

    • 谢谢,我在示例中看到要翻译的部分是 .empty() 然后是 .append(...) 所以基本上它会再次重新渲染。然后的方法是将所有标签存储在具有特定类的某个跨度内,然后,当调用 setLng 时,访问所有跨度并更新值,没有办法做到这一点“开箱即用”对吗?