diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml
index 47eb795..d3c0e02 100644
--- a/res/xml/language_settings.xml
+++ b/res/xml/language_settings.xml
@@ -18,8 +18,8 @@
         xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
 
     <PreferenceScreen
-            android:title="@string/phone_language"
-            android:summary="@string/phone_language_summary">
+            android:key="phone_language"
+            android:title="@string/phone_language">
         <intent android:action="android.intent.action.MAIN"
                 android:targetPackage="com.android.settings"
                 android:targetClass="com.android.settings.LocalePicker"/>
diff --git a/src/com/android/settings/LanguageSettings.java b/src/com/android/settings/LanguageSettings.java
index 1b9f0c1..61ede0d 100644
--- a/src/com/android/settings/LanguageSettings.java
+++ b/src/com/android/settings/LanguageSettings.java
@@ -43,10 +43,12 @@
 
 public class LanguageSettings extends PreferenceActivity {
     
+    private static final String KEY_PHONE_LANGUAGE = "phone_language";
     private boolean mHaveHardKeyboard;
 
     private List<InputMethodInfo> mInputMethodProperties;
     private List<CheckBoxPreference> mCheckboxes;
+    private Preference mLanguagePref;
 
     final TextUtils.SimpleStringSplitter mStringColonSplitter
             = new TextUtils.SimpleStringSplitter(':');
@@ -67,6 +69,8 @@
         if (getAssets().getLocales().length == 1) {
             getPreferenceScreen().
                 removePreference(findPreference("language_category"));
+        } else {
+            mLanguagePref = findPreference(KEY_PHONE_LANGUAGE);
         }
 
         Configuration config = getResources().getConfiguration();
@@ -156,6 +160,15 @@
             }
         }
         mLastTickedInputMethodId = null;
+
+        if (mLanguagePref != null) {
+            Configuration conf = getResources().getConfiguration();
+            String locale = conf.locale.getDisplayName(conf.locale);
+            if (locale != null && locale.length() > 1) {
+                locale = Character.toUpperCase(locale.charAt(0)) + locale.substring(1);
+                mLanguagePref.setSummary(locale);
+            }
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/TextToSpeechSettings.java b/src/com/android/settings/TextToSpeechSettings.java
index 86f9919..3c55d10 100644
--- a/src/com/android/settings/TextToSpeechSettings.java
+++ b/src/com/android/settings/TextToSpeechSettings.java
@@ -265,9 +265,15 @@
         if (status == TextToSpeech.SUCCESS) {
             Log.v(TAG, "TTS engine for settings screen initialized.");
             mEnableDemo = true;
-            if (mDefaultLanguage == null){
+            if (mDefaultLanguage == null) {
                 mDefaultLanguage = Locale.getDefault().getISO3Language();
             }
+            if (mDefaultCountry == null) {
+                mDefaultCountry = Locale.getDefault().getISO3Country();
+            }
+            if (mDefaultLocVariant == null) {
+                mDefaultLocVariant = new String();
+            }
             mTts.setLanguage(new Locale(mDefaultLanguage, mDefaultCountry, mDefaultLocVariant));
             mTts.setSpeechRate((float)(mDefaultRate/100.0f));
         } else {
