0

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

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

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

4

1 回答 1

2

根据 dojo 的文档,一旦加载,您就无法更改语言环境。从他们的文档中查看此页面,相关行是:

一旦加载了 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 */
});

看起来仍然需要做很多工作,但我认为这是实现这一目标的一种可能方法。

于 2013-10-02T17:17:19.873 回答