diff --git a/res/drawable-finger/ic_menu_refresh.png b/res/drawable-finger/ic_menu_refresh.png
deleted file mode 100755
index 77d70dd..0000000
--- a/res/drawable-finger/ic_menu_refresh.png
+++ /dev/null
Binary files differ
diff --git a/res/layout-finger/edit_contact.xml b/res/layout-finger/edit_contact.xml
index 7d0f449..f2f8e38 100644
--- a/res/layout-finger/edit_contact.xml
+++ b/res/layout-finger/edit_contact.xml
@@ -77,6 +77,36 @@
             />
         </LinearLayout>
 
+        <LinearLayout android:id="@+id/phonetic_name_layout"
+            android:layout_width="fill_parent"
+            android:layout_height="?android:attr/listPreferredItemHeight"
+            android:orientation="horizontal"
+            android:padding="0dip"
+            android:gravity="center_vertical"
+            android:baselineAligned="false"
+            android:visibility="gone"
+        >
+            <TextView android:id="@+id/phonetic_name_label"
+                android:layout_width="wrap_content"
+                android:layout_height="fill_parent"
+                android:paddingLeft="4dip"
+                android:gravity="left|center_vertical"
+                android:text="@string/label_phonetic_name"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+            />
+            <EditText android:id="@+id/phonetic_name"
+                android:layout_width="0dip"
+                android:layout_weight="1"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="8dip"
+                android:layout_marginRight="4dip"
+                android:gravity="center_vertical"
+                android:inputType="textPersonName|textCapWords"
+                android:hint="@string/ghostData_phonetic_name"
+                android:nextFocusDown="@id/data"
+            />
+        </LinearLayout>
+
         <View
             android:layout_width="fill_parent"
             android:layout_height="1dip"
diff --git a/res/layout-finger/twelve_key_dialer.xml b/res/layout-finger/twelve_key_dialer.xml
index 172a4ba..071ca57 100644
--- a/res/layout-finger/twelve_key_dialer.xml
+++ b/res/layout-finger/twelve_key_dialer.xml
@@ -64,8 +64,8 @@
          (the textfield/button and the dialpad) are hidden. -->
     <ListView android:id="@+id/dialpadChooser"
         android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:footerDividersEnabled="true"
+        android:layout_height="1dp"
+        android:layout_weight="1"
     />
 
 </LinearLayout>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
new file mode 100644
index 0000000..a84d26e
--- /dev/null
+++ b/res/values-fr/strings.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Contacts"</string>
+    <string name="shortcutContact">"Contact"</string>
+    <string name="starredList">"Marqués d\'une étoile"</string>
+    <string name="frequentList">"Contacts fréquents"</string>
+    <string name="strequentList">"Favoris"</string>
+    <string name="viewContactTitle">"Détails du contact"</string>
+    <string name="viewContactDesription">"Afficher le contact"</string>
+    <string name="editContactDescription">"Modifier le contact"</string>
+    <string name="insertContactDescription">"Créer un contact"</string>
+    <string name="searchHint">"Rechercher des contacts"</string>
+    <string name="menu_newContact">"Nouveau contact"</string>
+    <string name="menu_viewContact">"Afficher le contact"</string>
+    <string name="menu_callNumber">"Appeler <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Ajouter aux favoris"</string>
+    <string name="menu_removeStar">"Supprimer des favoris"</string>
+    <string name="menu_showBarcode">"Afficher le code à barres"</string>
+    <string name="menu_editContact">"Modifier le contact"</string>
+    <string name="menu_deleteContact">"Supprimer le contact"</string>
+    <string name="menu_call">"Appel"</string>
+    <string name="menu_sendSMS">"Envoyer un SMS/MMS"</string>
+    <string name="menu_sendEmail">"Envoyer un e-mail"</string>
+    <string name="menu_viewAddress">"Adresse sur un plan"</string>
+    <string name="menu_makeDefaultNumber">"Numéro téléphone par défaut"</string>
+    <string name="deleteConfirmation_title">"Supprimer"</string>
+    <string name="deleteConfirmation">"Ce contact sera supprimé."</string>
+    <string name="menu_done">"Enregistrer"</string>
+    <string name="menu_doNotSave">"Annuler les modifications"</string>
+    <string name="button_save">"Enregistrer"</string>
+    <string name="button_discard">"Annuler les modifications"</string>
+    <string name="editContact_title_edit">"Modifier le contact"</string>
+    <string name="editContact_title_insert">"Nouveau contact"</string>
+    <string name="menu_addItem">"Plus d\'infos"</string>
+    <string name="label_notes">"Remarques"</string>
+    <string name="label_ringtone">"Sonnerie"</string>
+    <string name="ghostData_name">"Premier et dernier"</string>
+    <string name="ghostData_company">"Société"</string>
+    <string name="ghostData_title">"Position"</string>
+    <string name="ghostData_im">"Nom du compte de MI"</string>
+    <string name="ghostData_notes">"Mon commentaire"</string>
+    <string name="ghostData_phone">"Numéro téléphone"</string>
+    <string name="ghostData_email">"Adresse e-mail"</string>
+    <string name="ghostData_postal">"Adresse postale"</string>
+    <string name="invalidContactMessage">"Ce contact n\'existe pas."</string>
+    <string name="pickerNewContactHeader">"Créer un nouveau contact"</string>
+    <string name="selectLabel">"Sélectionner un libellé"</string>
+    <string name="phoneLabelsGroup">"Téléphone"</string>
+    <string name="emailLabelsGroup">"E-mail"</string>
+    <string name="imLabelsGroup">"MI"</string>
+    <string name="postalLabelsGroup">"Adresse postale"</string>
+    <string name="otherLabelsGroup">"Autre"</string>
+  <string-array name="otherLabels">
+    <item>"Organisation"</item>
+    <item>"Remarque"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Aucune image"</string>
+    <string name="photoPickerNotFoundText">"Aucune image disponible sur le téléphone."</string>
+    <string name="attachToContact">"Icône de contact"</string>
+    <string name="customLabelPickerTitle">"Nom de libellé personnalisé"</string>
+    <string name="menu_displayGroup">"Afficher les groupes"</string>
+    <string name="syncGroupPreference">"Modifier les groupes à synchroniser"</string>
+    <string name="importFromSim">"Importer des contacts"</string>
+    <string name="send_to_voicemail_checkbox">"Renvoyer les appels directement vers la boîte vocale."</string>
+    <string name="send_to_voicemail_view">"Les appels sont renvoyés directement vers la boîte vocale."</string>
+    <string name="default_ringtone">"Par défaut"</string>
+    <string name="addPicture">"Ajouter une icône"</string>
+    <string name="removePicture">"Supprimer l\'icône"</string>
+    <string name="noContacts">"Aucun contact."</string>
+    <string name="noContactsWithPhoneNumbers">"Aucun contact disposant d\'un numéro téléphone."</string>
+    <string name="noFavorites">"Aucun favori."</string>
+    <string name="select_group_title">"Groupes"</string>
+    <string name="groupEmpty">"Votre groupe \"<xliff:g id="GROUPNAME">%s</xliff:g>\" est vide."</string>
+    <string name="showAllGroups">"Tous les contacts"</string>
+    <string name="syncAllGroups">"Synchroniser tous les contacts"</string>
+    <string name="groupNameMyContacts">"Mes contacts"</string>
+    <string name="groupNameWithPhones">"Contacts avec des numéros téléphone"</string>
+    <string name="contactCreatedToast">"Contact créé."</string>
+    <string name="contactSavedToast">"Contact enregistré."</string>
+    <string name="listSeparatorCallNumber">"Composer le numéro"</string>
+    <string name="listSeparatorSendSmsMms">"Envoyer un SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Envoyer un e-mail"</string>
+    <string name="listSeparatorSendIm">"Envoyer un message instantané"</string>
+    <string name="listSeparatorMapAddress">"Adresse sur un plan"</string>
+    <string name="listSeparatorOrganizations">"Organisations"</string>
+    <string name="listSeparatorOtherInformation">"Autres informations"</string>
+    <string name="contactsIconLabel">"Contacts"</string>
+    <string name="contactsFavoritesLabel">"Favoris"</string>
+    <string name="dialerIconLabel">"Numéroteur"</string>
+    <string name="recentCallsIconLabel">"Journal des appels"</string>
+    <string name="liveFolderAll">"Tous les contacts"</string>
+    <string name="liveFolderFavorites">"Contacts suivis"</string>
+    <string name="liveFolderPhone">"Contacts avec numéro de téléphone"</string>
+    <string name="menu_sendTextMessage">"Envoyer un message SMS"</string>
+    <string name="recentCalls_callNumber">"Appeler <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Modifier le numéro avant d\'effectuer l\'appel"</string>
+    <string name="recentCalls_addToContact">"Ajouter aux contacts"</string>
+    <string name="recentCalls_removeFromRecentList">"Supprimer du journal des appels"</string>
+    <string name="recentCalls_deleteAll">"Effacer le journal des appels"</string>
+    <string name="recentCalls_empty">"Le journal des appels est vide."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Boîte vocale"</string>
+    <string name="unknown">"Inconnu"</string>
+    <string name="private_num">"Numéro privée"</string>
+    <string name="dialerKeyboardHintText">"Utilisez le clavier pour effectuer la numérotation"</string>
+    <string name="dialerDialpadHintText">"Numéroter pour ajouter un appel"</string>
+    <string name="simContacts_emptyLoading">"Chargement depuis la carte SIM..."</string>
+    <string name="simContacts_title">"Contacts de carte SIM"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synchronisez vos contacts Google !"</font>" "\n"Une fois que vous aurez synchronisé votre téléphone, vos contacts seront disponibles, où que vous soyez."</string>
+    <string name="noContactsHelpText">"Vous n\'avez pas de contacts."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" et sélectionnez :"\n\n"        "\n<li><font fgcolor="#ffffffff"><b>"Modifier les groupes à synchroniser"</b></font>" pour ajouter des contacts d\'un compte existant ou d\'un nouveau compte Google"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un tout nouveau contact"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Importer des contacts"</b></font>" pour ajouter des contacts de votre carte SIM"\n</li>"."</string>
+    <string name="seclectSyncGroups_title">"Sélectionner les groupes à synchroniser"</string>
+    <string name="liveFolder_all_label">"Tous les contacts"</string>
+    <string name="liveFolder_favorites_label">"Suivis"</string>
+    <string name="liveFolder_phones_label">"Téléphones"</string>
+    <string name="dialer_useDtmfDialpad">"Utiliser le clavier multifréquence"</string>
+    <string name="dialer_returnToInCallScreen">"Reprendre l\'appel en cours"</string>
+    <string name="dialer_addAnotherCall">"Ajouter un appel"</string>
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
new file mode 100644
index 0000000..9426b69
--- /dev/null
+++ b/res/values-it/strings.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Contatti"</string>
+    <string name="shortcutContact">"Contatto"</string>
+    <string name="starredList">"Speciali"</string>
+    <string name="frequentList">"Frequenti"</string>
+    <string name="strequentList">"Preferiti"</string>
+    <string name="viewContactTitle">"Dettagli contatto"</string>
+    <string name="viewContactDesription">"Visualizza contatto"</string>
+    <string name="editContactDescription">"Modifica contatto"</string>
+    <string name="insertContactDescription">"Crea contatto"</string>
+    <string name="searchHint">"Cerca contatti"</string>
+    <string name="menu_newContact">"Nuovo contatto"</string>
+    <string name="menu_viewContact">"Visualizza contatto"</string>
+    <string name="menu_callNumber">"Chiama <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Aggiungi a preferiti"</string>
+    <string name="menu_removeStar">"Rimuovi dai preferiti"</string>
+    <string name="menu_showBarcode">"Mostra codice a barre"</string>
+    <string name="menu_editContact">"Modifica contatto"</string>
+    <string name="menu_deleteContact">"Elimina contatto"</string>
+    <string name="menu_call">"Chiama"</string>
+    <string name="menu_sendSMS">"Invia SMS/MMS"</string>
+    <string name="menu_sendEmail">"Invia email"</string>
+    <string name="menu_viewAddress">"Indirizzo su mappa"</string>
+    <string name="menu_makeDefaultNumber">"Rendi numero predefinito"</string>
+    <string name="deleteConfirmation_title">"Elimina"</string>
+    <string name="deleteConfirmation">"Il contatto verrà eliminato."</string>
+    <string name="menu_done">"Salva"</string>
+    <string name="menu_doNotSave">"Ignora modifiche"</string>
+    <string name="button_save">"Salva"</string>
+    <string name="button_discard">"Ignora modifiche"</string>
+    <string name="editContact_title_edit">"Modifica contatto"</string>
+    <string name="editContact_title_insert">"Nuovo contatto"</string>
+    <string name="menu_addItem">"Altre info"</string>
+    <string name="label_notes">"Note"</string>
+    <string name="label_ringtone">"Suoneria"</string>
+    <string name="ghostData_name">"Nome e cognome"</string>
+    <string name="ghostData_company">"Società"</string>
+    <string name="ghostData_title">"Mansione"</string>
+    <string name="ghostData_im">"Nome IM"</string>
+    <string name="ghostData_notes">"La mia nota"</string>
+    <string name="ghostData_phone">"Numero di telefono"</string>
+    <string name="ghostData_email">"Indirizzo email"</string>
+    <string name="ghostData_postal">"Indirizzo postale"</string>
+    <string name="invalidContactMessage">"Il contatto non esiste."</string>
+    <string name="pickerNewContactHeader">"Crea nuovo contatto"</string>
+    <string name="selectLabel">"Seleziona etichetta"</string>
+    <string name="phoneLabelsGroup">"Telefono"</string>
+    <string name="emailLabelsGroup">"Email"</string>
+    <string name="imLabelsGroup">"IM"</string>
+    <string name="postalLabelsGroup">"Indirizzo postale"</string>
+    <string name="otherLabelsGroup">"Altro"</string>
+  <string-array name="otherLabels">
+    <item>"Organizzazione"</item>
+    <item>"Nota"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Nessuna foto"</string>
+    <string name="photoPickerNotFoundText">"Nessuna foto disponibile."</string>
+    <string name="attachToContact">"Icona del contatto"</string>
+    <string name="customLabelPickerTitle">"Nome etichetta personalizzata"</string>
+    <string name="menu_displayGroup">"Visualizza gruppo"</string>
+    <string name="syncGroupPreference">"Modifica sincr. gruppi"</string>
+    <string name="importFromSim">"Importa contatti"</string>
+    <string name="send_to_voicemail_checkbox">"Inoltra chiamate direttamente a segreteria."</string>
+    <string name="send_to_voicemail_view">"Le chiamate vengono inoltrate direttamente alla segreteria."</string>
+    <string name="default_ringtone">"Predefinita"</string>
+    <string name="addPicture">"Aggiungi icona"</string>
+    <string name="removePicture">"Rimuovi icona"</string>
+    <string name="noContacts">"Nessun contatto."</string>
+    <string name="noContactsWithPhoneNumbers">"Nessun contatto con numeri di telefono."</string>
+    <string name="noFavorites">"Nessun preferito."</string>
+    <string name="select_group_title">"Gruppi"</string>
+    <string name="groupEmpty">"Il gruppo \"<xliff:g id="GROUPNAME">%s</xliff:g>\" è vuoto."</string>
+    <string name="showAllGroups">"Tutti i contatti"</string>
+    <string name="syncAllGroups">"Sincronizza tutti i contatti"</string>
+    <string name="groupNameMyContacts">"I miei contatti"</string>
+    <string name="groupNameWithPhones">"Contatti con numeri di telefono"</string>
+    <string name="contactCreatedToast">"Contatto creato."</string>
+    <string name="contactSavedToast">"Contatto salvato."</string>
+    <string name="listSeparatorCallNumber">"Componi numero"</string>
+    <string name="listSeparatorSendSmsMms">"Invia SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Invia email"</string>
+    <string name="listSeparatorSendIm">"Invia msg IM"</string>
+    <string name="listSeparatorMapAddress">"Indirizzo su mappa"</string>
+    <string name="listSeparatorOrganizations">"Organizzazioni"</string>
+    <string name="listSeparatorOtherInformation">"Altre informazioni"</string>
+    <string name="contactsIconLabel">"Contatti"</string>
+    <string name="contactsFavoritesLabel">"Preferiti"</string>
+    <string name="dialerIconLabel">"Dialer"</string>
+    <string name="recentCallsIconLabel">"Reg. chiamate"</string>
+    <string name="liveFolderAll">"Tutti i contatti"</string>
+    <string name="liveFolderFavorites">"Contatti speciali"</string>
+    <string name="liveFolderPhone">"Contatti con numeri di telefono"</string>
+    <string name="menu_sendTextMessage">"Invia SMS"</string>
+    <string name="recentCalls_callNumber">"Chiama <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Modifica numero prima di chiamare"</string>
+    <string name="recentCalls_addToContact">"Aggiungi a contatti"</string>
+    <string name="recentCalls_removeFromRecentList">"Rimuovi da registro chiamate"</string>
+    <string name="recentCalls_deleteAll">"Cancella registro chiamate"</string>
+    <string name="recentCalls_empty">"Il registro chiamate è vuoto."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Segreteria"</string>
+    <string name="unknown">"Sconosciuto"</string>
+    <string name="private_num">"Numero privato"</string>
+    <string name="dialerKeyboardHintText">"Usa la tastiera"</string>
+    <string name="dialerDialpadHintText">"Componi per aggiungere una chiamata"</string>
+    <string name="simContacts_emptyLoading">"Caricamento da SIM..."</string>
+    <string name="simContacts_title">"Contatti SIM"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Sincronizza i tuoi contatti Google."</font>" "\n"Dopo la sincronizzazione con il telefono, i tuoi contatti saranno sempre a tua disposizione."</string>
+    <string name="noContactsHelpText">"Non esistono contatti."\n\n"Per aggiungere contatti, premi "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e seleziona:"\n\n"        "\n<li><font fgcolor="#ffffffff"><b>"Modifica sincr. gruppi"</b></font>" per aggiungere contatti da un account Google nuovo o esistente"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare un nuovo contatto"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"Importa contatti"</b></font>" per aggiungere contatti dalla SIM"\n</li></string>
+    <string name="seclectSyncGroups_title">"Seleziona i gruppi da sincronizzare"</string>
+    <string name="liveFolder_all_label">"Tutti i contatti"</string>
+    <string name="liveFolder_favorites_label">"Speciali"</string>
+    <string name="liveFolder_phones_label">"Telefoni"</string>
+    <string name="dialer_useDtmfDialpad">"Usa la tastiera per la selezione a toni"</string>
+    <string name="dialer_returnToInCallScreen">"Torna alla chiamata in corso"</string>
+    <string name="dialer_addAnotherCall">"Aggiungi chiamata"</string>
+</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index cb8c49c..3b911fb 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -36,9 +36,11 @@
     <string name="editContact_title_edit">"連絡先を編集"</string>
     <string name="editContact_title_insert">"新しい連絡先"</string>
     <string name="menu_addItem">"詳細情報"</string>
+    <string name="label_phonetic_name">フリガナ</string>
     <string name="label_notes">"メモ"</string>
     <string name="label_ringtone">"着信音"</string>
     <string name="ghostData_name">"氏名を入力してください"</string>
+    <string name="ghostData_phonetic_name">ﾌﾘｶﾞﾅ</string>
     <string name="ghostData_company">"会社"</string>
     <string name="ghostData_title">"役職"</string>
     <string name="ghostData_im">"IM名"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..5d472c1
--- /dev/null
+++ b/res/values-zh-rCN/strings.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"联系人"</string>
+    <string name="shortcutContact">"联系人"</string>
+    <string name="starredList">"已加星标"</string>
+    <string name="frequentList">"经常"</string>
+    <string name="strequentList">"收藏夹"</string>
+    <string name="viewContactTitle">"联系人详细信息"</string>
+    <string name="viewContactDesription">"查看联系人"</string>
+    <string name="editContactDescription">"编辑联系人"</string>
+    <string name="insertContactDescription">"创建联系人"</string>
+    <string name="searchHint">"搜索联系人"</string>
+    <string name="menu_newContact">"添加联系人"</string>
+    <string name="menu_viewContact">"查看联系人"</string>
+    <string name="menu_callNumber">"呼叫<xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"添加到收藏夹"</string>
+    <string name="menu_removeStar">"从收藏夹中删除"</string>
+    <string name="menu_showBarcode">"显示条形码"</string>
+    <string name="menu_editContact">"编辑联系人"</string>
+    <string name="menu_deleteContact">"删除联系人"</string>
+    <string name="menu_call">"呼叫"</string>
+    <string name="menu_sendSMS">"发送短信/彩信"</string>
+    <string name="menu_sendEmail">"发送电子邮件"</string>
+    <string name="menu_viewAddress">"地图地址"</string>
+    <string name="menu_makeDefaultNumber">"设置默认号码"</string>
+    <string name="deleteConfirmation_title">"删除"</string>
+    <string name="deleteConfirmation">"会删除此联系人。"</string>
+    <string name="menu_done">"保存"</string>
+    <string name="menu_doNotSave">"放弃更改"</string>
+    <string name="button_save">"保存"</string>
+    <string name="button_discard">"放弃更改"</string>
+    <string name="editContact_title_edit">"编辑联系人"</string>
+    <string name="editContact_title_insert">"添加联系人"</string>
+    <string name="menu_addItem">"详细信息"</string>
+    <string name="label_notes">"备注"</string>
+    <string name="label_ringtone">"铃声"</string>
+    <string name="ghostData_name">"第一个和最后一个"</string>
+    <string name="ghostData_company">"公司"</string>
+    <string name="ghostData_title">"位置"</string>
+    <string name="ghostData_im">"即时消息名称"</string>
+    <string name="ghostData_notes">"我的备注"</string>
+    <string name="ghostData_phone">"电话号码"</string>
+    <string name="ghostData_email">"电子邮件地址"</string>
+    <string name="ghostData_postal">"通讯地址"</string>
+    <string name="invalidContactMessage">"该联系人不存在。"</string>
+    <string name="pickerNewContactHeader">"创建新联系人"</string>
+    <string name="selectLabel">"选择标签"</string>
+    <string name="phoneLabelsGroup">"手机"</string>
+    <string name="emailLabelsGroup">"电子邮件"</string>
+    <string name="imLabelsGroup">"即时消息"</string>
+    <string name="postalLabelsGroup">"通讯地址"</string>
+    <string name="otherLabelsGroup">"其他"</string>
+  <string-array name="otherLabels">
+    <item>"组织"</item>
+    <item>"备注"</item>
+  </string-array>
+    <string name="errorDialogTitle">"没有图片"</string>
+    <string name="photoPickerNotFoundText">"手机上没有可用的图片。"</string>
+    <string name="attachToContact">"“联系人”图标"</string>
+    <string name="customLabelPickerTitle">"自定义标签名称"</string>
+    <string name="menu_displayGroup">"显示组"</string>
+    <string name="syncGroupPreference">"编辑同步组"</string>
+    <string name="importFromSim">"导入联系人"</string>
+    <string name="send_to_voicemail_checkbox">"直接呼叫语音信箱。"</string>
+    <string name="send_to_voicemail_view">"呼叫被直接发送至语音邮件。"</string>
+    <string name="default_ringtone">"默认"</string>
+    <string name="addPicture">"“添加”图标"</string>
+    <string name="removePicture">"“删除”图标"</string>
+    <string name="noContacts">"没有联系人。"</string>
+    <string name="noContactsWithPhoneNumbers">"没有联系人拥有电话号码。"</string>
+    <string name="noFavorites">"没有收藏内容。"</string>
+    <string name="select_group_title">"组"</string>
+    <string name="groupEmpty">"您的“<xliff:g id="GROUPNAME">%s</xliff:g>”组为空。"</string>
+    <string name="showAllGroups">"所有联系人"</string>
+    <string name="syncAllGroups">"同步所有联系人"</string>
+    <string name="groupNameMyContacts">"我的联系人"</string>
+    <string name="groupNameWithPhones">"拥有电话号码的联系人"</string>
+    <string name="contactCreatedToast">"已创建“联系人”。"</string>
+    <string name="contactSavedToast">"已保存联系人。"</string>
+    <string name="listSeparatorCallNumber">"拔号"</string>
+    <string name="listSeparatorSendSmsMms">"发送短信/彩信"</string>
+    <string name="listSeparatorSendEmail">"发送电子邮件"</string>
+    <string name="listSeparatorSendIm">"发送即时消息"</string>
+    <string name="listSeparatorMapAddress">"地图地址"</string>
+    <string name="listSeparatorOrganizations">"组织"</string>
+    <string name="listSeparatorOtherInformation">"其他信息"</string>
+    <string name="contactsIconLabel">"联系人"</string>
+    <string name="contactsFavoritesLabel">"收藏夹"</string>
+    <string name="dialerIconLabel">"拔号程序"</string>
+    <string name="recentCallsIconLabel">"通话记录"</string>
+    <string name="liveFolderAll">"所有联系人"</string>
+    <string name="liveFolderFavorites">"已加星标的联系人"</string>
+    <string name="liveFolderPhone">"具有电话号码的联系人"</string>
+    <string name="menu_sendTextMessage">"发送短信"</string>
+    <string name="recentCalls_callNumber">"呼叫<xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"在呼叫之前编辑号码"</string>
+    <string name="recentCalls_addToContact">"添加到联系人"</string>
+    <string name="recentCalls_removeFromRecentList">"从通话记录中删除"</string>
+    <string name="recentCalls_deleteAll">"清除通话记录"</string>
+    <string name="recentCalls_empty">"通话记录为空。"</string>
+    <string name="imei">"移动通信国际识别码"</string>
+    <string name="voicemail">"语音邮件"</string>
+    <string name="unknown">"未知"</string>
+    <string name="private_num">"私人号码"</string>
+    <string name="dialerKeyboardHintText">"使用键盘拔号"</string>
+    <string name="dialerDialpadHintText">"通过拨号添加通话"</string>
+    <string name="simContacts_emptyLoading">"正在从 SIM 卡中载入..."</string>
+    <string name="simContacts_title">"SIM 卡联系人"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"同步您的 Google 联系人！"</font>\n"将联系人同步到您的手机后，无论您走到哪里，都可以与他们联系。"</string>
+    <string name="noContactsHelpText">"您尚未有联系人。"\n\n"要添加联系人，可按"<font fgcolor="#ffffffff"><b>"菜单"</b></font>"并选择："\n\n"        "\n<li><font fgcolor="#ffffffff"><b>"编辑同步组"</b></font>"以从新的或现有 Google 帐户中添加"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"添加联系人"</b></font>"创建新联系人"\n</li>\n"        "\n<li><font fgcolor="#ffffffff"><b>"导入联系人"</b></font>"以从您的 SIM 卡中添加联系人"\n</li></string>
+    <string name="seclectSyncGroups_title">"选择要同步的组"</string>
+    <string name="liveFolder_all_label">"所有联系人"</string>
+    <string name="liveFolder_favorites_label">"已加星标"</string>
+    <string name="liveFolder_phones_label">"电话"</string>
+    <string name="dialer_useDtmfDialpad">"使用按键式键盘"</string>
+    <string name="dialer_returnToInCallScreen">"返回到正在进行中的通话"</string>
+    <string name="dialer_addAnotherCall">"添加通话"</string>
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 450b3fa..1b74492 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -117,6 +117,9 @@
     <!-- Button that adds more info to a contact, like a new phone number, email address, or postal address -->
     <string name="menu_addItem">More info</string>
 
+    <!-- The label describing the phonetic pronunciation/reading of a contact name -->
+    <string name="label_phonetic_name">Phonetic</string>
+
     <!-- The label describing the Notes field of a contact. This field allows free form text entry about a contact -->
     <string name="label_notes">Notes</string>
 
@@ -126,6 +129,9 @@
     <!-- Hint text for the contact name when editing -->
     <string name="ghostData_name">First and Last</string>
 
+    <!-- Hint text for the phonetic reading of the contact name when editing -->
+    <string name="ghostData_phonetic_name">Phonetic name</string>
+
     <!-- Hint text for the organization name when editing -->
     <string name="ghostData_company">Company</string>
 
diff --git a/src/com/android/contacts/ContactEntryAdapter.java b/src/com/android/contacts/ContactEntryAdapter.java
index 981b4bc..c5b7ccf 100644
--- a/src/com/android/contacts/ContactEntryAdapter.java
+++ b/src/com/android/contacts/ContactEntryAdapter.java
@@ -40,6 +40,7 @@
         People.STARRED, // 5
         People.CUSTOM_RINGTONE, // 6
         People.SEND_TO_VOICEMAIL, // 7
+        People.PHONETIC_NAME, // 8
     };
     public static final int CONTACT_ID_COLUMN = 0;
     public static final int CONTACT_NAME_COLUMN = 1;
@@ -49,6 +50,7 @@
     public static final int CONTACT_STARRED_COLUMN = 5;
     public static final int CONTACT_CUSTOM_RINGTONE_COLUMN = 6;
     public static final int CONTACT_SEND_TO_VOICEMAIL_COLUMN = 7;
+    public static final int CONTACT_PHONETIC_NAME_COLUMN = 8;
 
     public static final String[] PHONES_PROJECTION = new String[] {
         People.Phones._ID, // 0
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index 5e1fd63..5a83090 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -633,7 +633,7 @@
         Intent syncIntent = new Intent(Intent.ACTION_VIEW);
         syncIntent.setClass(this, ContactsGroupSyncSelector.class);
         menu.add(0, 0, 0, R.string.syncGroupPreference)
-                .setIcon(R.drawable.ic_menu_refresh)
+                .setIcon(android.R.drawable.ic_menu_refresh)
                 .setIntent(syncIntent);
         
         // SIM import
@@ -815,7 +815,6 @@
                     .setMessage(R.string.deleteConfirmation)
                     .setNegativeButton(android.R.string.cancel, null)
                     .setPositiveButton(android.R.string.ok, new DeleteClickListener(uri))
-                    .setCancelable(false)
                     .show();
                 return true;
             }
diff --git a/src/com/android/contacts/DialtactsActivity.java b/src/com/android/contacts/DialtactsActivity.java
index 00df1c1..1933c4c 100644
--- a/src/com/android/contacts/DialtactsActivity.java
+++ b/src/com/android/contacts/DialtactsActivity.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts;
 
+import android.app.Activity;
 import android.app.TabActivity;
 import android.content.Intent;
 import android.graphics.drawable.Drawable;
@@ -37,7 +38,7 @@
  * and another tab with recent calls in it. This is the container and the tabs
  * are embedded using intents.
  */
-public class DialtactsActivity extends TabActivity {
+public class DialtactsActivity extends TabActivity implements TabHost.OnTabChangeListener {
     private static final String TAG = "Dailtacts";
 
     public static final String EXTRA_IGNORE_STATE = "ignore-state";
@@ -66,6 +67,7 @@
         setContentView(R.layout.dialer_activity);
 
         mTabHost = getTabHost();
+        mTabHost.setOnTabChangedListener(this);
 
         // Setup the tabs
         setupDialerTab();
@@ -286,4 +288,16 @@
         
         return super.onKeyDown(keyCode, event);
     }
+
+    /** {@inheritDoc} */
+    public void onTabChanged(String tabId) {
+        // Because we're using Activities as our tab children, we trigger
+        // onWindowFocusChanged() to let them know when they're active.  This may
+        // seem to duplicate the purpose of onResume(), but it's needed because
+        // onResume() can't reliably check if a keyguard is active.
+        Activity activity = getLocalActivityManager().getActivity(tabId);
+        if (activity != null) {
+            activity.onWindowFocusChanged(true);
+        }
+    }
 }
diff --git a/src/com/android/contacts/EditContactActivity.java b/src/com/android/contacts/EditContactActivity.java
index 3a7610d..2994ce4 100644
--- a/src/com/android/contacts/EditContactActivity.java
+++ b/src/com/android/contacts/EditContactActivity.java
@@ -23,6 +23,7 @@
 import static com.android.contacts.ContactEntryAdapter.CONTACT_NOTES_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_PHONETIC_NAME_COLUMN;
 import static com.android.contacts.ContactEntryAdapter.METHODS_AUX_DATA_COLUMN;
 import static com.android.contacts.ContactEntryAdapter.METHODS_DATA_COLUMN;
 import static com.android.contacts.ContactEntryAdapter.METHODS_ID_COLUMN;
@@ -101,6 +102,7 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -172,6 +174,8 @@
     private LayoutInflater mInflater;
     private MenuItem mPhotoMenuItem;
     private boolean mPhotoPresent = false;
+    private EditText mPhoneticNameView;
+    private LinearLayout mPhoneticNameLayout;
 
     // These are accessed by inner classes. They're package scoped to make access more efficient.
     /* package */ ContentResolver mResolver;
@@ -308,8 +312,20 @@
         mPhotoButton = findViewById(R.id.photoButton);
         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 the bottom buttons 
+        // 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);
         view.setOnClickListener(this);
         view = findViewById(R.id.saveButton);
@@ -378,6 +394,7 @@
         outState.putParcelable("photo", mPhoto);
         outState.putBoolean("photoChanged", mPhotoChanged);
         outState.putBoolean("sendToVoicemail", mSendToVoicemailCheckBox.isChecked());
+        outState.putString("phoneticName", mPhoneticNameView.getText().toString());
     }
 
     @Override
@@ -403,7 +420,8 @@
         }
         mPhotoChanged = inState.getBoolean("photoChanged");
         mSendToVoicemailCheckBox.setChecked(inState.getBoolean("sendToVoicemail"));
-        
+        mPhoneticNameView.setText(inState.getString("phoneticName"));
+
         // Now that everything is restored, build the view
         buildViews();
     }
@@ -547,11 +565,17 @@
         intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
         // Don't show 'Silent'
         intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
+        
+        Uri ringtoneUri;
         if (entry.data != null) {
-            Uri ringtoneUri = Uri.parse(entry.data);
-            // Put checkmark next to the current ringtone for this contact
-            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneUri);
+            ringtoneUri = Uri.parse(entry.data);
+        } else {
+            // Otherwise pick default ringtone Uri so that something is selected.
+            ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
         }
+        
+        // Put checkmark next to the current ringtone for this contact
+        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneUri);
         // Launch!
         startActivityForResult(intent, RINGTONE_PICKED);
     }
@@ -919,6 +943,7 @@
             numValues++;
         }
         values.put(People.NAME, name);
+        values.put(People.PHONETIC_NAME, mPhoneticNameView.getText().toString());
         values.put(People.SEND_TO_VOICEMAIL, mSendToVoicemailCheckBox.isChecked() ? 1 : 0);
         mResolver.update(mUri, values, null, null);
 
@@ -992,6 +1017,7 @@
             numValues++;
         }
         values.put(People.NAME, name);
+        values.put(People.PHONETIC_NAME, mPhoneticNameView.getText().toString());
         values.put(People.SEND_TO_VOICEMAIL, mSendToVoicemailCheckBox.isChecked() ? 1 : 0);
 
         // Add the contact to the My Contacts group
@@ -1129,6 +1155,10 @@
         entry = EditEntry.newRingtoneEntry(this,
                 personCursor.getString(CONTACT_CUSTOM_RINGTONE_COLUMN), mUri);
         mOtherEntries.add(entry);
+
+        // Phonetic name
+        mPhoneticNameView.setText(personCursor.getString(CONTACT_PHONETIC_NAME_COLUMN));
+
         personCursor.close();
 
         // Build up the phone entries
@@ -1279,7 +1309,6 @@
         // Ringtone
         entry = EditEntry.newRingtoneEntry(this, null, mUri);
         mOtherEntries.add(entry);
-        
     }
 
     private void addFromExtras(Bundle extras, Uri phonesUri, Uri methodsUri) {
@@ -1290,14 +1319,20 @@
         if (name != null && TextUtils.isGraphic(name)) {
             mNameView.setText(name);
         }
-        
+
+        // Read the phonetic name from the bundle
+        CharSequence phoneticName = extras.getCharSequence(Insert.PHONETIC_NAME);
+        if (!TextUtils.isEmpty(phoneticName)) {
+            mPhoneticNameView.setText(phoneticName);
+        }
+
         // Postal entries from extras
         CharSequence postal = extras.getCharSequence(Insert.POSTAL);
         int postalType = extras.getInt(Insert.POSTAL_TYPE, INVALID_TYPE);
         if (!TextUtils.isEmpty(postal) && postalType == INVALID_TYPE) {
             postalType = DEFAULT_POSTAL_TYPE;
         }
-        
+
         if (postalType != INVALID_TYPE) {
             entry = EditEntry.newPostalEntry(this, null, postalType, postal.toString(),
                     methodsUri, 0);
@@ -1344,14 +1379,24 @@
     private void addEmailFromExtras(Bundle extras, Uri methodsUri, String emailField,
             String typeField, String primaryField) {
         CharSequence email = extras.getCharSequence(emailField);
-        int emailType = extras.getInt(typeField, INVALID_TYPE);
+        
+        // Correctly handle String in typeField as TYPE_CUSTOM 
+        int emailType = INVALID_TYPE;
+        String customLabel = null;
+        if(extras.get(typeField) instanceof String) {
+            emailType = ContactMethods.TYPE_CUSTOM;
+            customLabel = extras.getString(typeField);
+        } else {
+            emailType = extras.getInt(typeField, INVALID_TYPE);
+        }
+
         if (!TextUtils.isEmpty(email) && emailType == INVALID_TYPE) {
             emailType = DEFAULT_EMAIL_TYPE;
             mPrimaryEmailAdded = true;
         }
 
         if (emailType != INVALID_TYPE) {
-            EditEntry entry = EditEntry.newEmailEntry(this, null, emailType, email.toString(),
+            EditEntry entry = EditEntry.newEmailEntry(this, customLabel, emailType, email.toString(),
                     methodsUri, 0);
             entry.isPrimary = (primaryField == null) ? false : extras.getBoolean(primaryField);
             mEmailEntries.add(entry);
@@ -1366,13 +1411,23 @@
     private void addPhoneFromExtras(Bundle extras, Uri phonesUri, String phoneField,
             String typeField, String primaryField) {
         CharSequence phoneNumber = extras.getCharSequence(phoneField);
-        int phoneType = extras.getInt(typeField, INVALID_TYPE);
+        
+        // Correctly handle String in typeField as TYPE_CUSTOM 
+        int phoneType = INVALID_TYPE;
+        String customLabel = null;
+        if(extras.get(typeField) instanceof String) {
+            phoneType = Phones.TYPE_CUSTOM;
+            customLabel = extras.getString(typeField);
+        } else {
+            phoneType = extras.getInt(typeField, INVALID_TYPE);
+        }
+        
         if (!TextUtils.isEmpty(phoneNumber) && phoneType == INVALID_TYPE) {
             phoneType = DEFAULT_PHONE_TYPE;
         }
 
         if (phoneType != INVALID_TYPE) {
-            EditEntry entry = EditEntry.newPhoneEntry(this, null, phoneType,
+            EditEntry entry = EditEntry.newPhoneEntry(this, customLabel, phoneType,
                     phoneNumber.toString(), phonesUri, 0);
             entry.isPrimary = (primaryField == null) ? false : extras.getBoolean(primaryField);
             mPhoneEntries.add(entry);
diff --git a/src/com/android/contacts/RecentCallsListActivity.java b/src/com/android/contacts/RecentCallsListActivity.java
index 550a385..85099fa 100644
--- a/src/com/android/contacts/RecentCallsListActivity.java
+++ b/src/com/android/contacts/RecentCallsListActivity.java
@@ -271,7 +271,7 @@
                 Cursor phonesCursor =
                     RecentCallsListActivity.this.getContentResolver().query(
                             Uri.withAppendedPath(Phones.CONTENT_FILTER_URL,
-                                    ciq.number),
+                                    Uri.encode(ciq.number)),
                     PHONES_PROJECTION, null, null, null);
                 if (phonesCursor != null) {
                     if (phonesCursor.moveToFirst()) {
@@ -434,7 +434,10 @@
             }
 
             // Set the time and date
-            views.dateView.setText(DateUtils.getRelativeTimeSpanString(date));
+            int flags = DateUtils.FORMAT_ABBREV_RELATIVE | DateUtils.FORMAT_SHOW_DATE
+                    | DateUtils.FORMAT_ABBREV_MONTH;
+            views.dateView.setText(DateUtils.getRelativeDateTimeString(context, date,
+                    DateUtils.MINUTE_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, flags));
 
             // Set the icon
             switch (type) {
@@ -503,7 +506,7 @@
                 .getVoiceMailNumber();
         mQueryHandler = new QueryHandler(this);
     }
-
+    
     @Override
     protected void onResume() {
         // The adapter caches looked up numbers, clear it so they will get
@@ -516,16 +519,7 @@
         resetNewCallsFlag();
 
         super.onResume();
-        try {
-            ITelephony iTelephony = ITelephony.Stub.asInterface(ServiceManager.getService("phone"));
-            if (iTelephony != null) {
-                iTelephony.cancelMissedCallsNotification();
-            } else {
-                Log.w(TAG, "Telephony service is null, can't call cancelMissedCallsNotification");
-            }
-        } catch (RemoteException e) {
-            Log.e(TAG, "Failed to clear missed calls notification due to remote excetpion");
-        }
+
         mAdapter.mPreDrawListener = null; // Let it restart the thread after next draw
     }
 
@@ -547,6 +541,28 @@
         }
     }
 
+    @Override
+    public void onWindowFocusChanged(boolean hasFocus) {
+        super.onWindowFocusChanged(hasFocus);
+        
+        // Clear notifications only when window gains focus.  This activity won't
+        // immediately receive focus if the keyguard screen is above it.
+        if (hasFocus) {
+            try {
+                ITelephony iTelephony =
+                        ITelephony.Stub.asInterface(ServiceManager.getService("phone"));
+                if (iTelephony != null) {
+                    iTelephony.cancelMissedCallsNotification();
+                } else {
+                    Log.w(TAG, "Telephony service is null, can't call " +
+                            "cancelMissedCallsNotification");
+                }
+            } catch (RemoteException e) {
+                Log.e(TAG, "Failed to clear missed calls notification due to remote exception");
+            }
+        }
+    }
+
     private void resetNewCallsFlag() {
         // Mark all "new" missed calls as not new anymore
         StringBuilder where = new StringBuilder("type=");
diff --git a/src/com/android/contacts/TwelveKeyDialer.java b/src/com/android/contacts/TwelveKeyDialer.java
index 41adc5a..1a06026 100644
--- a/src/com/android/contacts/TwelveKeyDialer.java
+++ b/src/com/android/contacts/TwelveKeyDialer.java
@@ -196,18 +196,14 @@
         // Set up the "dialpad chooser" UI; see showDialpadChooser().
         mDialpadChooser = (ListView) findViewById(R.id.dialpadChooser);
         mDialpadChooser.setOnItemClickListener(this);
-        // Add a dummy "footer" view so that the divider under the bottom
-        // item will be visible.
-        // (We set android:footerDividersEnabled="true" on this ListView in XML.)
-        mDialpadChooser.addFooterView(new View(this), null, false);
 
         if (!resolveIntent() && icicle != null) {
             super.onRestoreInstanceState(icicle);
         }
-        
-        // if the mToneGenerator creation fails, just continue without it.  It is 
+
+        // If the mToneGenerator creation fails, just continue without it.  It is
         // a local audio signal, and is not as important as the dtmf tone itself.
-        synchronized(mToneGeneratorLock) {
+        synchronized (mToneGeneratorLock) {
             if (mToneGenerator == null) {
                 try {
                     mToneGenerator = new ToneGenerator(AudioManager.STREAM_RING, 
