diff --git modules/locale/locale.admin.inc modules/locale/locale.admin.inc
index 9189c71..82a6b7f 100644
--- modules/locale/locale.admin.inc
+++ modules/locale/locale.admin.inc
@@ -1397,18 +1397,18 @@ function locale_date_format_form($form, &$form_state, $langcode) {
   // Get list of date format types.
   $types = system_get_date_types();
 
-  // Get list of available formats.
-  $formats = system_get_date_formats();
-  $choices = array();
-  foreach ($formats as $type => $list) {
-    foreach ($list as $f => $format) {
-      $choices[$f] = format_date(REQUEST_TIME, 'custom', $f);
-    }
+  // Get list of all available date formats.
+  $all_formats = array();
+  drupal_static_reset('system_get_date_formats');
+  $date_formats = system_get_date_formats(); // Call this to rebuild the list, and to have default list.
+  foreach ($date_formats as $type => $format_info) {
+    $all_formats = array_merge($all_formats, $format_info);
   }
-  reset($formats);
+  $custom_formats = system_get_date_formats('custom');
 
   // Get configured formats for each language.
   $locale_formats = system_date_format_locale($langcode);
+
   // Display a form field for each format type.
   foreach ($types as $type => $type_info) {
     if (!empty($locale_formats) && in_array($type, array_keys($locale_formats))) {
@@ -1418,6 +1418,28 @@ function locale_date_format_form($form, &$form_state, $langcode) {
       $default = variable_get('date_format_' . $type, key($formats));
     }
 
+    // If a system type, only show the available formats for that type and
+    // custom ones.
+    if ($type_info['locked'] == 1) {
+      $formats = system_get_date_formats($type);
+      if (empty($formats)) {
+        $formats = $all_formats;
+      }
+      elseif (!empty($custom_formats)) {
+        $formats = array_merge($formats, $custom_formats);
+      }
+    }
+    // If a user configured type, show all available date formats.
+    else {
+      $formats = $all_formats;
+    }
+
+    $choices = array();
+    foreach ($formats as $f => $format) {
+      $choices[$f] = format_date(REQUEST_TIME, 'custom', $f);
+    }
+    reset($formats);
+
     // Show date format select list.
     $form['date_formats']['date_format_' . $type] = array(
       '#type' => 'select',
