2013-10-02 32 views
0

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

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

有什么想法?由于我的应用程序将作为单层构建并部署到客户,因此我不担心dojo的某些更改会发生此情况。

回答

2

根据dojo的文档,一旦加载它就不能更改区域设置。看到他们的文档this page,相关线路是:

一旦道场被加载,这是不可能改变的区域设置为 页面。

你添加新的参数的描述是什么,我在这种情况下完成的,你可以在dojoConfig对象指定locale属性来覆盖默认的语言环境。


编辑:这个用例有一个开放的bug,见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 */ 
}); 

它仍然看起来很多工作,但我想这是实现这一点的一种可能方法。

+0

是的,Kryptic。我知道这些。我在这里问的是想知道任何有关Dojo限制的工作,即使我们可能会对Dojo做一些改变(当然不会太多)。任何想法? –

+0

@肖恩我发布了一些更多的信息,并链接到一个关于这个问题的公开票 – Kryptic

+0

这很好听。我会试一试。 –