ฉันจะแปล jQuery UI Datepicker ได้อย่างไร


121

ฉันต้องการปฏิทินแบบเลื่อนลงที่แปลเป็นภาษาท้องถิ่นจริงๆ ปฏิทินภาษาอังกฤษไม่ได้สื่อถึงความเป็นเลิศบนเว็บไซต์ของนอร์เวย์อย่างแน่นอน ;-)

ฉันได้ทดลองใช้jQuery DatePickerแล้วเว็บไซต์ของพวกเขาบอกว่าสามารถแปลเป็นภาษาท้องถิ่นได้ แต่ดูเหมือนจะไม่ได้ผล

ฉันใช้ ASPNET.MVC และฉันต้องการใช้ไลบรารีจาวาสคริปต์เดียวจริงๆ ในกรณีนี้ jQuery

ปฏิทินชุดเครื่องมือ ajax เป็นที่ยอมรับได้หากมีเพียงปฏิทินนี้เท่านั้นที่จะแสดงชื่อภาษานอร์เวย์

Update: สุดยอด! ฉันเห็นว่าฉันไม่มีไฟล์ภาษารายละเอียดเล็กน้อย :-)


ลองดูการสาธิตนี้ แหล่งที่มาให้ตัวอย่างวิธีการทำที่ดี
Thomas Watnedal

คำตอบ:


183

สำหรับผู้ที่ยังมีปัญหาคุณต้องดาวน์โหลดไฟล์ภาษาที่คุณต้องการจากที่นี่:

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

จากนั้นรวมไว้ในหน้าของคุณเช่นนี้ (ภาษาอิตาลี):

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

จากนั้นใช้รหัสของ zilverdistel : D


ลิงก์นี้หายไปในหน้า jQuery UI หรือไม่ หาไม่เจอที่นั่นjqueryui.com/datepicker/#localization
Adam

79

ฉันหาการสาธิตและนำไปใช้ด้วยวิธีต่อไปนี้:

$.datepicker.setDefaults(
  $.extend(
    {'dateFormat':'dd-mm-yy'},
    $.datepicker.regional['nl']
  )
);

ฉันต้องตั้งค่าเริ่มต้นสำหรับรูปแบบวันที่ด้วย ...


11
สิ่งนี้ใช้ได้ผลสำหรับฉัน:$.datepicker.setDefaults($.datepicker.regional["uk"]);
alaster

26

สตริง $.datepicker.regional['it']ไม่ได้แปลทุกคำ

สำหรับการแปล datepicker คุณต้องระบุตัวแปรบางตัว:

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

ในกรณีนี้ datepicker ของคุณได้รับการแปลอย่างถูกต้อง


คำตอบนี้แสดงวิธีการเพิ่มการแปลโดยตรงโดยไม่ต้องนำเข้าไลบรารี นี่เป็นวิธีที่ฉันต้องการเพราะฉันใช้ jQuery $.getScript()เพื่อดึงไลบรารีหลักบน API ที่โฮสต์ของ Google
Alexander Dixon

11
  $.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


8

1.คุณต้องโหลดไฟล์ jQuery UI i18n:

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

2.ใช้$.datepicker.setDefaultsฟังก์ชันเพื่อตั้งค่าเริ่มต้นสำหรับ datepickers ทั้งหมด

3.ในกรณีที่คุณต้องการลบล้างการตั้งค่าก่อนที่จะตั้งค่าเริ่มต้นคุณสามารถใช้สิ่งนี้:

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

ลำดับของพารามิเตอร์มีความสำคัญเนื่องจากวิธีการ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"]);

5

นี่คือตัวอย่างวิธีการแปลภาษาโดยไม่ต้องมีห้องสมุดเพิ่มเติม

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="jqueryui@*" 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="jqueryui@*" 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>


5

หากคุณใช้ datepicker และ moment.js ของ jQuery UI ในโปรเจ็กต์เดียวกันคุณควรปิดข้อมูลโลแคลของ moment.js:

// 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']);

3

ในกรณีที่มีใครยังคงติดอยู่แม้จะมีคำตอบอื่น ๆ ฉันก็แก้ไขสิ่งนี้ด้วย:

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

สังเกต "GB" พิเศษ หลังจากนั้นก็ใช้งานได้ดี


1

วิธีนี้อาจช่วยได้

$(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>


1

ฉันแก้ไขโดยการเพิ่มคุณสมบัติdata-date-language="it":

$(document).ready(function() {
  $('#TxtDaDataDoc_Val').datepicker();
});
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<div class="form-group col-xs-2 col-sm-2 col-md-2">
    <div class="input-group input-append date form-group" 
        id="TxtDaDataDoc" data-date-language="it">
        <input type="text" class="form-control" name="date" 
               id="TxtDaDataDoc_Val" runat="server" />
        <span class="input-group-addon add-on">
            <span class="glyphicon glyphicon-calendar"></span>
        </span>
    </div>
</div>


0
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">

<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script src=">/js/datepicker-fr.js"></script>
<script>
jQuery(function() {
jQuery( "#datepicker" ).datepicker({minDate: 0 , dateFormat: 'mm/dd/yy'});
});

</script>

<script type="text/javascript">
$(document).ready(function(){
$('#datepicker').datepicker($.datepicker.regional['fr']);
});
</script>

0

$ .datepicker.regional ["vi-VN"] = {closeText: "Đóng", prevText: "Trước", nextText: "Sau", currentText: "Hôm nay", monthNames: ["Thángmột", "Tháng hai "," Tháng ba "," Thángtư "," Thángnăm "," Thángsáu "," Thángbảy "," Thángtám "," Thángchín "," Thángmười "," Thángmườimột "," Tháng mười hai "], monthNamesShort: [" Một "," Hai "," Ba "," Bốn "," Năm "," Sáu "," Bảy "," Tám "," Chín "," Mười "," Mười một "," Mười hai "], dayNames: ["Chủnhật "," Thứ hai "," Thứ ba "," Thứtư "," Thứnăm "," Thứsáu "," Thứbảy "], dayNamesShort: [" CN "," Hai "," Ba ", "Tư", "Năm", "Sáu", "Bảy"], dayNamesMin: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"], weekHeader : "Tuần", dateFormat: "dd / mm / yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ""};dayNamesShort: ["CN", "Hai", "Ba", "Tư", "Năm", "Sáu", "Bảy"], dayNamesMin: ["CN", "T2", "T3", "T4" , "T5", "T6", "T7"], weekHeader: "Tuần", dateFormat: "dd / mm / yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ""};dayNamesShort: ["CN", "Hai", "Ba", "Tư", "Năm", "Sáu", "Bảy"], dayNamesMin: ["CN", "T2", "T3", "T4" , "T5", "T6", "T7"], weekHeader: "Tuần", dateFormat: "dd / mm / yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ""};weekHeader: "Tuần", dateFormat: "dd / mm / yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ""};weekHeader: "Tuần", dateFormat: "dd / mm / yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ""};

        $.datepicker.setDefaults($.datepicker.regional["vi-VN"]);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.