0
使用i18n本地化文件本地化jquery ui datepicker非常簡單,但將日期選擇器的dateFormat
屬性設置爲在iten文件中找到的默認屬性證明具有挑戰性。在下面的文件爲法國,你可以看到默認的日期格式指定日,月,年從datepicker本地化文件設置datepicker.js的日期格式
(function(factory) {
if (typeof define === "function" && define.amd) {
// AMD. Register as an anonymous module.
define([ "../datepicker" ], factory);
} else {
// Browser globals
factory(jQuery.datepicker);
}
}(function(datepicker) {
datepicker.regional['fr'] = {
closeText: 'Fermer',
prevText: 'Précédent',
nextText: 'Suivant',
currentText: 'Aujourd\'hui',
monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
monthNamesShort: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin',
'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
dayNamesMin: ['D','L','M','M','J','V','S'],
weekHeader: 'Sem.',
dateFormat: 'dd/mm/yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''};
datepicker.setDefaults(datepicker.regional['fr']);
return datepicker.regional['fr'];
}));
這是怎麼了,我在運行時動態設置本地化文件。
if (General.CountryCode != "US") {
var scriptUrl = "/Scripts/datepicker-glob/datepicker-" + General.CountryCode.toLowerCase() + ".js";
console.log("fetching script: ", scriptUrl);
//now get datepicker local file and load it into the dom
$.getScript(scriptUrl).fail(function() {
console.log("script fetch failed");
});
console.log("loaded script. Setting defaults for datepicker");
//console.log("dateformat: ", $.datepicker.regional[General.CountryCode.toLowerCase()].dateFormat);
//now set the default on all datepickers
console.log($.datepicker);
//console.log($.datepicker);
$.datepicker.setDefaults(
$.extend(
{
'dateFormat': $.datepicker.regional[0].dateFormat
},
$.datepicker.regional[General.CountryCode.toLowerCase()]
)
);
console.log("defaults set.");
}
在$.extend
下面一行'dateFormat': $.datepicker.regional[0].dateFormat
失敗,因爲$.datepicker.regional[0]
似乎是不確定的;然而,以下行console.log($.datepicker);
返回如下:
根據那個球看起來好像我的代碼應該是工作。
如何從動態加載的i18n文件正確檢索區域的dateFormat值?