jquery - 动态本地化 bootstrap-datetimepicker

标签 jquery localization datetimepicker

我正在尝试本地化 bootstrap-datetimepicker其中有一个包含不同语言的文件夹“locales”。

此选择器有一个名为“语言”的选项。我只是将其放在“nl”后面,看看会发生什么。这当然行不通,因为语言“nl”是在不同的文件中定义的。

将“nl”语言从“locales”中的文件复制到“bootstrap-datetimepicker.js”文件中就可以了。就在“en” block 后面:

var dates = $.fn.datetimepicker.dates = {
        en: {
            days:        ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
            daysShort:   ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
            daysMin:     ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
            months:      ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
            monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
            meridiem:    ["am", "pm"],
            suffix:      ["st", "nd", "rd", "th"],
            today:       "Today"
        },
        nl: {
            days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"],
            daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
            daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
            months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
            monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
            today: "Vandaag",
            suffix: [],
            meridiem: []
        }
    };

我的问题是,有没有办法加载包含所需语言的文件,而不是像我在这里为“nl”语言所做的那样将所有这些语言放入 js 文件中?

编辑

function setLanguage() {
        //debugger;
        // Let's get the browser's language
        var l_lang;
        if (navigator.userLanguage) // Explorer
            l_lang = navigator.userLanguage;
        else if (navigator.language) // FF
            l_lang = navigator.language;
        else
            l_lang = "";

        // If the parameter passed is not a string or an array, 
        // or if no browser's language can be found, let's use default file.
        if (l_lang == "") {
            loadScript("Scripts/bootstrap-datetimepicker.min.js");
            return;
        }

        var browserLang = l_lang.substr(0, 2);

        if (browserLang != "" || browserLang != null) {
            loadScript("Scripts/locales/bootstrap-datetimepicker." + browserLang + ".js");
            loadScript("Scripts/bootstrap-datetimepicker.min.js");
            return;
        }

        // If no language found, let's load the default language file:
        loadScript("Scripts/bootstrap-datetimepicker.min.js");
    };

    // A simple function to dynamically load a script.
    // Please note it uses jQuery (but you can adapt it easily)!
    function loadScript(url) {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = url;
        $("head").append(script);
        return;
    };

在我使用 datetimepicker 的 View (ASP.NET-MVC) 中:

 $(document).ready(function () {
    var browserLang;

    if (navigator.userLanguage) // Explorer
        browserLang = navigator.userLanguage.substr(0, 2);
    else if (navigator.language) // FF
        browserLang = navigator.language.substr(0, 2);
    else
        browserLang = 'en';

    $('#dpk1').datetimepicker({
        format: "dd M yyyy - hh:ii",
        autoclose: true,
        todayBtn: true,
        minuteStep: 15,
        startView: 2,
        todayHighlight: true,
        language: browserLang,
        pickerPosition: "bottom-left"
    });

    $('#dpk2').datetimepicker({
        format: "dd M yyyy - hh:ii",
        autoclose: true,
        todayBtn: true,
        minuteStep: 15,
        startView: 2,
        todayHighlight: true,
        language: browserLang,
        pickerPosition: "bottom-left"
    });
 });

最佳答案

已关注 DOC :

The plugin supports i18n for the month and weekday names and the weekStart option. The default is English ('en'); other available translations are avilable in the js/locales/ directory, simply include your desired locale after the plugin. To add more languages, simply add a key to $.fn.datetimepicker.dates, before calling .datetimepicker().

关于jquery - 动态本地化 bootstrap-datetimepicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20174255/

相关文章:

javascript - 为什么刷新浏览器后需要在文本字段上单击两次才能调用 JavaScript 中的函数?

ios - 使用本地化字符串时系统警告错误换行

PHP-SQL - 国际化和本地化 - Gettext-POedit

asp.net-mvc - 坚持使用资源文件进行本地化

jquery - Trent Richardson 日期时间选择器无法使用扩展函数 .datetimepicker()

jquery 事件触发两次

javascript - jQuery.fadeOut() 函数内部的整数倾斜?

javascript - jQuery 仅在单击的 div 处增加值

javascript - load()方法被多次进入(执行)

wordpress - 古腾堡侧边栏中的日期时间选择器