diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 4a60c36..06bf787 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -39,18 +39,12 @@
         <item>All</item>
     </string-array>
 
-    <!-- There is a setting to control the format of dates displayed throughout the system.  This is in the Date & Time Settings screen.  Unfortunately, these cannot be changed at all. --> <skip />
-    <!-- Do not translate.  This is fed directly to the formatter. -->
-    <string-array name="date_format_values">
-        <!-- Do not translate.  This is fed directly to the formatter. -->
+    <!-- There is a setting to control the format of dates displayed throughout the system.  This is in the Date & Time Settings screen.  These will be adjusted to use punctuation appropriate to the user's locale. -->
+    <string-array name="date_format_values" translatable="false">
+        <!-- The blank item means to use whatever the locale calls for. -->
+        <item></item>
         <item>MM-dd-yyyy</item>
-        <!-- Do not translate.  This is fed directly to the formatter. -->
         <item>dd-MM-yyyy</item>
-        <!-- Do not translate.  This is fed directly to the formatter. -->
-        <item>MMM d, yyyy</item>
-        <!-- Do not translate.  This is fed directly to the formatter. -->
-        <item>d-MMM-yyyy</item>
-        <!-- Do not translate.  This is fed directly to the formatter. -->
         <item>yyyy-MM-dd</item>
     </string-array>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3b91ef6..d2ca51b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -243,6 +243,10 @@
     <!-- Do not translate. Used as the value for a setting. -->
     <string name="default_date_format"><xliff:g id="default_date_format">MM/dd/yyyy</xliff:g></string>
 
+    <!-- The option in the date-format picker for using the normal format
+         called for by the user's locale. -->
+    <string name="normal_date_format">Normal (<xliff:g id="date" example="12-31-2009">%s</xliff:g>)</string>
+
     <!-- Label of preview text when tweaking font size -->
     <string name="display_preview_label">Preview:</string>
     <!-- Label for chosen font size -->
diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
index d6e85c4..5b38651 100644
--- a/src/com/android/settings/DateTimeSettings.java
+++ b/src/com/android/settings/DateTimeSettings.java
@@ -87,19 +87,25 @@
         mDatePref = findPreference("date");
         mDateFormat = (ListPreference) findPreference(KEY_DATE_FORMAT);
         
-        int currentFormatIndex = -1;
         String [] dateFormats = getResources().getStringArray(R.array.date_format_values);
         String [] formattedDates = new String[dateFormats.length];
         String currentFormat = getDateFormat();
         // Initialize if DATE_FORMAT is not set in the system settings
         // This can happen after a factory reset (or data wipe)
         if (currentFormat == null) {
-            currentFormat = getResources().getString(R.string.default_date_format);
-            setDateFormat(currentFormat);
+            currentFormat = "";
         }
         for (int i = 0; i < formattedDates.length; i++) {
-            formattedDates[i] = DateFormat.format(dateFormats[i], mDummyDate).toString();
-            if (currentFormat.equals(dateFormats[i])) currentFormatIndex = i;
+            String formatted =
+                DateFormat.getDateFormatForSetting(this, dateFormats[i]).
+                    format(mDummyDate.getTime());
+
+            if (dateFormats[i].length() == 0) {
+                formattedDates[i] = getResources().
+                    getString(R.string.normal_date_format, formatted);
+            } else {
+                formattedDates[i] = formatted;
+            }
         }
         
         mDateFormat.setEntries(formattedDates);
@@ -314,6 +320,10 @@
     }
 
     private void setDateFormat(String format) {
+        if (format.length() == 0) {
+            format = null;
+        }
+
         Settings.System.putString(getContentResolver(), Settings.System.DATE_FORMAT, format);        
     }
     
