auto import from //branches/cupcake/...@125939
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,