diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -481,7 +481,7 @@
     'rsrc/js/core/behavior-detect-timezone.js' => '78bc5d94',
     'rsrc/js/core/behavior-device.js' => 'ac2b1e01',
     'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '7ad020a5',
-    'rsrc/js/core/behavior-fancy-datepicker.js' => '956f3eeb',
+    'rsrc/js/core/behavior-fancy-datepicker.js' => 'ec72ed53',
     'rsrc/js/core/behavior-form.js' => '55d7b788',
     'rsrc/js/core/behavior-gesture.js' => 'b58d1a2a',
     'rsrc/js/core/behavior-global-drag-and-drop.js' => '1cab0e9a',
@@ -635,7 +635,7 @@
     'javelin-behavior-editengine-reorder-configs' => '4842f137',
     'javelin-behavior-editengine-reorder-fields' => '0ad8d31f',
     'javelin-behavior-event-all-day' => '0b1bc990',
-    'javelin-behavior-fancy-datepicker' => '956f3eeb',
+    'javelin-behavior-fancy-datepicker' => 'ec72ed53',
     'javelin-behavior-global-drag-and-drop' => '1cab0e9a',
     'javelin-behavior-harbormaster-log' => 'b347a301',
     'javelin-behavior-herald-rule-editor' => '0922e81d',
@@ -1781,13 +1781,6 @@
       'javelin-vector',
       'javelin-stratcom',
     ),
-    '956f3eeb' => array(
-      'javelin-behavior',
-      'javelin-util',
-      'javelin-dom',
-      'javelin-stratcom',
-      'javelin-vector',
-    ),
     '9623adc1' => array(
       'javelin-behavior',
       'javelin-stratcom',
@@ -2200,6 +2193,13 @@
     'ec4e31c0' => array(
       'phui-timeline-view-css',
     ),
+    'ec72ed53' => array(
+      'javelin-behavior',
+      'javelin-util',
+      'javelin-dom',
+      'javelin-stratcom',
+      'javelin-vector',
+    ),
     'ee77366f' => array(
       'aphront-dialog-view-css',
     ),
diff --git a/src/view/form/control/AphrontFormDateControl.php b/src/view/form/control/AphrontFormDateControl.php
--- a/src/view/form/control/AphrontFormDateControl.php
+++ b/src/view/form/control/AphrontFormDateControl.php
@@ -267,9 +267,25 @@
     $week_key = PhabricatorWeekStartDaySetting::SETTINGKEY;
     $week_start = $viewer->getUserSetting($week_key);
 
+    $date_pht = array(
+      'SMTWTFS' => pht('SMTWTFS'),
+      'January' => pht('January'),
+      'February' => pht('February'),
+      'March' => pht('March'),
+      'April' => pht('April'),
+      'May' => pht('May'),
+      'June' => pht('June'),
+      'July' => pht('July'),
+      'August' => pht('August'),
+      'September' => pht('September'),
+      'October' => pht('October'),
+      'November' => pht('November'),
+      'December' => pht('December'),
+    );
     Javelin::initBehavior('fancy-datepicker', array(
       'format' => $this->getDateFormat(),
       'weekStart' => $week_start,
+      'pht' => $date_pht,
       ));
 
     $classes = array();
diff --git a/webroot/rsrc/js/core/behavior-fancy-datepicker.js b/webroot/rsrc/js/core/behavior-fancy-datepicker.js
--- a/webroot/rsrc/js/core/behavior-fancy-datepicker.js
+++ b/webroot/rsrc/js/core/behavior-fancy-datepicker.js
@@ -13,6 +13,7 @@
   }
   statics.initialized = true;
 
+  var pht = JX.phtize(config.pht);
   var picker;
   var anchor_node;
   var root;
@@ -262,18 +263,18 @@
     var year = valid_date.getYear() + 1900;
 
     var months = [
-      'January',
-      'February',
-      'March',
-      'April',
-      'May',
-      'June',
-      'July',
-      'August',
-      'September',
-      'October',
-      'November',
-      'December'];
+      pht('January'),
+      pht('February'),
+      pht('March'),
+      pht('April'),
+      pht('May'),
+      pht('June'),
+      pht('July'),
+      pht('August'),
+      pht('September'),
+      pht('October'),
+      pht('November'),
+      pht('December')];
 
     var buttons = [
       cell('\u25C0', 'm:-1', false, 'lrbutton'),
@@ -330,14 +331,16 @@
     var weeks = [];
 
     // First, render the weekday names.
-    var weekdays = 'SMTWTFS';
+    var weekdays = pht('SMTWTFS');
     var weekday_names = [];
     var week_start = parseInt(get_week_start(), 10);
-    var week_end = weekdays.length + week_start;
+    var week_end = 7 + week_start;
+    var day_length = weekdays.length/7;
 
     for (var ii = week_start; ii < week_end; ii++) {
       var index = ii%7;
-      weekday_names.push(cell(weekdays.charAt(index), null, false, 'day-name'));
+      weekday_names.push(cell(weekdays.substring(index * day_length,
+        (index + 1) * day_length), null, false, 'day-name'));
     }
     weeks.push(JX.$N('tr', {}, weekday_names));