2013-04-27 100 views
3

我有一個使用require.js和hbs.js(require-handlebars-plugin)等項目。在我的開發環境中一切正常,但在使用r.js(requirejs optimize)優化項目後,我遇到了一個問題。如何使用r.js和hbs.js使用多個語言環境

即,因爲hbs.js僅預編譯一個語言環境,所以整個i18n邏輯被破壞,不再可以改變語言環境。我懷疑,我不知何故必須爲每個地區做優化過程,但我看不出如何。如果有人能分享他們的解決方案,這將是非常好的

謝謝!

回答

1

好吧,這裏是我如何解決它:

首先,我創建了一個require.js引導文件爲每種語言。然後,我修改了我的maven pom.xml以執行兩次JavaScript優化,每個區域設置一次。我用兩個執行元素requirejs-maven-plugin,每個區域設置一個。每個元素都有一個configFile值,它指向相應的r.js構建文件。 (每種語言一個)。然後,語言環境的構建文件指向該語言的引導文件。

運行優化後,您現在將擁有每個語言環境的一個醜陋的js文件。但有可能這些都不包括在最終的戰爭檔案中。您必須將r.js build_out文件夾中的醜化文件複製到戰爭中。我通過將配置元素添加到maven-war-plugin中來實現這一點; warSourceDirectory和webResources來複制我的兩個語言環境。我還使用webSourceInclude和webSourceExlude刪除我不想要的文件。

最後一步是在加載站點時加載正確的require bootstrap文件。要做到這一點只需創建一個在您的index.html一段JavaScript代碼,它首先確定您的區域設置(例如從一個cookie),然後動態加載程序的引導文件

document.write("<script data-main='bootstrap_" + getLocaleString() + "' src='/js/lib/require.js'><\/script>"); 

感謝的https://github.com/SlexAxton/require-handlebars-plugin筆者對我的幫助圖這一點。

相關問題