2015-03-02 82 views
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);返回如下:

enter image description here

根據那個球看起來好像我的代碼應該是工作。

如何從動態加載的i18n文件正確檢索區域的dateFormat值?

回答

0

我無法檢索默認日期值。這在技術上不是我的問題的答案,但我會提供我的解決方案,以防止他人幫助他人。我最終創建了一個dateformat的國家代碼字典。

RegionDateFormatDict: [ 
{ 
    key: "af", value: "d/m/yy" 
}, 
{ 
    key: "ar", value: "d/m/yy" 
}, 
{ 
    key: "az", value: "d.m.yy" 
}, 
{ 
    key: "be", value: "d.m.yy" 
}, 
{ 
    key: "bg", value: "d.m.yy" 
}, 
{ 
    key: "bs", value: "d.m.yy" 
}, 
{ 
    key: "ca", value: "d/m/yy" 
}, 
{ 
    key: "cs", value: "d.m.yy" 
}, 
{ 
    key: "cy-gb", value: "d/m/yy" 
}, 
{ 
    key: "cy", value: "d/m/yy" 
}, 
{ 
    key: "da", value: "d-m-yy" 
}, 
{ 
    key: "de", value: "d.m.yy" 
}, 
{ 
    key: "el", value: "d/m/yy" 
}, 
{ 
    key: "en-au", value: "d/m/yy" 
}, 
{ 
    key: "en-gb", value: "d/m/yy" 
}, 
{ 
    key: "en-nz", value: "d/m/yy" 
}, 
{ 
    key: "en", value: "d/m/yy" 
}, 
{ 
    key: "eo", value: "d/m/yy" 
}, 
{ 
    key: "es", value: "d/m/yy" 
}, 
{ 
    key: "et", value: "d.m.yy" 
}, 
{ 
    key: "eu", value: "yy-m-d" 
}, 
{ 
    key: "fa", value: "yy/m/d" 
}, 
{ 
    key: "fi", value: "d.m.yy" 
}, 
{ 
    key: "fo", value: "d-m-yy" 
}, 
{ 
    key: "fr-ca", value: "yy-m-d" 
}, 
{ 
    key: "fr-ch", value: "d.m.yy" 
}, 
{ 
    key: "fr", value: "d/m/yy" 
}, 
{ 
    key: "gl", value: "d/m/yy" 
}, 
{ 
    key: "he", value: "d/m/yy" 
}, 
{ 
    key: "hi", value: "d/m/yy" 
}, 
{ 
    key: "hr", value: "d.m.yy." 
}, 
{ 
    key: "hu", value: "yy.m.d." 
}, 
{ 
    key: "hy", value: "d.m.yy" 
}, 
{ 
    key: "id", value: "d/m/yy" 
}, 
{ 
    key: "is", value: "d.m.yy" 
}, 
{ 
    key: "it-ch", value: "d.m.yy" 
}, 
{ 
    key: "it", value: "d/m/yy" 
}, 
{ 
    key: "ja", value: "yy/m/d" 
}, 
{ 
    key: "ka", value: "d-m-yy" 
}, 
{ 
    key: "kk", value: "d.m.yy" 
}, 
{ 
    key: "km", value: "d-m-yy" 
}, 
{ 
    key: "ko", value: "yy-m-d" 
}, 
{ 
    key: "ky", value: "d.m.yy" 
}, 
{ 
    key: "lb", value: "d.m.yy" 
}, 
{ 
    key: "lt", value: "yy-m-d" 
}, 
{ 
    key: "lv", value: "d.m.yy" 
}, 
{ 
    key: "mk", value: "d.m.yy" 
}, 
{ 
    key: "ml", value: "d/m/yy" 
}, 
{ 
    key: "ms", value: "d/m/yy" 
}, 
{ 
    key: "nb", value: "d.m.yy" 
}, 
{ 
    key: "nl-be", value: "d/m/yy" 
}, 
{ 
    key: "nl", value: "d-m-yy" 
}, 
{ 
    key: "nn", value: "d.m.yy" 
}, 
{ 
    key: "no", value: "d.m.yy" 
}, 
{ 
    key: "pl", value: "d.m.yy" 
}, 
{ 
    key: "pt-br", value: "d/m/yy" 
}, 
{ 
    key: "pt", value: "d/m/yy" 
}, 
{ 
    key: "rm", value: "d/m/yy" 
}, 
{ 
    key: "ro", value: "d.m.yy" 
}, 
{ 
    key: "ru", value: "d.m.yy" 
}, 
{ 
    key: "sk", value: "d.m.yy" 
}, 
{ 
    key: "sl", value: "d.m.yy" 
}, 
{ 
    key: "sq", value: "d.m.yy" 
}, 
{ 
    key: "sr-sr", value: "d.m.yy" 
}, 
{ 
    key: "sr", value: "d.m.yy" 
}, 
{ 
    key: "sv", value: "yy-m-d" 
}, 
{ 
    key: "ta", value: "d/m/yy" 
}, 
{ 
    key: "th", value: "d/m/yy" 
}, 
{ 
    key: "tj", value: "d.m.yy" 
}, 
{ 
    key: "tr", value: "d.m.yy" 
}, 
{ 
    key: "uk", value: "d.m.yy" 
}, 
{ 
    key: "vi", value: "d/m/yy" 
}, 
{ 
    key: "zh-cn", value: "yy-m-d" 
}, 
{ 
    key: "zh-hk", value: "d-m-yy" 
}, 
{ 
    key: "zh-tw", value: "yy/m/d" 
}, 
{ 
    key: "zh", value: "yy/m/d" 
}] 

所有日期和月份的前導0都從每種格式中取消。

相關問題