从datepicker本地化文件在datepicker.js上设置日期格式

时间:2015-03-02 20:31:27

标签: jquery jquery-ui datepicker

使用i18n本地化文件本地化jquery ui datepicker非常简单,但是将datepicker的dateFormat属性设置为hte i18n文件中的默认属性证明是具有挑战性的。在以下法国文件中,您可以看到指定日,月,年的默认日期格式

(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.");
        }  

'dateFormat': $.datepicker.regional[0].dateFormat中的以下行$.extend失败,因为$.datepicker.regional[0]似乎未定义;但是,以下行console.log($.datepicker);将返回以下内容:

enter image description here

根据那个镜头看起来好像我的代码应该正常工作。

如何从动态加载的i18n文件中正确检索区域dateFormat值?

1 个答案:

答案 0 :(得分: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。