如何在dojo加载后更改dojo语言环境?

时间:2013-10-02 16:19:34

标签: dojo internationalization

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

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

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

1 个答案:

答案 0 :(得分:2)

根据dojo的文档,您无法在加载后更改区域设置。请参阅其文档中的this page,相关行是:

  

加载Dojo后,无法更改该区域设置   页。

我在这种情况下已经完成了添加新参数的说明,您可以在locale对象上指定dojoConfig属性来覆盖默认语言环境。


编辑:此用例有一个漏洞,请参阅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 */
});

它看起来仍然很多,但我认为这是实现这一目标的一种可行方法。