【问题标题】:How to change dojo locale after dojo loaded?dojo加载后如何更改dojo语言环境?
【发布时间】:2013-10-02 16:19:33
【问题描述】:

我们需要在加载 dojo 之前在 data-dojo-config 中设置区域设置,以便 dojo.i18n 可以使用此区域设置。是否有任何解决方法可以在 dojo 加载后在 dojo/_base/config 中更改此语言环境,以便任何进一步的 dojo.i18n 调用都可以使用此新语言环境?

我有一个单页应用程序,经过精心设计,我已经能够随时动态地重新创建我的所有 UI 小部件。我想在某处添加一个选择,以便用户可以即时更改语言。目前我唯一的解决方案是在 Url 上放置一个 queryString locale='newLocale' 并强制刷新浏览器。那行得通,但是用户所做的一切都丢失了,并且有了新的开始。这不是我想要的。

有什么想法吗?我不害怕对 dojo 进行一些更改来实现这一点,因为我的应用程序将构建为单层并部署给客户。

【问题讨论】:

    标签: dojo internationalization


    【解决方案1】:

    根据 dojo 的文档,一旦加载,您就无法更改语言环境。请参阅他们的文档中的this page,相关行是:

    加载 Dojo 后,无法更改 页面。

    您对添加新参数的描述是我在这种情况下所做的,您可以在dojoConfig 对象上指定locale 属性以覆盖默认语言环境。


    编辑:此用例存在一个未解决的错误,请参阅https://bugs.dojotoolkit.org/ticket/17196。在该票证中,似乎还有一种解决方法,基本上涉及手动加载您要使用的语言的资源文件并更新任何文本。

    因此,调整他们的示例 (http://jsbin.com/aquviq/1/edit),这将在您启动更改区域设置操作后运行:

    require(['dojo/i18n!dojo/nls/' + resourceModuleWithLocale], function (resource) {
        /* in here, you must set all of the text manually to the values in the resource object */
    });
    

    这似乎仍然需要大量工作,但我认为这是实现此目的的一种可能方法。

    【讨论】:

    • 是的,Kryptic。我知道这些。我在这里问的是想知道解决这个道场限制的任何工作,甚至我们可能会对道场做一些改变(当然不是太多)。有什么想法吗?
    • @Sean 我发布了更多信息并链接到关于此问题的公开票
    猜你喜欢
    • 1970-01-01
    • 2014-04-23
    • 2018-01-25
    • 1970-01-01
    • 2021-03-18
    • 2013-04-27
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多