2013-10-02 85 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

這很好聽。我會試一試。 –