javascript - मैं jQuery यूआई डेटपिकर को कैसे स्थानीयकृत करूं?




jquery-ui localization calendar jquery-ui-datepicker (9)

उन लोगों के लिए जिनके पास अभी भी समस्याएं हैं, आपको अपनी इच्छित भाषा फ़ाइल को यहां से डाउनलोड करना होगा:

https://github.com/jquery/jquery-ui/tree/master/ui/i18n

और उसके बाद इसे अपने पृष्ठ में उदाहरण के लिए शामिल करें (इतालवी भाषा):

<script type="text/javascript" src="/scripts/jquery.ui.datepicker-it.js"></script>

फिर zilverdistel का कोड उपयोग करें: डी

मुझे वास्तव में एक स्थानीय ड्रॉपडाउन कैलेंडर की आवश्यकता है। एक अंग्रेजी कैलेंडर बिल्कुल नार्वेजियन वेबसाइट पर उत्कृष्टता को संवाद नहीं करता है ;-)

मैंने jQuery डेटपिकर के साथ प्रयोग किया है, उनकी वेबसाइट का कहना है कि इसे स्थानीयकृत किया जा सकता है, हालांकि यह काम नहीं कर रहा है।

मैं ASPNET.MVC का उपयोग कर रहा हूं, और मैं वास्तव में एक जावास्क्रिप्ट लाइब्रेरी से चिपकना चाहता हूं। इस मामले में jQuery।

AJAX टूलकिट कैलेंडर स्वीकार्य होगा, अगर यह केवल नॉर्वेजियन नाम प्रदर्शित करेगा।

अद्यतन: बहुत बढ़िया! मुझे लगता है कि मैं भाषा फाइलों को याद कर रहा हूं, इतना मामूली विस्तार नहीं :-)


  $.datepicker.setDefaults({
    closeText: "关闭",
    prevText: "&#x3C;上月",
    nextText: "下月&#x3E;",
    currentText: "今天",
    monthNames: [ "一月","二月","三月","四月","五月","六月",
    "七月","八月","九月","十月","十一月","十二月" ],
    monthNamesShort: [ "一月","二月","三月","四月","五月","六月",
    "七月","八月","九月","十月","十一月","十二月" ],
    dayNames: [ "星期日","星期一","星期二","星期三","星期四","星期五","星期六" ],
    dayNamesShort: [ "周日","周一","周二","周三","周四","周五","周六" ],
    dayNamesMin: [ "日","一","二","三","四","五","六" ],
    weekHeader: "周",
    dateFormat: "yy-mm-dd",
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: true,
    yearSuffix: "年"
  });

i18n कोड को https://github.com/jquery/jquery-ui/tree/master/ui/i18n से कॉपी किया जा सकता है


यह समाधान मदद कर सकता है।

$(document).ready(function () {
  var userLang = navigator.language || navigator.userLanguage;

  var options = $.extend({},
    $.datepicker.regional["ja"], {
      dateFormat: "yy/mm/dd",
      changeMonth: true,
      changeYear: true,
      highlightWeek: true
    }
  );

  $("#japaneseCalendar").datepicker(options);
});
#ui-datepicker-div {
  font-size: 14px;
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css"
          href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.min.css">
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.1/i18n/jquery-ui-i18n.min.js"></script>
</head>
<body>
<h3>Japanese JQuery UI Datepicker</h3>
<input type="text" id="japaneseCalendar"/>

</body>
</html>


स्ट्रिंग $.datepicker.regional['it'] सभी शब्दों का अनुवाद नहीं करता है।

डेटपिकर का अनुवाद करने के लिए आपको कुछ चर निर्दिष्ट करना होगा:

$.datepicker.regional['it'] = {
    closeText: 'Chiudi', // set a close button text
    currentText: 'Oggi', // set today text
    monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',   'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], // set month names
    monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'], // set short month names
    dayNames: ['Domenica','Luned&#236','Marted&#236','Mercoled&#236','Gioved&#236','Venerd&#236','Sabato'], // set days names
    dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], // set short day names
    dayNamesMin: ['Do','Lu','Ma','Me','Gio','Ve','Sa'], // set more short days names
    dateFormat: 'dd/mm/yy' // set format date
};

$.datepicker.setDefaults($.datepicker.regional['it']);

$(".datepicker").datepicker();

इस मामले में आपका डेटपिकर ठीक से अनुवादित है।


1. आपको jQuery UI i18n फ़ाइलों को लोड करने की आवश्यकता है:

<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/i18n/jquery-ui-i18n.min.js">
</script>

2. सभी $.datepicker.setDefaults लिए डिफ़ॉल्ट सेट करने के लिए $.datepicker.setDefaults फ़ंक्शन का उपयोग करें।

3. यदि आप डिफ़ॉल्ट सेट करने से पहले सेटिंग (ओं) को ओवरराइड करना चाहते हैं तो आप इसका उपयोग कर सकते हैं:

var options = $.extend(
    {},                                  // empty object
    $.datepicker.regional["fr"],         // fr regional
    { dateFormat: "d MM, y" /*, ... */ } // your custom options
);
$.datepicker.setDefaults(options);

jQuery.extend काम करता है जिस jQuery.extend से पैरामीटर का क्रम महत्वपूर्ण है। दो गलत उदाहरण:

/*
 * This overwrites the global variable itself instead of creating a
 * customized copy of french regional settings
 */
$.extend($.datepicker.regional["fr"], { dateFormat: "d MM, y"});

/*
 * The desired dateFormat is overwritten by french regional 
 * settings' date format
 */
$.extend({ dateFormat: "d MM, y"}, $.datepicker.regional["fr"]);

यहां उदाहरण दिया गया है कि आप कुछ अतिरिक्त लाइब्रेरी के बिना स्थानीयकरण कैसे कर सकते हैं।

jQuery(function($) {
  $('input.datetimepicker').datepicker({
    duration: '',
    changeMonth: false,
    changeYear: false,
    yearRange: '2010:2020',
    showTime: false,
    time24h: true
  });

  $.datepicker.regional['cs'] = {
    closeText: 'Zavřít',
    prevText: '&#x3c;Dříve',
    nextText: 'Později&#x3e;',
    currentText: 'Nyní',
    monthNames: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen',
      'září', 'říjen', 'listopad', 'prosinec'
    ],
    monthNamesShort: ['led', 'úno', 'bře', 'dub', 'kvě', 'čer', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],
    dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
    dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
    dayNamesMin: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
    weekHeader: 'Týd',
    dateFormat: 'dd/mm/yy',
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: false,
    yearSuffix: ''
  };

  $.datepicker.setDefaults($.datepicker.regional['cs']);
});
<!DOCTYPE html>
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <link data-require="[email protected]*" data-semver="1.10.0" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/css/smoothness/jquery-ui-1.10.0.custom.min.css" />
  <script data-require="[email protected]*" data-semver="1.10.0" src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/jquery-ui.js"></script>
  <script src="datepicker-cs.js"></script>
  <script type="text/javascript">
    $(document).ready(function() {
      console.log("test");
      $("#test").datepicker({
        dateFormat: "dd.m.yy",
        minDate: 0,
        showOtherMonths: true,
        firstDay: 1
      });
    });
  </script>
</head>

<body>
  <h1>Here is your datepicker</h1>
  <input id="test" type="text" />
</body>
</html>


यदि आप एक ही प्रोजेक्ट पर jQuery UI के डेटपिकर और moment.js का उपयोग करते हैं, तो आपको moment.js के लोकेल डेटा से piggyback बंद करना चाहिए:

// Finnish. you need to include separate locale file for each locale: https://github.com/moment/moment/tree/develop/locale
moment.locale('fi'); 

// fetch locale data internal structure, so we can shove it inside jQuery UI
var momentLocaleData = moment.localeData(); 

$.datepicker.regional['user'] = {
    monthNames: momentLocaleData._months,
    monthNamesShort: momentLocaleData._monthsShort,
    dayNames: momentLocaleData._weekdays,
    dayNamesShort: momentLocaleData._weekdaysMin,
    dayNamesMin: momentLocaleData._weekdaysMin,
    firstDay: momentLocaleData._week.dow,
    dateFormat: 'yy-mm-dd' // "2016-11-22". date formatting tokens are not easily interchangeable between momentjs and jQuery UI (https://github.com/moment/moment/issues/890)
};

$.datepicker.setDefaults($.datepicker.regional['user']);

अगर किसी अन्य उत्तर के बावजूद कोई भी इस पर अटक गया है, तो मैंने इसे हल किया:

$.datepicker.setDefaults($.datepicker.regional['en-GB']);

अतिरिक्त 'जीबी' नोट करें। उसके पश्चात इसने ठीक से काम किया।


जावास्क्रिप्ट में संपत्ति हटाने

इस पृष्ठ पर कई अलग-अलग विकल्प प्रस्तुत किए गए हैं, न कि क्योंकि अधिकांश विकल्प गलत हैं- या क्योंकि उत्तर डुप्लिकेट होते हैं-लेकिन क्योंकि उचित तकनीक उस परिस्थिति पर निर्भर करती है जिसमें आप हैं और आपके और / या आपके कार्यों के लक्ष्य टीम को पूरा करने की कोशिश कर रहे हैं। आपको जवाब देने के लिए स्पष्ट रूप से सवाल है, आपको यह जानने की जरूरत है:

  1. ईसीएमएस्क्रिप्ट का संस्करण जिसे आप लक्षित कर रहे हैं
  2. ऑब्जेक्ट प्रकारों की श्रेणी जिन्हें आप गुणों को हटाना चाहते हैं और उन संपत्ति नामों के प्रकार जिन्हें आप छोड़ने में सक्षम होना चाहते हैं (केवल स्ट्रिंग्स? सिंबल? कमजोर वस्तुओं से कमजोर संदर्भों को मैप किया गया है? ये सभी वर्षों से जावास्क्रिप्ट में प्रॉपर्टी पॉइंटर्स हैं )
  3. प्रोग्रामिंग एथोस / पैटर्न आप और आपकी टीम का उपयोग करते हैं। क्या आप कार्यात्मक दृष्टिकोण का पक्ष लेते हैं और उत्परिवर्तन आपकी टीम पर verboten है, या आप जंगली पश्चिम उत्परिवर्ती वस्तु उन्मुख तकनीकों को रोजगार देते हैं?
  4. क्या आप इसे शुद्ध जावास्क्रिप्ट में प्राप्त करना चाहते हैं या आप तृतीय-पक्ष लाइब्रेरी का उपयोग करने के इच्छुक और सक्षम हैं?

एक बार उन चार प्रश्नों का उत्तर देने के बाद, आपके लक्ष्यों को पूरा करने के लिए जावास्क्रिप्ट में "संपत्ति हटाने" की अनिवार्य रूप से चार श्रेणियां हैं। वो हैं:

उत्परिवर्ती वस्तु संपत्ति हटाने, असुरक्षित

यह श्रेणी वस्तु संदर्भों या ऑब्जेक्ट उदाहरणों पर परिचालन के लिए है जब आप मूल संदर्भ का उपयोग करना / जारी रखना चाहते हैं और अपने कोड में स्टेटलेस कार्यात्मक सिद्धांतों का उपयोग नहीं कर रहे हैं। इस श्रेणी में वाक्यविन्यास का एक उदाहरण टुकड़ा:

'use strict'
const iLikeMutatingStuffDontI = { myNameIs: 'KIDDDDD!', [Symbol.for('amICool')]: true }
delete iLikeMutatingStuffDontI[Symbol.for('amICool')] // true
Object.defineProperty({ myNameIs: 'KIDDDDD!', 'amICool', { value: true, configurable: false })
delete iLikeMutatingStuffDontI['amICool'] // throws

यह श्रेणी संपत्ति हटाने की सबसे पुरानी, ​​सबसे सीधी और सबसे व्यापक रूप से समर्थित श्रेणी है। यह Symbolपहली रिलीज को छोड़कर जावास्क्रिप्ट के प्रत्येक संस्करण में तारों और कार्यों के अलावा इंडेक्स का समर्थन करता है और सरणी करता है। हालांकि, यह उत्परिवर्तनीय है जो कुछ प्रोग्रामिंग सिद्धांतों का उल्लंघन करता है और इसमें प्रदर्शन प्रभाव पड़ता है। developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… पर उपयोग किए जाने पर इसका भी अपवाद अपवाद हो सकता developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

आराम आधारित स्ट्रिंग संपत्ति चूक

यह श्रेणी नए ईसीएमएस्क्रिप्ट स्वादों में सादे ऑब्जेक्ट या सरणी उदाहरणों पर परिचालन के लिए है जब एक गैर-उत्परिवर्तनीय दृष्टिकोण वांछित होता है और आपको सिंबल कुंजी के लिए खाते की आवश्यकता नहीं होती है:

const foo = { name: 'KIDDDDD!', [Symbol.for('isCool')]: true }
const { name, ...coolio } = foo // coolio doesn't have "name"
const { isCool, ...coolio2 } = foo // coolio2 has everything from `foo` because `isCool` doesn't account for Symbols :(

उत्परिवर्ती वस्तु संपत्ति हटाने, सुरक्षित

यह श्रेणी ऑब्जेक्ट लिटलल्स या ऑब्जेक्ट इंस्टेंस पर परिचालन करने के लिए है जब आप मूल संदर्भ का उपयोग जारी रखना / जारी रखना चाहते हैं, जबकि अपरिवर्तनीय गुणों पर अपवादों के खिलाफ सुरक्षा के दौरान:

'use strict'
const iLikeMutatingStuffDontI = { myNameIs: 'KIDDDDD!', [Symbol.for('amICool')]: true }
Reflect.deleteProperty(iLikeMutatingStuffDontI, Symbol.for('amICool')) // true
Object.defineProperty({ myNameIs: 'KIDDDDD!', 'amICool', { value: true, configurable: false })
Reflect.deleteProperty(iLikeMutatingStuffDontI, 'amICool') // false

इसके अलावा, जगहों पर म्यूटेटिंग ऑब्जेक्ट्स स्टेटलेस नहीं है, आप Reflect.deletePropertyआंशिक एप्लिकेशन और अन्य कार्यात्मक तकनीकों को करने के कार्यात्मक प्रकृति का उपयोग कर सकते हैं जो deleteबयान के साथ संभव नहीं हैं ।

सिंटेक्स-आधारित स्ट्रिंग प्रॉपर्टी चूक

यह श्रेणी नए ईसीएमएस्क्रिप्ट स्वादों में सादे ऑब्जेक्ट या सरणी उदाहरणों पर परिचालन के लिए है जब एक गैर-उत्परिवर्तनीय दृष्टिकोण वांछित होता है और आपको सिंबल कुंजी के लिए खाते की आवश्यकता नहीं होती है:

const foo = { name: 'KIDDDDD!', [Symbol.for('isCool')]: true }
const { name, ...coolio } = foo // coolio doesn't have "name"
const { isCool, ...coolio2 } = foo // coolio2 has everything from `foo` because `isCool` doesn't account for Symbols :(

पुस्तकालय आधारित संपत्ति चूक

यह श्रेणी आमतौर पर प्रतीकों के लिए लेखांकन और एक से अधिक संपत्ति को एक कथन में छोड़कर अधिक कार्यात्मक लचीलापन की अनुमति देती है:

const o = require("lodash.omit")
const foo = { [Symbol.for('a')]: 'abc', b: 'b', c: 'c' }
const bar = o(foo, 'a') // "'a' undefined"
const baz = o(foo, [ Symbol.for('a'), 'b' ]) // Symbol supported, more than one prop at a time, "Symbol.for('a') undefined"




javascript jquery-ui localization calendar jquery-ui-datepicker