Локализация jQuery Datepicker

Мне нужен французский календарь, и я не понимаю, в чем проблема. Полагаю, я не использую региональные опции, как должно быть. Но...

Вот мой код:

$(function() {
  $('#Date').datepicker({
      showMonthAfterYear: false,
      showOn: 'both',
      buttonImage: 'media/img/calendar.png',
      buttonImageOnly: true,
      dateFormat:'d MM, y'
    },
    $.datepicker.regional['fr']
  );
});

person Shipow    schedule 21.09.2009    source источник


Ответы (8)


Вы можете сделать это

 $.datepicker.regional['fr'] = {clearText: 'Effacer', clearStatus: '',
    closeText: 'Fermer', closeStatus: 'Fermer sans modifier',
    prevText: '<Préc', prevStatus: 'Voir le mois précédent',
    nextText: 'Suiv>', nextStatus: 'Voir le mois suivant',
    currentText: 'Courant', currentStatus: 'Voir le mois courant',
    monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
    'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
    monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
    'Jul','Aoû','Sep','Oct','Nov','Déc'],
    monthStatus: 'Voir un autre mois', yearStatus: 'Voir un autre année',
    weekHeader: 'Sm', weekStatus: '',
    dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
    dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
    dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
    dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: 'Choisir le DD, MM d',
    dateFormat: 'dd/mm/yy', firstDay: 0, 
    initStatus: 'Choisir la date', isRTL: false};
 $.datepicker.setDefaults($.datepicker.regional['fr']);
person Najeebullah Shah    schedule 23.04.2012
comment
На самом деле я нашел этот подход лучшим для моей цели. Таким образом, вы можете вводить строки своими собственными переменными и не полагаться на (иногда неполную) локализацию пользовательского интерфейса jQuery. - person Deckard; 11.05.2012

Этот код должен работать, но вам необходимо включить локализацию на свою страницу (по умолчанию она не включена). Попробуйте поместить это в свой тег <head> где-нибудь после, где вы включаете jQuery и jQueryUI:

<script type="text/javascript"
        src="https://raw.githubusercontent.com/jquery/jquery-ui/master/ui/i18n/datepicker-fr.js">
</script>

Я не могу найти, где это задокументировано на сайте jQueryUI, но если вы просмотрите источник этой демонстрации вы увидите, как они это делают. Также обратите внимание, что при включении этого JS-файла по умолчанию для датпикера будет установлен французский язык, поэтому, если вы хотите, чтобы только некоторые датпикеры были на французском языке, вам придется вернуть по умолчанию английский язык.

Вы можете найти все языки здесь, на github: https://github.com/jquery/jquery-ui/tree/master/ui/i18n

person Kip    schedule 21.09.2009
comment
Вы можете найти их сейчас на github по адресу github.com/jquery/jquery. -ui / blob / master / ui / i18n - person elboletaire; 02.02.2013
comment
URL-адрес jqueryui.com/demos/datepicker/localization.html теперь равен 404 для просмотреть исходный код этой демонстрации. - person Funk Forty Niner; 15.12.2016

Если вы хотите включить некоторые параметры помимо региональной локализации, вы должны использовать $ .extend, например:

$(function() {
   $('#Date').datepicker($.extend({
      showMonthAfterYear: false,
      dateFormat:'d MM, y'
    },
    $.datepicker.regional['fr']
  ));
});
person Edu    schedule 01.06.2013
comment
Это неверно. Он перезапишет формат даты и будет отображать настройки месяца за годом с французским региональным. - person Salman A; 19.02.2016

Вы должны расширить региональные параметры следующим образом (код разделен на несколько строк для удобства чтения):

var options = $.extend(
    {},                                  // empty object
    $.datepicker.regional["fr"],         // fr regional
    { dateFormat: "d MM, y" /*, ... */ } // your custom options
);
$("#datepicker").datepicker(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"]);

PS: вам также необходимо загрузить файлы jQuery UI i18n:

<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/i18n/jquery-ui-i18n.min.js">
</script>
person Salman A    schedule 28.12.2014
comment
Это именно то, что решает мою проблему (установка языкового стандарта сбрасывает параметр dateFormat, даже если он установлен явно). Спасибо (и здорово, что вы показали нерабочие примеры). - person MV.; 11.09.2016
comment
Вот и все! При региональной настройке параметры Datepicker сбрасываются! Искал это два дня. - person ThorstenC; 13.06.2018

Если вы ищете datepicker на испанском языке (datepicker en español)

<script type="text/javascript">
    $.datepicker.regional['es'] = {
        monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
        monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
        dayNames: ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado'],
        dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'],
        dayNamesMin: ['Do', 'Lu', 'Ma', 'Mc', 'Ju', 'Vi', 'Sa']
    }

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

</script>
person Mauricio Gracia Gutierrez    schedule 12.01.2016

datepicker по-фински (Käännös suomeksi)

$.datepicker.regional['fi'] = {
  closeText: "Valmis", // Display text for close link
  prevText: "Edel", // Display text for previous month link
  nextText: "Seur", // Display text for next month link
  currentText: "Tänään", // Display text for current month link
  monthNames: [ "Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu",
  "Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu" ], // Names of months for drop-down and formatting
  monthNamesShort: [ "Tam", "Hel", "Maa", "Huh", "Tou", "Kes", "Hei", "Elo", "Syy", "Lok", "Mar", "Jou" ], // For formatting
  dayNames: [ "Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai" ], // For formatting
  dayNamesShort: [ "Sun", "Maa", "Tii", "Kes", "Tor", "Per", "Lau" ], // For formatting
  dayNamesMin: [ "Su","Ma","Ti","Ke","To","Pe","La" ], // Column headings for days starting at Sunday
  weekHeader: "Vk", // Column header for week of the year
  dateFormat: "mm/dd/yy", // See format options on parseDate
  firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
  isRTL: false, // True if right-to-left language, false if left-to-right
  showMonthAfterYear: false, // True if the year select precedes month, false for month then year
  yearSuffix: "" // Additional text to append to the year in the month headers
  };
person Ilkka Koivistoinen    schedule 05.03.2018

Datepicker на немецком (Deutsch):

$.datepicker.regional['de'] = {
    monthNames: ['Januar','Februar','März','April','Mai','Juni',
    'Juli','August','September','Oktober','November','Dezember'],
    monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
    'Jul','Aug','Sep','Okt','Nov','Dez'],
    dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
    dayNamesShort: ['Son','Mon','Die','Mit','Don','Fre','Sam'],
    dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
    firstDay: 1};
 $.datepicker.setDefaults($.datepicker.regional['de']);
person basZero    schedule 11.08.2017

Я только что добавил

jQuery.datetimepicker.setLocale('fr');

и это сработало

person nadi    schedule 09.10.2020