diff --git a/src/com/android/contacts/EditContactActivity.java b/src/com/android/contacts/EditContactActivity.java
index cdf2cef..fb8dd70 100644
--- a/src/com/android/contacts/EditContactActivity.java
+++ b/src/com/android/contacts/EditContactActivity.java
@@ -105,7 +105,6 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -177,8 +176,7 @@
     private LayoutInflater mInflater;
     private MenuItem mPhotoMenuItem;
     private boolean mPhotoPresent = false;
-    private EditText mPhoneticNameView;
-    private LinearLayout mPhoneticNameLayout;
+    private EditText mPhoneticNameView;  // invisible in some locales, but always present
 
     /** Flag marking this contact as changed, meaning we should write changes back. */
     private boolean mContactChanged = false;
@@ -319,17 +317,6 @@
         mPhotoButton.setOnClickListener(this);
         mSendToVoicemailCheckBox = (CheckBox) findViewById(R.id.send_to_voicemail);
         mPhoneticNameView = (EditText) findViewById(R.id.phonetic_name);
-        mPhoneticNameLayout = (LinearLayout) findViewById(R.id.phonetic_name_layout);
-
-        // Setup phonetic name field.  mPhoneticNameLayout is GONE by default.
-        // TODO: Don't do this here in Java; instead do it purely using
-        // resources, by having mPhoneticNameLayout come from an XML
-        // <include> file that contains the real UI in layout-ja, but is
-        // empty in layout-finger...
-        String language = Locale.getDefault().getLanguage();
-        if (language != null && language.equals("ja")) {
-            mPhoneticNameLayout.setVisibility(View.VISIBLE);
-        }
 
         // Setup the bottom buttons
         View view = findViewById(R.id.addMore);
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index 9a11f76..4690b12 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -19,6 +19,7 @@
 import static com.android.contacts.ContactEntryAdapter.CONTACT_CUSTOM_RINGTONE_COLUMN;
 import static com.android.contacts.ContactEntryAdapter.CONTACT_NAME_COLUMN;
 import static com.android.contacts.ContactEntryAdapter.CONTACT_NOTES_COLUMN;
+import static com.android.contacts.ContactEntryAdapter.CONTACT_PHONETIC_NAME_COLUMN;
 import static com.android.contacts.ContactEntryAdapter.CONTACT_PROJECTION;
 import static com.android.contacts.ContactEntryAdapter.CONTACT_SEND_TO_VOICEMAIL_COLUMN;
 import static com.android.contacts.ContactEntryAdapter.CONTACT_STARRED_COLUMN;
@@ -182,6 +183,7 @@
     }
 
     private TextView mNameView;
+    private TextView mPhoneticNameView;  // may be null in some locales
     private ImageView mPhotoView;
     private int mNoPhotoResource;
     private CheckBox mStarView;
@@ -195,6 +197,7 @@
         getListView().setOnCreateContextMenuListener(this);
 
         mNameView = (TextView) findViewById(R.id.name);
+        mPhoneticNameView = (TextView) findViewById(R.id.phonetic_name);
         mPhotoView = (ImageView) findViewById(R.id.photo);
         mStarView = (CheckBox) findViewById(R.id.star);
         mStarView.setOnClickListener(this);
@@ -280,7 +283,7 @@
         }
         return null;
     }
-    
+
     private void dataChanged() {
         mCursor.requery();
         if (mCursor.moveToFirst()) {
@@ -292,6 +295,11 @@
                 mNameView.setText(name);
             }
 
+            if (mPhoneticNameView != null) {
+                String phoneticName = mCursor.getString(CONTACT_PHONETIC_NAME_COLUMN);
+                mPhoneticNameView.setText(phoneticName);
+            }
+
             // Load the photo
             mPhotoView.setImageBitmap(People.loadContactPhoto(this, mUri, mNoPhotoResource,
                     null /* use the default options */));
@@ -1029,5 +1037,3 @@
         }
     }
 }
-
-
