2013-08-04 110 views
2

我正在研究需要國際化功能(將所有靜態字符串轉換爲用戶語言以及設置日期和貨幣格式)的單頁應用程序。Ember和國際化:請求最佳實踐和實施方法

我使用Ember.js,因此大多數靜態字符串都在html bocks中(模板或視圖中),或者在典型的Javascript消息中,比如「您確定要刪除...」(部分控制器文件)。

我正在尋找有關如何從應用程序中抽取所有這些字符串和其他語言環境特定位的最佳做法和經驗。

我主要看到一個問題,即用戶語言只有在登錄後才能確定。但是那個時候,完整的應用程序已經被加載(用英文),因此「重定向到」另一種語言是不可能的(除非在應用程序啓動時加載所有可能的語言的所有字符串 - 但這需要太多的數據在開始時加載)。

任何反饋都很好!

- 更新 -

我在此期間發現了,我可以使用字符串翻譯(https://github.com/jamesarosen/ember-i18n)餘燼,國際化庫。

但是我的主要問題仍然存在:如何在登錄後如何動態加載對應於所選語言或與用戶語言相對應的translation.js文件?

有沒有一種方法來存儲選定的語言,以便在下一次應用程序啓動時,應用程序使用正確的語言(因此在渲染UI之前加載正確的翻譯文件)。

希望有人能幫助。

Marc

+0

請參考http://stackoverflow.com/questions/18065266/ember-dynamic-switch-to-choosen-language-using-i18n-library查看一個工作示例。 – cyclomarc

回答

1

您可以將語言設置存儲在cookie中,但這不是100%的方法。或者只要知道該語言,就用一個ajax調用加載翻譯json。

+0

Thx。我也想過用ajax調用加載翻譯文件,但問題是如何更新應用程序加載期間已經呈現的所有模板。在我使用的模板{{t application.statusbar.title}}中,所有這些應該被新的語言值替換... – cyclomarc

+0

額外說明:我想阻止每個字符串必須是值的限制,因爲這會給嚴重的性能問題(請參閱stackoverflow中的各種問題)。 – cyclomarc

+0

如果您只是使用正確的語言設置重新加載整個頁面,該怎麼辦? – Remy