diff --git a/core/modules/locale/locale.datepicker.js b/core/modules/locale/locale.datepicker.js
index 81f1e17..9a0e9d1 100644
--- a/core/modules/locale/locale.datepicker.js
+++ b/core/modules/locale/locale.datepicker.js
@@ -1,6 +1,6 @@
 (function ($) {
 
-$.datepicker.regional['drupal-locale'] = {
+$.datepicker.regional['drupal-locale'] = $.extend({
   closeText: Drupal.t('Done'),
   prevText: Drupal.t('Prev'),
   nextText: Drupal.t('Next'),
@@ -61,9 +61,9 @@ $.datepicker.regional['drupal-locale'] = {
     Drupal.t('Sa')
   ],
   dateFormat: Drupal.t('mm/dd/yy'),
-  firstDay: Drupal.settings.jqueryuidatepicker.firstDay,
-  isRTL: Drupal.settings.jqueryuidatepicker.rtl
-};
+  firstDay: 0,
+  isRTL: 0
+}, Drupal.settings.jquery.ui.datepicker);
 $.datepicker.setDefaults($.datepicker.regional['drupal-locale']);
 
 })(jQuery);
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index 0a2e70e..07bd64c 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -935,15 +935,33 @@ function locale_css_alter(&$css) {
  * Provides the language support for the jQuery UI Date Picker.
  */
 function locale_library_info_alter(&$libraries, $module) {
-  global $language;
-  if ($module == 'system' && isset($libraries['system']['ui.datepicker'])) {
+  if ($module == 'system' && isset($libraries['ui.datepicker'])) {
+    global $language;
     $datepicker = drupal_get_path('module', 'locale') . '/locale.datepicker.js';
-    $libraries['system']['ui.datepicker']['js'][$datepicker] = array('group' => JS_THEME);
-    $libraries['system']['ui.datepicker']['js'][] = array(
+    // locale.datepicker.js defines a configuration object for jQuery UI Date
+    // Picker containing and accessing:
+    // - localized strings via Drupal.t(); these are in the JS_DEFAULT group.
+    // - Drupal settings; these are in the JS_SETTING group.
+    // Since both need to be defined and loaded, locale.datepicker.js needs to
+    // be loaded late in JS_SETTING.
+    // @see locale_js_alter()
+    // @see drupal_add_js()
+    // @todo Re-think order of JS groups. JS_SETTING could come early, directly
+    //   after JS_LIBRARY. This would allow us to load this file very early in
+    //   the regular JS_DEFAULT group.
+    $libraries['ui.datepicker']['js'][$datepicker] = array(
+      'group' => JS_SETTING,
+      'weight' => 10,
+    );
+    $libraries['ui.datepicker']['js'][] = array(
       'data' => array(
-        'jqueryuidatepicker' => array(
-          'rtl' => $language->direction == LANGUAGE_RTL,
-          'firstDay' => variable_get('date_first_day', 0),
+        'jquery' => array(
+          'ui' => array(
+            'datepicker' => array(
+              'isRTL' => $language->direction == LANGUAGE_RTL,
+              'firstDay' => variable_get('date_first_day', 0),
+            ),
+          ),
         ),
       ),
       'type' => 'setting',
diff --git a/core/modules/locale/locale.test b/core/modules/locale/locale.test
index 842b8f5..fd540c0 100644
--- a/core/modules/locale/locale.test
+++ b/core/modules/locale/locale.test
@@ -2742,3 +2742,33 @@ class LocaleLanguageNegotiationInfoFunctionalTest extends DrupalWebTestCase {
     }
   }
 }
+
+/**
+ * Functional test for localization of the javascript libraries.
+ *
+ * Currently only the jQuery datepicker is localized, using Drupal translations.
+ */
+class LocaleLibraryInfoAlterTest extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Javascript library localisation',
+      'description' => 'Tests the localisation of javascript libraries.',
+      'group' => 'Locale',
+    );
+  }
+
+  function setUp() {
+    parent::setUp('locale', 'locale_test');
+  }
+
+  /**
+  * Verify that locale_library_info_alter adds localisation to the datepicker.
+  *
+  * @see locale_library_info_alter()
+  */
+  public function testLibraryInfoAlter() {
+    drupal_add_library('system', 'ui.datepicker');
+    $scripts = drupal_get_js();
+    $this->assertTrue(strpos($scripts, 'locale.datepicker.js'), t('locale.datepicker.js added to scripts in footer.'));
+  }
+}
diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc
index cd1eb6d..1f0010f 100644
--- a/core/modules/node/node.pages.inc
+++ b/core/modules/node/node.pages.inc
@@ -265,6 +265,17 @@ function node_form($form, &$form_state, $node) {
     '#maxlength' => 25,
     '#description' => t('Format: %time. The date format is YYYY-MM-DD and %timezone is the time zone offset from UTC. Leave blank to use the time of form submission.', array('%time' => !empty($node->date) ? date_format(date_create($node->date), 'Y-m-d H:i:s O') : format_date($node->created, 'custom', 'Y-m-d H:i:s O'), '%timezone' => !empty($node->date) ? date_format(date_create($node->date), 'O') : format_date($node->created, 'custom', 'O'))),
     '#default_value' => !empty($node->date) ? $node->date : '',
+    '#attached' => array(
+      'library' => array(array('system', 'ui.datepicker')),
+      'js' => array(array(
+        'data' => "jQuery(function ($) {
+          $('#edit-date').datepicker();
+        });",
+        'type' => 'inline',
+        'group' => JS_SETTING,
+        'weight' => 1,
+      ))
+    ),
   );
 
   // Node options for administrators
