2017-05-23 30 views
0

根據文檔,app.json只允許定義一個語言環境。EXJS中的語言環境和動態多語言支持6

區域:「FR」

,如果我有一個多語言的應用程序,我希望用戶能夠動態地選擇自己的語言,會發生什麼?

如何包含多個區域設置?

然後,我怎樣才能動態地加載區域設置只改變一個Ext變量?例如:

Ext.setLocale(「es」);

回答

0

ExtJs無法在本地執行此操作。

在我的應用程序中,我通過定義一個類似於gettext的語言類來解決這個問題。

這使我可以使用默認語言中的每個字符串包含在函數Lang ._('我的文本')中。然後獨立於ExtJs完成翻譯(在我的情況下,翻譯界面是用ExtJs編寫的,但翻譯本身是獨立的)。

我仍然不能動態地改變語言。爲此,我需要在瀏覽器中重新渲染應用程序。在我的情況下,翻譯編譯爲app.js,因此不需要從服務器重新加載app.js

我只有兩種語言,所以這種方法是可以的。如果您需要支持多種語言,最好的方法是在呈現應用程序之前加載翻譯字符串。要切換語言,您需要加載翻譯並重新提交UI。

Saki's ExtJs site上有一篇關於此的好文章。

+0

我已經實現了'gettext'覆蓋你已經建議,但問題是,默認情況下,extjs的文本不會被locale取代。如日曆,警告消息和確認消息等,因爲我們只能在app.json文件中配置一個語言環境。如果您爲此提供解決方案,將會有所幫助。 –

+1

我確切地知道你的意思。直到現在我沒有解決這個問題。我讓英文框架的文本常量。 –