diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index 8dc21227..6a1069e 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -138,4 +138,14 @@
         <item>4</item>
         <item>5</item>
     </string-array>
+
+    <!-- Subtype locale name exceptions -->
+    <string-array name="subtype_locale_exception_keys">
+        <item>en_US</item>
+        <item>en_GB</item>
+    </string-array>
+    <string-array name="subtype_locale_exception_values">
+        <item>English (US)</item>
+        <item>English (UK)</item>
+    </string-array>
 </resources>
diff --git a/java/src/com/android/inputmethod/latin/SubtypeLocale.java b/java/src/com/android/inputmethod/latin/SubtypeLocale.java
new file mode 100644
index 0000000..917521c
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/SubtypeLocale.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.content.Context;
+import android.content.res.Resources;
+
+import java.util.Locale;
+
+public class SubtypeLocale {
+    private static String[] sExceptionKeys;
+    private static String[] sExceptionValues;
+
+    private SubtypeLocale() {
+        // Intentional empty constructor for utility class.
+    }
+
+    public static void init(Context context) {
+        final Resources res = context.getResources();
+        sExceptionKeys = res.getStringArray(R.array.subtype_locale_exception_keys);
+        sExceptionValues = res.getStringArray(R.array.subtype_locale_exception_values);
+    }
+
+    public static String getFullDisplayName(Locale locale) {
+        String localeCode = locale.toString();
+        for (int index = 0; index < sExceptionKeys.length; index++) {
+            if (sExceptionKeys[index].equals(localeCode))
+                return sExceptionValues[index];
+        }
+        return locale.getDisplayName(locale);
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index d696834..f75e295 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -16,7 +16,6 @@
 
 package com.android.inputmethod.latin;
 
-import com.android.inputmethod.keyboard.Keyboard;
 import com.android.inputmethod.keyboard.KeyboardSwitcher;
 import com.android.inputmethod.voice.SettingsUtil;
 import com.android.inputmethod.voice.VoiceIMEConnector;
@@ -90,6 +89,8 @@
         }
 
         sInstance.updateAllParameters();
+
+        SubtypeLocale.init(service);
     }
 
     private SubtypeSwitcher() {
@@ -445,7 +446,7 @@
 
     public static String getFullDisplayName(Locale locale, boolean returnsNameInThisLocale) {
         if (returnsNameInThisLocale) {
-            return toTitleCase(locale.getDisplayName(locale));
+            return toTitleCase(SubtypeLocale.getFullDisplayName(locale));
         } else {
             return toTitleCase(locale.getDisplayName());
         }
