2013-05-29 17 views
4

我們依賴的一些jquery插件提供了包含區域設置/文化特定文件的功能,以使非en-us用戶能夠感受到更多功能(例如,jquery-globalize和bootstrap-datapicker)。要求帶有requirejs的可選javascript文件(例如需要特定於語言環境的文件)

實現,這是如下的老同學的方式(其中「EN-AU」是動態確定的,有時會造成一個404失蹤文化):

<script type="text/javascript" src="/js/globalize/globalize.js"></script> 
<script type="text/javascript" src="/js/globalize/cultures/globalize.culture.en-AU.js"></script> 

有一個推薦的方法通過requirejs實現這一點(請注意,全球化是作爲墊片包含的)?

這是我第一次嘗試,目前還沒有確定requirejs optomizer如何處理它...

Globalize = require("globalize"); 
... 
locale = module.config().locale; 
if (locale != null) { 
    require(["globalize/globalize.culture." + locale], function() { 
    logger.debug("Loaded locale '" + locale + "'"); 
    Globalize.culture(locale); 
    }, function() { 
    logger.debug("Unable to load locale '" + locale + "'"); 
    }); 
} 

編輯:優化處理它不錯,但但解決的辦法並沒有真正工作,因爲文化文件異步加載有可能應用程序在文化設置之前使用了Globalize。

+1

您是否看到過您可以使用i18n進行本地化? http://requirejs.org/docs/api.html#i18n昨天發現。 – shapeshifta

+0

@shapeshifta是的,我們正在廣泛使用它,但據我所知它不適用於描述的場景(需要一個nls目錄等) – danw

回答

0

劍道在他們的代碼中做了類似的事情。

這是對他們的技術稍作修改。這種特殊的風格允許模塊通過require或直接腳本包含加載。

我稍微修改它以設置先決條件。缺點是,這段代碼將不再通過r.js優化器工作

var myLocalPrereqs = ['file_english.min']; 

("function" == typeof define && define.amd ? define : function (preReqs, func) { 
    return func() 
})(myLocalPrereqs, function() { 
    (function() { 
     // Your module code goes here... 
    })() 
}); 
相關問題