Merge goog/eclair-dev into goog/eclair
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d68a6bc..dd3879c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -26,6 +26,8 @@
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
     <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.USE_CREDENTIALS" />
 
     <application
@@ -264,6 +266,30 @@
 
         </activity-alias>
 
+        <activity-alias android:name="alias.DialShortcut"
+            android:targetActivity="ContactsListActivity"
+            android:label="@string/shortcutDialContact"
+            android:icon="@drawable/ic_launcher_shortcut_contact">
+
+            <intent-filter>
+                <action android:name="android.intent.action.CREATE_SHORTCUT" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+        </activity-alias>
+
+        <activity-alias android:name="alias.MessageShortcut"
+            android:targetActivity="ContactsListActivity"
+            android:label="@string/shortcutMessageContact"
+            android:icon="@drawable/ic_launcher_shortcut_contact">
+
+            <intent-filter>
+                <action android:name="android.intent.action.CREATE_SHORTCUT" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+        </activity-alias>
+
         <activity android:name="CallDetailActivity"
             android:label="@string/callDetailTitle"
             android:theme="@style/TallTitleBarTheme"
@@ -377,6 +403,9 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".ImportVCardActivity"
+            android:theme="@style/BackgroundOnly" />
+
     </application>
 </manifest>
 
diff --git a/res/drawable-finger/badge_action_call.png b/res/drawable-finger/badge_action_call.png
new file mode 100644
index 0000000..3bc88a3
--- /dev/null
+++ b/res/drawable-finger/badge_action_call.png
Binary files differ
diff --git a/res/drawable-finger/badge_action_sms.png b/res/drawable-finger/badge_action_sms.png
new file mode 100644
index 0000000..bbcfb59
--- /dev/null
+++ b/res/drawable-finger/badge_action_sms.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_export_contact.png b/res/drawable-finger/ic_menu_export_contact.png
new file mode 100644
index 0000000..d5b7554
--- /dev/null
+++ b/res/drawable-finger/ic_menu_export_contact.png
Binary files differ
diff --git a/res/drawable/ic_menu_2sec_pause.png b/res/drawable/ic_menu_2sec_pause.png
new file mode 100644
index 0000000..dcaa5ff
--- /dev/null
+++ b/res/drawable/ic_menu_2sec_pause.png
Binary files differ
diff --git a/res/drawable/ic_menu_wait.png b/res/drawable/ic_menu_wait.png
new file mode 100644
index 0000000..c20457a
--- /dev/null
+++ b/res/drawable/ic_menu_wait.png
Binary files differ
diff --git a/res/layout-finger/contacts_list_content.xml b/res/layout-finger/contacts_list_content.xml
index 32b7ffc..1f37dcf 100644
--- a/res/layout-finger/contacts_list_content.xml
+++ b/res/layout-finger/contacts_list_content.xml
@@ -4,9 +4,9 @@
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at
-  
+
           http://www.apache.org/licenses/LICENSE-2.0
-  
+
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,7 +20,7 @@
         android:orientation="vertical">
 
     <ListView android:id="@android:id/list"
-            android:layout_width="fill_parent" 
+            android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:fastScrollEnabled="true"
     />
diff --git a/res/layout-finger/twelve_key_dialer.xml b/res/layout-finger/twelve_key_dialer.xml
index 8d4ace4..b873d3e 100644
--- a/res/layout-finger/twelve_key_dialer.xml
+++ b/res/layout-finger/twelve_key_dialer.xml
@@ -58,6 +58,21 @@
     <!-- Keypad section -->
     <include layout="@layout/dialpad" />
 
+    <!-- Onscreen "Dial" button, used on some platforms -->
+    <Button android:id="@+id/dialButton"
+            android:text="@string/dial_button_label"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:layout_width="wrap_content"
+            android:layout_height="60dip"
+            android:gravity="center"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="20dip"
+            android:paddingLeft="100dip"
+            android:paddingRight="100dip"
+            android:enabled="false"
+            android:visibility="gone"
+            />
+
     <!-- "Dialpad chooser" UI, shown only when the user brings up the
          Dialer while a call is already in progress.
          When this UI is visible, the other Dialer elements
diff --git a/res/layout-land-finger/twelve_key_dialer.xml b/res/layout-land-finger/twelve_key_dialer.xml
index 325f05c..d797fc1 100644
--- a/res/layout-land-finger/twelve_key_dialer.xml
+++ b/res/layout-land-finger/twelve_key_dialer.xml
@@ -59,6 +59,21 @@
 
     </LinearLayout>
 
+    <!-- Onscreen "Dial" button, used on some platforms -->
+    <Button android:id="@+id/dialButton"
+            android:text="@string/dial_button_label"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:layout_width="wrap_content"
+            android:layout_height="60dip"
+            android:gravity="center"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="20dip"
+            android:paddingLeft="100dip"
+            android:paddingRight="100dip"
+            android:enabled="false"
+            android:visibility="gone"
+            />
+
     <!-- "Dialpad chooser" UI, shown only when the user brings up the
          Dialer while a call is already in progress.
          When this UI is visible, the other Dialer elements
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index e48a2d9..3c4ca0e 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -18,6 +18,11 @@
     <string name="contactsList">"Kontakty"</string>
     <string name="launcherDialer">"Vytáčení"</string>
     <string name="shortcutContact">"Kontakt"</string>
+    <string name="shortcutDialContact">"Přímé vytáčení"</string>
+    <string name="shortcutMessageContact">"Přímá zpráva"</string>
+    <string name="shortcutActivityTitle">"Výběr zkratky kontaktu"</string>
+    <string name="callShortcutActivityTitle">"Výběr čísla pro hovor"</string>
+    <string name="messageShortcutActivityTitle">"Výběr čísla pro zprávu"</string>
     <string name="starredList">"Označené hvězdičkou"</string>
     <string name="frequentList">"Časté"</string>
     <string name="strequentList">"Oblíbené"</string>
@@ -168,4 +173,55 @@
     <string name="favoritesFrquentSeparator">"Často volané"</string>
     <string name="add_contact_dlg_title">"Přidat kontakt"</string>
     <string name="add_contact_dlg_message_fmt">"Chcete přidat „<xliff:g id="EMAIL">%s</xliff:g>“ do kontaktů?"</string>
+    <string name="description_image_button_one">"jedna"</string>
+    <string name="description_image_button_two">"dvě"</string>
+    <string name="description_image_button_three">"tři"</string>
+    <string name="description_image_button_four">"čtyři"</string>
+    <string name="description_image_button_five">"pět"</string>
+    <string name="description_image_button_six">"šest"</string>
+    <string name="description_image_button_seven">"sedm"</string>
+    <string name="description_image_button_eight">"osm"</string>
+    <string name="description_image_button_nine">"devět"</string>
+    <string name="description_image_button_star">"hvězdička"</string>
+    <string name="description_image_button_zero">"nula"</string>
+    <string name="description_image_button_pound">"libra"</string>
+    <string name="no_sdcard_title">"Žádná karta SD"</string>
+    <string name="no_sdcard_message">"Nebyla zjištěna žádná karta SD"</string>
+    <string name="searching_vcard_title">"Vyhledávání karty VCard"</string>
+    <string name="select_import_type_title">"Odkud chcete kontakty importovat?"</string>
+    <string name="import_from_sim">"Karta SIM"</string>
+    <string name="import_from_sdcard">"Karta SD"</string>
+    <string name="import_all_vcard_string">"Importovat všechny soubory VCard"</string>
+    <string name="import_one_vcard_string">"Importovat jeden soubor karty VCard"</string>
+    <string name="searching_vcard_message">"Vyhledávání dat karty VCard na kartě VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Vyhledávání na kartě SD se nezdařilo"</string>
+    <string name="scanning_sdcard_failed_message">"Vyhledávání na kartě SD se nezdařilo"</string>
+    <string name="fail_reason_io_error">"Chyba V/V"</string>
+    <string name="fail_reason_vcard_parse_error">"Analýza karty VCard se nezdařila"</string>
+    <string name="fail_reason_no_vcard_file">"Na kartě SD nebyl nalezen žádný soubor karty VCard"</string>
+    <string name="fail_reason_no_vcard_entry">"Pro daný výběr nebyla nalezena žádná položka karty VCard"</string>
+    <string name="select_vcard_title">"Výběr souboru VCard"</string>
+    <string name="select_vcard_message">"Vyberte soubor karty VCard k importu"</string>
+    <string name="reading_vcard_title">"Čtení karty VCard"</string>
+    <string name="reading_vcard_message">"Čtení souborů karty VCard"</string>
+    <string name="importing_vcard_message">"Probíhá import dat na kartě VCard"</string>
+    <string name="reading_vcard_failed_title">"Čtení dat karty VCard se nezdařilo"</string>
+    <string name="reading_vcard_failed_message">"Data na kartě VCard nelze přečíst."\n"Důvod selhání: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktů"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g> souborů"</string>
+    <string name="export_contact_list">"Export kontaktů"</string>
+    <string name="confirm_export_title">"Potvrzení exportu"</string>
+    <string name="confirm_export_message">"Mají se kontakty exportovat do souboru <xliff:g id="VCARD_FILENAME">%s</xliff:g>?"</string>
+    <string name="exporting_contact_failed_title">"Export dat kontaktů se nezdařil"</string>
+    <string name="exporting_contact_failed_message">"Export dat kontaktů se nezdařil"\n"Důvod selhání: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_too_many_vcard">"Na kartě SD je příliš mnoho dat karty VCard"</string>
+    <string name="fail_reason_cannot_open_destination_dir">"Cílový adresář <xliff:g id="DIR_NAME">%s</xliff:g> nelze otevřít nebo vytvořit."</string>
+    <string name="exporting_contact_list_title">"Export dat kontaktů"</string>
+    <string name="exporting_contact_list_message">"Probíhá export dat kontaktů do souboru <xliff:g id="FILE_NAME">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_initialize_exporter">"Nelze spustit exportní program: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_error_occurred_during_export">"Při exportu došlo k chybě: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="fail_reason_could_not_open_file">"Soubor <xliff:g id="FILE_NAME">%s</xliff:g> nelze otevřít: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_progress">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktů"</string>
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
new file mode 100644
index 0000000..e773e5d
--- /dev/null
+++ b/res/values-da/strings.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Kontaktpersoner"</string>
+    <string name="launcherDialer">"Opkald"</string>
+    <string name="shortcutContact">"Kontaktperson"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
+    <string name="starredList">"Stjernemarkerede"</string>
+    <string name="frequentList">"Ofte"</string>
+    <string name="strequentList">"Favoritter"</string>
+    <string name="viewContactTitle">"Kontaktoplysninger"</string>
+    <string name="viewContactDesription">"Vis kontaktperson"</string>
+    <string name="editContactDescription">"Rediger kontaktperson"</string>
+    <string name="insertContactDescription">"Opret kontaktperson"</string>
+    <string name="searchHint">"Søg i kontaktpersoner"</string>
+    <string name="menu_search">"Søg"</string>
+    <string name="menu_newContact">"Ny kontaktperson"</string>
+    <string name="menu_viewContact">"Vis kontaktperson"</string>
+    <string name="menu_callNumber">"Ring til <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Føj til favoritter"</string>
+    <string name="menu_removeStar">"Fjern fra favoritter"</string>
+    <string name="menu_showBarcode">"Vis stregkode"</string>
+    <string name="menu_editContact">"Rediger kontaktperson"</string>
+    <string name="menu_deleteContact">"Slet kontaktperson"</string>
+    <string name="menu_call">"Opkald"</string>
+    <string name="menu_sendSMS">"Send SMS/MMS"</string>
+    <string name="menu_sendEmail">"Send e-mail"</string>
+    <string name="menu_viewAddress">"Kortadresse"</string>
+    <string name="menu_makeDefaultNumber">"Gør til standardnummer"</string>
+    <string name="deleteConfirmation_title">"Slet"</string>
+    <string name="deleteConfirmation">"Denne kontaktperson slettes"</string>
+    <string name="menu_done">"Færdig"</string>
+    <string name="menu_doNotSave">"Vend tilbage"</string>
+    <string name="editContact_title_edit">"Rediger kontaktperson"</string>
+    <string name="editContact_title_insert">"Ny kontaktperson"</string>
+    <string name="menu_addItem">"Få flere oplysninger"</string>
+    <string name="label_phonetic_name">"Fonetisk"</string>
+    <string name="label_notes">"Noter"</string>
+    <string name="label_ringtone">"Ringetone"</string>
+    <string name="ghostData_name">"Første og sidste"</string>
+    <string name="ghostData_phonetic_name">"Fonetisk navn"</string>
+    <string name="ghostData_company">"Virksomhed"</string>
+    <string name="ghostData_title">"Position"</string>
+    <string name="ghostData_im">"IM-navn"</string>
+    <string name="ghostData_notes">"Min note"</string>
+    <string name="ghostData_phone">"Telefonnummer"</string>
+    <string name="ghostData_email">"E-mail-adresse"</string>
+    <string name="ghostData_postal">"Postadresse"</string>
+    <string name="invalidContactMessage">"Kontaktpersonen eksisterer ikke."</string>
+    <string name="pickerNewContactHeader">"Opret ny kontaktperson"</string>
+    <string name="selectLabel">"Vælg etiket"</string>
+    <string name="phoneLabelsGroup">"Telefon"</string>
+    <string name="emailLabelsGroup">"E-mail"</string>
+    <string name="imLabelsGroup">"IM"</string>
+    <string name="postalLabelsGroup">"Postadresse"</string>
+    <string name="otherLabelsGroup">"Andre"</string>
+  <string-array name="otherLabels">
+    <item>"Organisation"</item>
+    <item>"Note"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Der er ingen billeder"</string>
+    <string name="photoPickerNotFoundText">"Der er ingen tilgængelige billeder på telefonen."</string>
+    <string name="attachToContact">"Kontaktpersonikon"</string>
+    <string name="customLabelPickerTitle">"Navn på tilpasset etiket"</string>
+    <string name="menu_displayGroup">"Vis grupper"</string>
+    <string name="syncGroupPreference">"Rediger grupper, der skal synkroniseres"</string>
+    <string name="importFromSim">"Importer kontaktpersoner"</string>
+    <string name="send_to_voicemail_checkbox">"Send opkald direkte til voicemail"</string>
+    <string name="send_to_voicemail_view">"Opkald sendes direkte til voicemail."</string>
+    <string name="default_ringtone">"Standard"</string>
+    <string name="addPicture">"Tilføj ikon"</string>
+    <string name="removePicture">"Fjern ikon"</string>
+    <string name="noContacts">"Der er ingen kontaktpersoner."</string>
+    <string name="noContactsWithPhoneNumbers">"Der er ingen kontaktpersoner med telefonnumre."</string>
+    <string name="noFavorites">"Der er ingen favoritter."</string>
+    <string name="select_group_title">"Grupper"</string>
+    <string name="groupEmpty">"Din gruppe \"<xliff:g id="GROUPNAME">%s</xliff:g>\" er tom."</string>
+    <string name="showAllGroups">"Alle kontaktpersoner"</string>
+    <string name="syncAllGroups">"Synkroniser alle kontaktpersoner"</string>
+    <string name="groupNameMyContacts">"Mine kontaktpersoner"</string>
+    <string name="groupNameWithPhones">"Kontaktpersoner med telefonnumre"</string>
+    <string name="starredInAndroid">"Stjernemarkerede i Android"</string>
+    <string name="contactCreatedToast">"Kontaktperson oprettet."</string>
+    <string name="contactSavedToast">"Kontaktpersonen er gemt."</string>
+    <string name="listSeparatorCallNumber">"Ring til nummer"</string>
+    <string name="listSeparatorCallNumber_edit">"Telefonnumre"</string>
+    <string name="listSeparatorSendSmsMms">"Send SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Send e-mail"</string>
+    <string name="listSeparatorSendEmail_edit">"E-mail-adresser"</string>
+    <string name="listSeparatorSendIm">"Send chatbesked"</string>
+    <string name="listSeparatorSendIm_edit">"Chatadresser"</string>
+    <string name="listSeparatorMapAddress">"Kortadresse"</string>
+    <string name="listSeparatorMapAddress_edit">"Postadresse"</string>
+    <string name="listSeparatorOrganizations">"Organisationer"</string>
+    <string name="listSeparatorOtherInformation">"Andre oplysninger"</string>
+    <string name="listSeparatorOtherInformation_edit">"Andre valgmuligheder"</string>
+    <string name="listSeparatorMore_edit">"Flere"</string>
+    <string name="contactsIconLabel">"Kontaktpersoner"</string>
+    <string name="contactsFavoritesLabel">"Favoritter"</string>
+    <string name="dialerIconLabel">"Opkald"</string>
+    <string name="recentCallsIconLabel">"Opkaldsliste"</string>
+    <string name="liveFolderAll">"Alle kontaktpersoner"</string>
+    <string name="liveFolderFavorites">"Stjernemarkerede kontaktpersoner"</string>
+    <string name="liveFolderPhone">"Kontaktpersoner med telefonnumre"</string>
+    <string name="menu_sendTextMessage">"Send SMS"</string>
+    <string name="recentCalls_callNumber">"Ring til <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Rediger nummer inden opkald"</string>
+    <string name="recentCalls_addToContact">"Føj til kontaktpersoner"</string>
+    <string name="recentCalls_removeFromRecentList">"Fjern fra opkaldsliste"</string>
+    <string name="recentCalls_deleteAll">"Ryd opkaldsliste"</string>
+    <string name="recentCalls_empty">"Opkaldsliste er tom."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Voicemail"</string>
+    <string name="unknown">"Ukendte"</string>
+    <string name="private_num">"Privat nummer"</string>
+    <string name="payphone">"Betalingstelefon"</string>
+    <string name="dialerKeyboardHintText">"Brug tastatur til at ringe op"</string>
+    <string name="dialerDialpadHintText">"Ring for at tilføje et opkald"</string>
+    <string name="simContacts_emptyLoading">"Indlæser fra SIM-kort ..."</string>
+    <string name="simContacts_title">"Kontaktpersoner på SIM-kort"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synkroniser dine Google-kontaktpersoner!"</font>\n"Når du har synkroniseret din telefon, bliver dine kontaktpersoner tilgængelige, uanset hvor du befinder dig."</string>
+    <string name="noContactsHelpText">"Du har ingen kontaktpersoner."\n\n"For at tilføje kontaktpersoner skal du trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og vælge:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer kontaktpersoner"</b></font>" for at tilføje kontaktpersoner fra dit SIM-kort"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Du har ingen kontaktpersoner."\n\n"For at tilføje kontaktpersoner skal du trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og vælge:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Rediger grupper, der skal synkroniseres"</b></font>", for at tilføje fra en ny eller eksisterende Google-konto"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer kontaktpersoner"</b></font>" for at tilføje kontaktpersoner fra dit SIM-kort"\n</li></string>
+    <string name="seclectSyncGroups_title">"Vælg grupper, der skal synkroniseres"</string>
+    <string name="liveFolder_all_label">"Alle kontaktpersoner"</string>
+    <string name="liveFolder_favorites_label">"Stjernemarkerede"</string>
+    <string name="liveFolder_phones_label">"Telefoner"</string>
+    <string name="dialer_useDtmfDialpad">"Brug touch-tone-tastatur"</string>
+    <string name="dialer_returnToInCallScreen">"Vend tilbage til igangværende opkald"</string>
+    <string name="dialer_addAnotherCall">"Tilføj opkald"</string>
+    <string name="callDetailTitle">"Opkaldsdetaljer"</string>
+    <string name="toast_call_detail_error">"Detaljerne for det anmodede opkald kunne ikke læses."</string>
+    <string name="call_type">"Type"</string>
+    <string name="type_incoming">"Indgående opkald"</string>
+    <string name="type_outgoing">"Udgående opkald"</string>
+    <string name="type_missed">"Ubesvarede opkald"</string>
+    <string name="call_time">"Tid"</string>
+    <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g> (<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
+    <string name="call_duration">"Varighed"</string>
+    <string name="header_actions">"Handlinger"</string>
+    <string name="ringtone_spinner">"Ringetone: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
+    <string name="add_more_items">"Tilføj flere emner"</string>
+    <string name="actionCall">"Ring til <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionEmail">"E-mail <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Tekst <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"Chat ved hjælp af <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionMap">"Vis <xliff:g id="TYPE">%s</xliff:g> adresse"</string>
+    <string name="actionIncomingCall">"Indgående opkald"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"Sendes direkte til voicemail"</string>
+    <string name="detailsRingtone">"Indstil til <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
+    <string name="callBack">"Ring tilbage"</string>
+    <string name="callAgain">"Ring op igen"</string>
+    <string name="returnCall">"Returner opkald"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="favoritesFrquentSeparator">"Ofte ringet til"</string>
+    <string name="add_contact_dlg_title">"Tilføj kontaktperson"</string>
+    <string name="add_contact_dlg_message_fmt">"Føj \"<xliff:g id="EMAIL">%s</xliff:g>\" til kontaktpersoner?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"Der er ikke noget SD-kort"</string>
+    <string name="no_sdcard_message">"Der blev ikke fundet noget SD-kort"</string>
+    <string name="searching_vcard_title">"Søger efter VCard"</string>
+    <string name="select_import_type_title">"Hvor ønsker du at importere kontaktpersoner fra?"</string>
+    <string name="import_from_sim">"SIM-kort"</string>
+    <string name="import_from_sdcard">"SD-kort"</string>
+    <string name="import_all_vcard_string">"Importer alle VCard-filer"</string>
+    <string name="import_one_vcard_string">"Importer en VCard-fil"</string>
+    <string name="searching_vcard_message">"Søger efter VCard-data på VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Scanningen af SD-kortet mislykkedes"</string>
+    <string name="scanning_sdcard_failed_message">"Scanningen af SD-kortet mislykkedes"</string>
+    <string name="fail_reason_io_error">"I/O-fejl"</string>
+    <string name="fail_reason_vcard_parse_error">"VCard kunne ikke parses"</string>
+    <string name="fail_reason_no_vcard_file">"Der blev ikke fundet noget VCard på SD-kortet"</string>
+    <string name="fail_reason_no_vcard_entry">"Der blev ikke fundet nogen gyldig VCard-post til dit udvalg"</string>
+    <string name="select_vcard_title">"Vælg VCard-fil"</string>
+    <string name="select_vcard_message">"Vælg en VCard-fil, der skal importeres"</string>
+    <string name="reading_vcard_title">"Læser VCard"</string>
+    <string name="reading_vcard_message">"Læser VCard-fil(er)"</string>
+    <string name="importing_vcard_message">"Importerer VCard-data"</string>
+    <string name="reading_vcard_failed_title">"Læsning af VCard-data mislykkedes"</string>
+    <string name="reading_vcard_failed_message">"VCard-data kunne ikke læses"\n"Årsag til fejl: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> af <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktpersoner"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> af <xliff:g id="TOTAL_NUMBER">%s</xliff:g> filer"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index a6e69a7..a92a8f8 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -18,6 +18,11 @@
     <string name="contactsList">"Kontakte"</string>
     <string name="launcherDialer">"Telefon"</string>
     <string name="shortcutContact">"Kontakt"</string>
+    <string name="shortcutDialContact">"Direktwahl"</string>
+    <string name="shortcutMessageContact">"Direktnachricht"</string>
+    <string name="shortcutActivityTitle">"Verknüpfung für Kontakt auswählen"</string>
+    <string name="callShortcutActivityTitle">"Nummer für den Anruf auswählen"</string>
+    <string name="messageShortcutActivityTitle">"Nummer für Nachricht auswählen"</string>
     <string name="starredList">"Markiert"</string>
     <string name="frequentList">"Häufig"</string>
     <string name="strequentList">"Favoriten"</string>
@@ -78,7 +83,7 @@
     <string name="menu_displayGroup">"Gruppe anzeigen"</string>
     <string name="syncGroupPreference">"Sync-Gruppen bearb."</string>
     <string name="importFromSim">"Kontakte importieren"</string>
-    <string name="send_to_voicemail_checkbox">"Anrufe direkt an Voicemail senden"</string>
+    <string name="send_to_voicemail_checkbox">"Anrufe direkt an Mailbox senden"</string>
     <string name="send_to_voicemail_view">"Anrufe werden direkt an Mailbox gesendet"</string>
     <string name="default_ringtone">"Standard"</string>
     <string name="addPicture">"Symbol hinzufügen"</string>
@@ -128,18 +133,18 @@
     <string name="private_num">"Private Nummer"</string>
     <string name="payphone">"Münztelefon"</string>
     <string name="dialerKeyboardHintText">"Mit Tastatur wählen"</string>
-    <string name="dialerDialpadHintText">"Zus. Nummer wählen"</string>
+    <string name="dialerDialpadHintText">"Nummer wählen"</string>
     <string name="simContacts_emptyLoading">"Ladevorgang von SIM-Karte läuft..."</string>
     <string name="simContacts_title">"Kontakte auf SIM-Karte"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synchronisieren Sie Ihre Google-Kontakte!"</font>" "\n"Nach der Synchronisierung stehen Ihnen Ihre Kontakte überall zur Verfügung."</string>
-    <string name="noContactsHelpText">"Es sind keine Kontakte vorhanden."\n\n"Drücken Sie zum Hinzufügen von Kontakten auf "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und wählen Sie Folgendes aus:"\n\n"        "<li><font fgcolor="#ffffffff"><b></b>"Neuer Kontakt"</font>\n", um einen neuen Kontakt zu erstellen"</li>\n<li>"        "<font fgcolor="#ffffffff"><b></b></font>"Kontakte importieren"\n</li>", um Kontakte von Ihrer SIM-Karte hinzuzufügen"</string>
-    <string name="noContactsHelpTextWithSync">"Sie haben keine Kontakte."\n\n"Drücken Sie zum Hinzufügen die "<font fgcolor="#ffffffff"><b>"Menütaste"</b></font>" und wählen Sie"\n\n"        "<li><font fgcolor="#ffffffff"><b>"Synchronisierungsgruppen bearbeiten"</b></font>", um Kontakte mit einem neuen oder bestehenden Google-Konto zu synchronisieren,"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen, "\n</li>\n"        "<li><font fgcolor="#ffffffff"><b>"Kontakte importieren"</b></font>", um Kontakte von Ihrer SIM-Karte hinzuzufügen."\n</li></string>
+    <string name="noContactsHelpText">"Es sind keine Kontakte vorhanden."\n\n"Drücken Sie zum Hinzufügen von Kontakten die "<font fgcolor="#ffffffff"><b>"Menütaste"</b></font>" und wählen Sie Folgendes aus:"\n\n" "<li><font fgcolor="#ffffffff"><b></b>"Neuer Kontakt"</font>\n", um einen neuen Kontakt zu erstellen"</li>\n<li>" "<font fgcolor="#ffffffff"><b></b></font>"Kontakte importieren"\n</li>", um Kontakte von Ihrer SIM-Karte hinzuzufügen"</string>
+    <string name="noContactsHelpTextWithSync">"Sie haben keine Kontakte."\n\n"Drücken Sie zum Hinzufügen die "<font fgcolor="#ffffffff"><b>"Menütaste"</b></font>" und wählen Sie"\n\n<li><font fgcolor="#ffffffff"><b>"Synchronisierungsgruppen bearbeiten"</b></font>", um Kontakte mit einem neuen oder bestehenden Google-Konto zu synchronisieren,"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen, "\n</li>\n<li><font fgcolor="#ffffffff"><b>"Kontakte importieren"</b></font>", um Kontakte von Ihrer SIM-Karte hinzuzufügen."\n</li></string>
     <string name="seclectSyncGroups_title">"Zu synchronisierende Gruppen auswählen"</string>
     <string name="liveFolder_all_label">"Alle Kontakte"</string>
     <string name="liveFolder_favorites_label">"Markiert"</string>
-    <string name="liveFolder_phones_label">"Telefone"</string>
+    <string name="liveFolder_phones_label">"Nummern"</string>
     <string name="dialer_useDtmfDialpad">"Telefontastatur verwenden"</string>
-    <string name="dialer_returnToInCallScreen">"Zurück zum Anruf läuft"</string>
+    <string name="dialer_returnToInCallScreen">"Zurück zum aktuellen Anruf"</string>
     <string name="dialer_addAnotherCall">"Anruf hinzufügen"</string>
     <string name="callDetailTitle">"Anrufdetails"</string>
     <string name="toast_call_detail_error">"Details für den angeforderten Anruf konnten nicht gelesen werden."</string>
@@ -155,11 +160,11 @@
     <string name="add_more_items">"Weitere Elemente hinzufügen"</string>
     <string name="actionCall">"<xliff:g id="TYPE">%s</xliff:g> anrufen"</string>
     <string name="actionEmail">"E-Mail an <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionText">"Text an <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Textnachricht an <xliff:g id="TYPE">%s</xliff:g>"</string>
     <string name="actionChat">"Chat mit <xliff:g id="TYPE">%s</xliff:g>"</string>
     <string name="actionMap">"<xliff:g id="TYPE">%s</xliff:g>-Adresse anzeigen"</string>
     <string name="actionIncomingCall">"Eingehende Anrufe"</string>
-    <string name="detailIncomingCallsGoToVoicemail">"Wird direkt an Voicemail weitergeleitet"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"Wird direkt an Mailbox weitergeleitet"</string>
     <string name="detailsRingtone">"Eingestellt auf <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"Rückruf"</string>
     <string name="callAgain">"Erneut anrufen"</string>
@@ -168,4 +173,55 @@
     <string name="favoritesFrquentSeparator">"Häufig angerufen"</string>
     <string name="add_contact_dlg_title">"Kontakt hinzufügen"</string>
     <string name="add_contact_dlg_message_fmt">"\"<xliff:g id="EMAIL">%s</xliff:g>\" zu den Kontakten hinzufügen?"</string>
+    <string name="description_image_button_one">"eins"</string>
+    <string name="description_image_button_two">"zwei"</string>
+    <string name="description_image_button_three">"drei"</string>
+    <string name="description_image_button_four">"vier"</string>
+    <string name="description_image_button_five">"fünf"</string>
+    <string name="description_image_button_six">"sechs"</string>
+    <string name="description_image_button_seven">"sieben"</string>
+    <string name="description_image_button_eight">"acht"</string>
+    <string name="description_image_button_nine">"neun"</string>
+    <string name="description_image_button_star">"Markierung"</string>
+    <string name="description_image_button_zero">"null"</string>
+    <string name="description_image_button_pound">"Pfund"</string>
+    <string name="no_sdcard_title">"Keine SD-Karte"</string>
+    <string name="no_sdcard_message">"Keine SD-Karte gefunden"</string>
+    <string name="searching_vcard_title">"VCard wird gesucht."</string>
+    <string name="select_import_type_title">"Aus welcher Quelle möchten Sie Kontakte importieren?"</string>
+    <string name="import_from_sim">"SIM-Karte"</string>
+    <string name="import_from_sdcard">"SD-Karte"</string>
+    <string name="import_all_vcard_string">"Alle VCard-Dateien importieren"</string>
+    <string name="import_one_vcard_string">"Eine VCard-Datei importieren"</string>
+    <string name="searching_vcard_message">"VCard-Daten werden auf VCard gesucht."</string>
+    <string name="scanning_sdcard_failed_title">"Fehler beim Lesen der SD-Karte"</string>
+    <string name="scanning_sdcard_failed_message">"Fehler beim Lesen der SD-Karte"</string>
+    <string name="fail_reason_io_error">"E/A-Fehler"</string>
+    <string name="fail_reason_vcard_parse_error">"Fehler beim Parsen der VCard"</string>
+    <string name="fail_reason_no_vcard_file">"Keine VCard-Datei auf SD-Karte gefunden"</string>
+    <string name="fail_reason_no_vcard_entry">"Es wurde kein gültiger VCard-Eintrag für Ihre Auswahl gefunden."</string>
+    <string name="select_vcard_title">"VCard-Datei auswählen"</string>
+    <string name="select_vcard_message">"Wählen Sie eine VCard-Datei für den Import aus."</string>
+    <string name="reading_vcard_title">"VCard wird gelesen."</string>
+    <string name="reading_vcard_message">"VCard-Dateien werden gelesen."</string>
+    <string name="importing_vcard_message">"VCard-Daten werden importiert."</string>
+    <string name="reading_vcard_failed_title">"Fehler beim Lesen der VCard-Daten"</string>
+    <string name="reading_vcard_failed_message">"VCard-Daten konnten nicht gelesen werden."\n"Grund für den Fehler: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> von <xliff:g id="TOTAL_NUMBER">%s</xliff:g> Kontakten"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> von <xliff:g id="TOTAL_NUMBER">%s</xliff:g> Dateien"</string>
+    <string name="export_contact_list">"Kontakte exportieren"</string>
+    <string name="confirm_export_title">"Bestätigung des Exports"</string>
+    <string name="confirm_export_message">"Soll Ihre Kontaktliste in \"<xliff:g id="VCARD_FILENAME">%s</xliff:g>\" exportiert werden?"</string>
+    <string name="exporting_contact_failed_title">"Fehler beim Exportieren der Kontaktdaten"</string>
+    <string name="exporting_contact_failed_message">"Kontaktdaten konnten nicht exportiert werden."\n"Grund für den Fehler: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_too_many_vcard">"Zu viele VCard-Daten auf der SD-Karte"</string>
+    <string name="fail_reason_cannot_open_destination_dir">"Zielverzeichnis \"<xliff:g id="DIR_NAME">%s</xliff:g>\" kann nicht geöffnet oder erstellt werden."</string>
+    <string name="exporting_contact_list_title">"Kontaktdaten werden exportiert."</string>
+    <string name="exporting_contact_list_message">"Kontaktdaten werden in \"<xliff:g id="FILE_NAME">%s</xliff:g>\" exportiert."</string>
+    <string name="fail_reason_could_not_initialize_exporter">"Exportprogramm konnte nicht initialisiert werden: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_error_occurred_during_export">"Fehler beim Exportieren: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_could_not_open_file">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" konnte nicht geöffnet werden: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_progress">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> von <xliff:g id="TOTAL_NUMBER">%s</xliff:g> Kontakten"</string>
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
new file mode 100644
index 0000000..d65da34
--- /dev/null
+++ b/res/values-el/strings.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<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="launcherDialer">"Πρόγραμμα κλήσης"</string>
+    <string name="shortcutContact">"Επαφή"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
+    <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_search">"Αναζήτηση"</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">"Αποστολή SMS/MMS"</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="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>
+    <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">"Ανταλλαγή άμεσων μηνυμάτων (IM)"</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="starredInAndroid">"Με αστέρι στο Android"</string>
+    <string name="contactCreatedToast">"Η επαφή δημιουργήθηκε."</string>
+    <string name="contactSavedToast">"Η επαφή αποθηκεύτηκε."</string>
+    <string name="listSeparatorCallNumber">"Αριθμός κλήσης"</string>
+    <string name="listSeparatorCallNumber_edit">"Αριθμοί τηλεφώνου"</string>
+    <string name="listSeparatorSendSmsMms">"Αποστολή SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου"</string>
+    <string name="listSeparatorSendEmail_edit">"Διευθύνσεις ηλεκτρονικού ταχυδρομείου"</string>
+    <string name="listSeparatorSendIm">"Αποστολή άμεσου μηνύματος"</string>
+    <string name="listSeparatorSendIm_edit">"Διευθύνσεις συζήτησης"</string>
+    <string name="listSeparatorMapAddress">"Διεύθυνση στον χάρτη"</string>
+    <string name="listSeparatorMapAddress_edit">"Διευθύνσεις ταχυδρομείου"</string>
+    <string name="listSeparatorOrganizations">"Εταιρείες"</string>
+    <string name="listSeparatorOtherInformation">"Άλλες πληροφορίες"</string>
+    <string name="listSeparatorOtherInformation_edit">"Άλλες επιλογές"</string>
+    <string name="listSeparatorMore_edit">"Περισσότερα"</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">"Αποστολή μηνύματος SMS"</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="payphone">"Καρτοτηλέφωνο"</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<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>" για να δημιουργήσετε μια νέα επαφή από την αρχή"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Εισαγωγή επαφών"</b></font>" για να προσθέσετε επαφές από την κάρτα SIM"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Δεν έχετε επαφές."\n\n"Για να προσθέσετε επαφές, πατήστε "<font fgcolor="#ffffffff"><b>"Μενού"</b></font>" και επιλέξτε:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Επεξεργασία ομάδων συγχρονισμού"</b></font>" για να προσθέσετε από έναν νέο ή υπάρχοντα λογαριασμό Google"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>" για να δημιουργήσετε μια νέα επαφή από την αρχή"\n</li>" "\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>
+    <string name="callDetailTitle">"Λεπτομέρειες κλήσης"</string>
+    <string name="toast_call_detail_error">"Δεν είναι δυνατή η ανάγνωση λεπτομερειών της κλήσης που ζητήθηκε."</string>
+    <string name="call_type">"Τύπος"</string>
+    <string name="type_incoming">"Εισερχόμενη κλήση"</string>
+    <string name="type_outgoing">"Εξερχόμενη κλήση"</string>
+    <string name="type_missed">"Αναπάντητη κλήση"</string>
+    <string name="call_time">"Ώρα"</string>
+    <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g> (<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
+    <string name="call_duration">"Διάρκεια"</string>
+    <string name="header_actions">"Ενέργειες"</string>
+    <string name="ringtone_spinner">"Ήχος κλήσης: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
+    <string name="add_more_items">"Προσθήκη περισσότερων στοιχείων"</string>
+    <string name="actionCall">"Κλήση <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionEmail">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου προς <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Αποστολή μηνύματος κειμένου προς <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"Συζήτηση μέσω <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionMap">"Προβολή διεύθυνσης <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionIncomingCall">"Εισερχόμενες κλήσεις"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"Θα σταλεί απευθείας στον αυτόματο τηλεφωνητή"</string>
+    <string name="detailsRingtone">"Ορισμός σε <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
+    <string name="callBack">"Επανάκληση"</string>
+    <string name="callAgain">"Επανάληψη κλήσης"</string>
+    <string name="returnCall">"Επιστροφή κλήσης"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> λεπτά <xliff:g id="SECONDS">%s</xliff:g> δευτερόλεπτα"</string>
+    <string name="favoritesFrquentSeparator">"Συχνές κλήσεις"</string>
+    <string name="add_contact_dlg_title">"Προσθήκη επαφής"</string>
+    <string name="add_contact_dlg_message_fmt">"Προσθήκη του \"<xliff:g id="EMAIL">%s</xliff:g>\" στις επαφές;"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"Δεν υπάρχει κάρτα SD"</string>
+    <string name="no_sdcard_message">"Δεν ανιχνεύθηκε κάρτα SD"</string>
+    <string name="searching_vcard_title">"Αναζήτηση VCard"</string>
+    <string name="select_import_type_title">"Από πού θέλετε να εισάγετε επαφές;"</string>
+    <string name="import_from_sim">"Κάρτα SIM"</string>
+    <string name="import_from_sdcard">"Κάρτα SD"</string>
+    <string name="import_all_vcard_string">"Εισαγωγή όλων των αρχείων VCard"</string>
+    <string name="import_one_vcard_string">"Εισαγωγή ενός αρχείου VCard"</string>
+    <string name="searching_vcard_message">"Αναζήτηση δεδομένων VCard στην κάρτα SD"</string>
+    <string name="scanning_sdcard_failed_title">"Η σάρωση της κάρτας SD απέτυχε"</string>
+    <string name="scanning_sdcard_failed_message">"Η σάρωση της κάρτας SD απέτυχε"</string>
+    <string name="fail_reason_io_error">"Σφάλμα I/O"</string>
+    <string name="fail_reason_vcard_parse_error">"Η ανάλυση του VCard απέτυχε"</string>
+    <string name="fail_reason_no_vcard_file">"Δεν βρέθηκε αρχείο VCard στην κάρτα SD"</string>
+    <string name="fail_reason_no_vcard_entry">"Δεν βρέθηκε έγκυρη καταχώρηση VCard για την επιλογή σας"</string>
+    <string name="select_vcard_title">"Επιλογή αρχείου VCard"</string>
+    <string name="select_vcard_message">"Επιλέξτε ένα αρχείο VCard για εισαγωγή"</string>
+    <string name="reading_vcard_title">"Ανάγνωση VCard"</string>
+    <string name="reading_vcard_message">"Ανάγνωση αρχείου (ων) VCard"</string>
+    <string name="importing_vcard_message">"Εισαγωγή δεδομένων VCard"</string>
+    <string name="reading_vcard_failed_title">"Η ανάγνωση των δεδομένων VCard απέτυχε"</string>
+    <string name="reading_vcard_failed_message">"Δεν ήταν δυνατή η ανάγνωση των δεδομένων VCard"\n"Αιτία αποτυχίας: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> από <xliff:g id="TOTAL_NUMBER">%s</xliff:g> επαφές"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> από <xliff:g id="TOTAL_NUMBER">%s</xliff:g> αρχεία"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..eb8c03e
--- /dev/null
+++ b/res/values-es-rUS/strings.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Contactos"</string>
+    <string name="launcherDialer">"Marcador"</string>
+    <string name="shortcutContact">"Contacto"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
+    <string name="starredList">"Marcado con asterisco"</string>
+    <string name="frequentList">"Frecuente"</string>
+    <string name="strequentList">"Favoritos"</string>
+    <string name="viewContactTitle">"Detalles de contacto"</string>
+    <string name="viewContactDesription">"Ver contacto"</string>
+    <string name="editContactDescription">"Editar contacto"</string>
+    <string name="insertContactDescription">"Crear contacto"</string>
+    <string name="searchHint">"Buscar contactos"</string>
+    <string name="menu_search">"Buscar"</string>
+    <string name="menu_newContact">"Nuevo contacto"</string>
+    <string name="menu_viewContact">"Ver contacto"</string>
+    <string name="menu_callNumber">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Agregar a favoritos"</string>
+    <string name="menu_removeStar">"Eliminar de favoritos"</string>
+    <string name="menu_showBarcode">"Mostrar código de barras"</string>
+    <string name="menu_editContact">"Editar contacto"</string>
+    <string name="menu_deleteContact">"Suprimir contacto"</string>
+    <string name="menu_call">"Llamar a"</string>
+    <string name="menu_sendSMS">"Enviar SMS//MMS"</string>
+    <string name="menu_sendEmail">"Enviar correo electrónico"</string>
+    <string name="menu_viewAddress">"Dirección del mapa"</string>
+    <string name="menu_makeDefaultNumber">"Crear número predeterminado"</string>
+    <string name="deleteConfirmation_title">"Suprimir"</string>
+    <string name="deleteConfirmation">"Este contacto se suprimirá."</string>
+    <string name="menu_done">"Finalizado"</string>
+    <string name="menu_doNotSave">"Revertir"</string>
+    <string name="editContact_title_edit">"Editar contacto"</string>
+    <string name="editContact_title_insert">"Nuevo contacto"</string>
+    <string name="menu_addItem">"Más información"</string>
+    <string name="label_phonetic_name">"Fonético"</string>
+    <string name="label_notes">"Notas"</string>
+    <string name="label_ringtone">"Tono de llamada"</string>
+    <string name="ghostData_name">"Primero y último"</string>
+    <string name="ghostData_phonetic_name">"Nombre fonético"</string>
+    <string name="ghostData_company">"Empresa"</string>
+    <string name="ghostData_title">"Posición"</string>
+    <string name="ghostData_im">"Nombre de MI"</string>
+    <string name="ghostData_notes">"Mi nota"</string>
+    <string name="ghostData_phone">"Número de teléfono"</string>
+    <string name="ghostData_email">"Dirección de correo electrónico"</string>
+    <string name="ghostData_postal">"Dirección postal"</string>
+    <string name="invalidContactMessage">"El contacto no existe."</string>
+    <string name="pickerNewContactHeader">"Crear nuevo contacto"</string>
+    <string name="selectLabel">"Seleccionar etiqueta"</string>
+    <string name="phoneLabelsGroup">"Teléfono"</string>
+    <string name="emailLabelsGroup">"Correo electrónico"</string>
+    <string name="imLabelsGroup">"Mensajería instantánea"</string>
+    <string name="postalLabelsGroup">"Dirección postal"</string>
+    <string name="otherLabelsGroup">"Otros"</string>
+  <string-array name="otherLabels">
+    <item>"Organización"</item>
+    <item>"Nota"</item>
+  </string-array>
+    <string name="errorDialogTitle">"No hay imágenes"</string>
+    <string name="photoPickerNotFoundText">"No hay imágenes disponibles en el teléfono."</string>
+    <string name="attachToContact">"Ícono de contacto"</string>
+    <string name="customLabelPickerTitle">"Nombre personalizado de etiqueta"</string>
+    <string name="menu_displayGroup">"Mostrar grupo"</string>
+    <string name="syncGroupPreference">"Editar grupos sincronizados"</string>
+    <string name="importFromSim">"Importar contactos"</string>
+    <string name="send_to_voicemail_checkbox">"Enviar llamadas directamente al correo de voz"</string>
+    <string name="send_to_voicemail_view">"Las llamadas se envían directamente a un correo de voz."</string>
+    <string name="default_ringtone">"Predeterminado"</string>
+    <string name="addPicture">"Agregar ícono"</string>
+    <string name="removePicture">"Eliminar ícono"</string>
+    <string name="noContacts">"No hay contactos."</string>
+    <string name="noContactsWithPhoneNumbers">"No hay contactos con números de teléfono."</string>
+    <string name="noFavorites">"No hay favoritos."</string>
+    <string name="select_group_title">"Grupos"</string>
+    <string name="groupEmpty">"Tu grupo \"<xliff:g id="GROUPNAME">%s</xliff:g>\" está vacío."</string>
+    <string name="showAllGroups">"Todos los contactos"</string>
+    <string name="syncAllGroups">"Sincronizar todos los contactos"</string>
+    <string name="groupNameMyContacts">"Mis contactos"</string>
+    <string name="groupNameWithPhones">"Contactos con números de teléfono"</string>
+    <string name="starredInAndroid">"Marcado con asterisco en Android"</string>
+    <string name="contactCreatedToast">"Contacto creado."</string>
+    <string name="contactSavedToast">"Contacto guardado."</string>
+    <string name="listSeparatorCallNumber">"Marcar número"</string>
+    <string name="listSeparatorCallNumber_edit">"Números de teléfono"</string>
+    <string name="listSeparatorSendSmsMms">"Enviar SMS//MMS"</string>
+    <string name="listSeparatorSendEmail">"Enviar correo electrónico"</string>
+    <string name="listSeparatorSendEmail_edit">"Direcciones de correo electrónico"</string>
+    <string name="listSeparatorSendIm">"Enviar mensaje instantáneo"</string>
+    <string name="listSeparatorSendIm_edit">"Direcciones de chat"</string>
+    <string name="listSeparatorMapAddress">"Dirección del mapa"</string>
+    <string name="listSeparatorMapAddress_edit">"Direcciones postales"</string>
+    <string name="listSeparatorOrganizations">"Organizaciones"</string>
+    <string name="listSeparatorOtherInformation">"Otra información"</string>
+    <string name="listSeparatorOtherInformation_edit">"Otras opciones"</string>
+    <string name="listSeparatorMore_edit">"Más"</string>
+    <string name="contactsIconLabel">"Contactos"</string>
+    <string name="contactsFavoritesLabel">"Favoritos"</string>
+    <string name="dialerIconLabel">"Marcador"</string>
+    <string name="recentCallsIconLabel">"Registro de llamadas"</string>
+    <string name="liveFolderAll">"Todos los contactos"</string>
+    <string name="liveFolderFavorites">"Contactos marcados con asterisco"</string>
+    <string name="liveFolderPhone">"Contactos con números de teléfono"</string>
+    <string name="menu_sendTextMessage">"Enviar mensaje SMS"</string>
+    <string name="recentCalls_callNumber">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Editar número antes de llamar"</string>
+    <string name="recentCalls_addToContact">"Agregar a contactos"</string>
+    <string name="recentCalls_removeFromRecentList">"Eliminar del registro de llamadas"</string>
+    <string name="recentCalls_deleteAll">"Borrar registro de llamadas"</string>
+    <string name="recentCalls_empty">"El registro de llamadas está vacío."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Correo de voz"</string>
+    <string name="unknown">"Desconocido"</string>
+    <string name="private_num">"Número privado"</string>
+    <string name="payphone">"Teléfono público"</string>
+    <string name="dialerKeyboardHintText">"Utilizar teclado para marcar"</string>
+    <string name="dialerDialpadHintText">"Marcar para agregar una llamada"</string>
+    <string name="simContacts_emptyLoading">"Cargando desde tarjeta SIM..."</string>
+    <string name="simContacts_title">"Contactos de tarjeta SIM"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"¡Sincroniza tus contactos de Google!"</font>" "\n" Luego de sincronizar tu teléfono, tus contactos estarán disponibles para ti dondequiera que vayas."</string>
+    <string name="noContactsHelpText">"No tienes ningún contacto."\n\n"Para agregar contactos, presiona "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" y selecciona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Nuevo contacto"</b></font>" para crear un contacto nuevo desde cero"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para agregar contactos desde tu tarjeta SIM"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"No tienes ningún contacto."\n\n"Para agregar contactos, presiona "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" y selecciona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Editar grupos sincronizados"</b></font>" para agregar desde una cuenta de Google nueva o existente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuevo contacto"</b></font>" para crear un contacto nuevo desde cero"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para agregar contactos desde tu tarjeta SIM"\n</li></string>
+    <string name="seclectSyncGroups_title">"Seleccionar grupos para sincronizar"</string>
+    <string name="liveFolder_all_label">"Todos los contactos"</string>
+    <string name="liveFolder_favorites_label">"Marcado con asterisco"</string>
+    <string name="liveFolder_phones_label">"Teléfonos"</string>
+    <string name="dialer_useDtmfDialpad">"Usar teclado de tonos del teléfono"</string>
+    <string name="dialer_returnToInCallScreen">"Regresar a la llamada en curso"</string>
+    <string name="dialer_addAnotherCall">"Agregar llamada"</string>
+    <string name="callDetailTitle">"Detalles de llamada"</string>
+    <string name="toast_call_detail_error">"No se han podido leer los detalles de la llamada solicitada."</string>
+    <string name="call_type">"Tipo"</string>
+    <string name="type_incoming">"Llamada entrante"</string>
+    <string name="type_outgoing">"Llamada saliente"</string>
+    <string name="type_missed">"Llamada perdida"</string>
+    <string name="call_time">"Hora"</string>
+    <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g> (<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
+    <string name="call_duration">"Duración"</string>
+    <string name="header_actions">"Acciones"</string>
+    <string name="ringtone_spinner">"Tono de llamada: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
+    <string name="add_more_items">"Agregar más elementos"</string>
+    <string name="actionCall">"Llamar a <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionEmail">"Correo electrónico <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Texto <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"Chat mediante <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionMap">"Ver <xliff:g id="TYPE">%s</xliff:g> dirección"</string>
+    <string name="actionIncomingCall">"Llamadas entrantes"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"Se enviará directamente al correo de voz"</string>
+    <string name="detailsRingtone">"Configurado en <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
+    <string name="callBack">"Volver a llamar"</string>
+    <string name="callAgain">"Llamar nuevamente"</string>
+    <string name="returnCall">"Regresar llamada"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> mins <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="favoritesFrquentSeparator">"Llamado con frecuencia"</string>
+    <string name="add_contact_dlg_title">"Agregar contacto"</string>
+    <string name="add_contact_dlg_message_fmt">"¿Deseas agregar \"<xliff:g id="EMAIL">%s</xliff:g>\" a los contactos?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"No hay tarjeta SD"</string>
+    <string name="no_sdcard_message">"No se ha detectado ninguna tarjeta SD"</string>
+    <string name="searching_vcard_title">"Buscando VCard"</string>
+    <string name="select_import_type_title">"¿De dónde quieres importar contactos?"</string>
+    <string name="import_from_sim">"Tarjeta SIM"</string>
+    <string name="import_from_sdcard">"Tarjeta SD"</string>
+    <string name="import_all_vcard_string">"Importar todos los archivos de VCard"</string>
+    <string name="import_one_vcard_string">"Importar un archivo de VCard"</string>
+    <string name="searching_vcard_message">"Buscando datos VCard en VCard"</string>
+    <string name="scanning_sdcard_failed_title">"No se ha podido explorar la Tarjeta SD"</string>
+    <string name="scanning_sdcard_failed_message">"No se ha podido explorar la Tarjeta SD"</string>
+    <string name="fail_reason_io_error">"Error de E/S"</string>
+    <string name="fail_reason_vcard_parse_error">"No se ha podido analizar VCard"</string>
+    <string name="fail_reason_no_vcard_file">"No se ha encontrado un archivo de VCard en la Tarjeta SD"</string>
+    <string name="fail_reason_no_vcard_entry">"No se ha encontrado ninguna entrada válida de VCard para tu selección"</string>
+    <string name="select_vcard_title">"Seleccionar archivo de VCard"</string>
+    <string name="select_vcard_message">"Seleccionar un archivo de VCard para importar"</string>
+    <string name="reading_vcard_title">"Leyendo VCard"</string>
+    <string name="reading_vcard_message">"Leyendo archivo(s) de VCard"</string>
+    <string name="importing_vcard_message">"Importando datos VCard"</string>
+    <string name="reading_vcard_failed_title">"No se han podido leer los datos VCard"</string>
+    <string name="reading_vcard_failed_message">"No se han podido leer los datos VCard"\n"Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> archivos"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
+</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index d779093..5c5b7d4 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -18,6 +18,11 @@
     <string name="contactsList">"Contactos"</string>
     <string name="launcherDialer">"Llamadas"</string>
     <string name="shortcutContact">"Contacto"</string>
+    <string name="shortcutDialContact">"Llamada directa"</string>
+    <string name="shortcutMessageContact">"Mensaje directo"</string>
+    <string name="shortcutActivityTitle">"Elegir un acceso directo para el contacto"</string>
+    <string name="callShortcutActivityTitle">"Elegir un número para la llamada"</string>
+    <string name="messageShortcutActivityTitle">"Elegir un número para el mensaje"</string>
     <string name="starredList">"Destacados"</string>
     <string name="frequentList">"Frecuentes"</string>
     <string name="strequentList">"Favoritos"</string>
@@ -128,17 +133,17 @@
     <string name="private_num">"Número privado"</string>
     <string name="payphone">"Teléfono público"</string>
     <string name="dialerKeyboardHintText">"Utilizar teclado para marcar"</string>
-    <string name="dialerDialpadHintText">"Marcar para añadir una llamada"</string>
+    <string name="dialerDialpadHintText">"Añadir llamada"</string>
     <string name="simContacts_emptyLoading">"Cargando desde tarjeta SIM…"</string>
     <string name="simContacts_title">"Contactos de tarjeta SIM"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Sincroniza tus contactos de Google"</font>" "\n"Después de sincronizarlos con tu teléfono, podrás acceder a tus contactos desde cualquier lugar."</string>
-    <string name="noContactsHelpText">"No tienes ningún contacto."\n\n"Si quieres añadir alguno, pulsa la tecla de menú"<font fgcolor="#ffffffff"><b></b></font>" y selecciona:"\n\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para añadir un contacto manualmente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para añadirlos desde tu tarjeta SIM"\n</li></string>
-    <string name="noContactsHelpTextWithSync">"No tienes ningún contacto."\n\n"Si quieres añadir alguno, pulsa la tecla de menú"<font fgcolor="#ffffffff"><b></b></font>" y selecciona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Editar grupos de sincronización"</b></font>" para añadirlos desde una cuenta de Google nueva o ya existente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuevo contacto"</b></font>" para añadir un contacto manualmente"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para añadirlos desde la tarjeta SIM"\n</li></string>
+    <string name="noContactsHelpText">"No tienes ningún contacto."\n\n"Si quieres añadir alguno, pulsa la tecla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" y selecciona:"\n\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para añadir un contacto manualmente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para añadirlos desde tu tarjeta SIM"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"No tienes ningún contacto."\n\n"Si quieres añadir alguno, pulsa la tecla de menú"<font fgcolor="#ffffffff"><b></b></font>" y selecciona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Editar grupos de sincronización"</b></font>" para añadirlos desde una cuenta de Google nueva o ya existente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para añadir un contacto manualmente"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para añadirlos desde la tarjeta SIM"\n</li></string>
     <string name="seclectSyncGroups_title">"Seleccionar grupos para la sincronización"</string>
     <string name="liveFolder_all_label">"Todos los contactos"</string>
     <string name="liveFolder_favorites_label">"Destacados"</string>
     <string name="liveFolder_phones_label">"Teléfonos"</string>
-    <string name="dialer_useDtmfDialpad">"Usar el teclado de tonos"</string>
+    <string name="dialer_useDtmfDialpad">"Usar teclado táctil"</string>
     <string name="dialer_returnToInCallScreen">"Volver a la llamada en curso"</string>
     <string name="dialer_addAnotherCall">"Añadir llamada"</string>
     <string name="callDetailTitle">"Detalles de la llamada"</string>
@@ -168,4 +173,55 @@
     <string name="favoritesFrquentSeparator">"Más llamados"</string>
     <string name="add_contact_dlg_title">"Añadir contacto"</string>
     <string name="add_contact_dlg_message_fmt">"¿Deseas añadir \"<xliff:g id="EMAIL">%s</xliff:g>\" a Contactos?"</string>
+    <string name="description_image_button_one">"uno"</string>
+    <string name="description_image_button_two">"dos"</string>
+    <string name="description_image_button_three">"tres"</string>
+    <string name="description_image_button_four">"cuatro"</string>
+    <string name="description_image_button_five">"cinco"</string>
+    <string name="description_image_button_six">"seis"</string>
+    <string name="description_image_button_seven">"siete"</string>
+    <string name="description_image_button_eight">"ocho"</string>
+    <string name="description_image_button_nine">"nueve"</string>
+    <string name="description_image_button_star">"estrella"</string>
+    <string name="description_image_button_zero">"cero"</string>
+    <string name="description_image_button_pound">"libra"</string>
+    <string name="no_sdcard_title">"Falta la tarjeta SD"</string>
+    <string name="no_sdcard_message">"No se ha detectado ninguna tarjeta SD."</string>
+    <string name="searching_vcard_title">"Buscando vCard"</string>
+    <string name="select_import_type_title">"¿De dónde quieres importar contactos?"</string>
+    <string name="import_from_sim">"Tarjeta SIM"</string>
+    <string name="import_from_sdcard">"Tarjeta SD"</string>
+    <string name="import_all_vcard_string">"Importar todos los archivos de vCard"</string>
+    <string name="import_one_vcard_string">"Importar un archivo de vCard"</string>
+    <string name="searching_vcard_message">"Buscando datos de vCard en vCard..."</string>
+    <string name="scanning_sdcard_failed_title">"Error al buscar en tarjeta SD"</string>
+    <string name="scanning_sdcard_failed_message">"Error al buscar en tarjeta SD"</string>
+    <string name="fail_reason_io_error">"Error de E/S"</string>
+    <string name="fail_reason_vcard_parse_error">"Error al analizar vCard"</string>
+    <string name="fail_reason_no_vcard_file">"No se ha encontrado ningún archivo de vCard en la tarjeta SD."</string>
+    <string name="fail_reason_no_vcard_entry">"No se ha encontrado ninguna entrada de vCard válida para la selección realizada."</string>
+    <string name="select_vcard_title">"Seleccionar archivo de vCard"</string>
+    <string name="select_vcard_message">"Selecciona un archivo de vCard para la operación de importación."</string>
+    <string name="reading_vcard_title">"Leyendo vCard"</string>
+    <string name="reading_vcard_message">"Leyendo archivos de vCard..."</string>
+    <string name="importing_vcard_message">"Importando datos de vCard..."</string>
+    <string name="reading_vcard_failed_title">"Error al leer datos de vCard"</string>
+    <string name="reading_vcard_failed_message">"No ha sido posible leer los datos de vCard."\n"Motivo del error: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> archivos"</string>
+    <string name="export_contact_list">"Exportar contactos"</string>
+    <string name="confirm_export_title">"Confirmación de exportación"</string>
+    <string name="confirm_export_message">"¿Confirmas que deseas exportar tu lista de contactos a \"<xliff:g id="VCARD_FILENAME">%s</xliff:g>\"?"</string>
+    <string name="exporting_contact_failed_title">"Error al exportar datos de contacto"</string>
+    <string name="exporting_contact_failed_message">"Se ha producido un error al exportar los datos del contacto."\n"Motivo del error: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_too_many_vcard">"Hay demasiados datos de vCard en la tarjeta SD."</string>
+    <string name="fail_reason_cannot_open_destination_dir">"No se puede abrir o crear el directorio de destino \"<xliff:g id="DIR_NAME">%s</xliff:g>\"."</string>
+    <string name="exporting_contact_list_title">"Exportando datos de contacto"</string>
+    <string name="exporting_contact_list_message">"Exportando datos de contacto a \"<xliff:g id="FILE_NAME">%s</xliff:g>\"..."</string>
+    <string name="fail_reason_could_not_initialize_exporter">"No se ha podido inicializar el exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_error_occurred_during_export">"Se ha producido un error durante la exportación: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_could_not_open_file">"No se ha podido abrir el archivo \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_progress">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 97a122c..e12c751 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -18,6 +18,11 @@
     <string name="contactsList">"Contacts"</string>
     <string name="launcherDialer">"Appeler"</string>
     <string name="shortcutContact">"Contact"</string>
+    <string name="shortcutDialContact">"Raccourci appel"</string>
+    <string name="shortcutMessageContact">"Raccourci message"</string>
+    <string name="shortcutActivityTitle">"Choisissez un contact pour le raccourci"</string>
+    <string name="callShortcutActivityTitle">"Choisissez le numéro à appeler"</string>
+    <string name="messageShortcutActivityTitle">"Choisissez le numéro auquel envoyer le message"</string>
     <string name="starredList">"Marqués d\'une étoile"</string>
     <string name="frequentList">"Contacts fréquents"</string>
     <string name="strequentList">"Favoris"</string>
@@ -43,7 +48,7 @@
     <string name="deleteConfirmation_title">"Supprimer"</string>
     <string name="deleteConfirmation">"Ce contact sera supprimé."</string>
     <string name="menu_done">"OK"</string>
-    <string name="menu_doNotSave">"Rétablir"</string>
+    <string name="menu_doNotSave">"Annuler"</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>
@@ -53,7 +58,7 @@
     <string name="ghostData_name">"Nom et prénom"</string>
     <string name="ghostData_phonetic_name">"Nom phonétique"</string>
     <string name="ghostData_company">"Société"</string>
-    <string name="ghostData_title">"Position"</string>
+    <string name="ghostData_title">"Poste"</string>
     <string name="ghostData_im">"Nom du compte"</string>
     <string name="ghostData_notes">"Mon commentaire"</string>
     <string name="ghostData_phone">"Numéro téléphone"</string>
@@ -78,8 +83,8 @@
     <string name="menu_displayGroup">"Afficher les groupes"</string>
     <string name="syncGroupPreference">"Param. sync. groupes"</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="send_to_voicemail_checkbox">"Renvoyer les appels directement vers la messagerie vocale."</string>
+    <string name="send_to_voicemail_view">"Les appels sont renvoyés directement vers la messagerie 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>
@@ -119,21 +124,21 @@
     <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 de la liste des appels"</string>
+    <string name="recentCalls_removeFromRecentList">"Supprimer du journal d\'appels"</string>
     <string name="recentCalls_deleteAll">"Effacer tous les appels"</string>
     <string name="recentCalls_empty">"Aucun appel."</string>
-    <string name="imei">"IMEI"</string>
-    <string name="voicemail">"Boîte vocale"</string>
+    <string name="imei">"Code IMEI"</string>
+    <string name="voicemail">"Messagerie vocale"</string>
     <string name="unknown">"Inconnu"</string>
     <string name="private_num">"Numéro privée"</string>
     <string name="payphone">"Cabine téléphonique"</string>
     <string name="dialerKeyboardHintText">"Utilisez le clavier pour composer le numéro"</string>
-    <string name="dialerDialpadHintText">"Composer le numéro pour ajouter un appel"</string>
+    <string name="dialerDialpadHintText">"Composer"</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"Vos contacts seront disponibles, où que vous soyez, dès que vous aurez synchronisé votre téléphone."</string>
-    <string name="noContactsHelpText">"Vous n\'avez aucun contact."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" et sélectionnez :"\n\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un contact de toutes pièces ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer des contacts"</b></font>" pour ajouter des contacts à partir de votre carte SIM."\n</li></string>
-    <string name="noContactsHelpTextWithSync">"Vous n\'avez aucun contact."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" et sélectionnez :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Param. sync. groupes"</b></font>" pour ajouter un contact à partir d\'un nouveau compte Google ou d\'un compte existant ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un contact de toutes pièces ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer des contacts"</b></font>" pour ajouter des contacts à partir de votre carte SIM."\n</li></string>
+    <string name="noContactsHelpText">"Vous n\'avez aucun contact."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" et sélectionnez :"\n\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer des contacts"</b></font>" pour ajouter des contacts à partir de votre carte SIM."\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Vous n\'avez aucun contact."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" et sélectionnez :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Param. sync. groupes"</b></font>" pour ajouter un contact à partir d\'un nouveau compte Google ou d\'un compte existant ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer des contacts"</b></font>" pour ajouter des contacts à partir 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>
@@ -155,8 +160,8 @@
     <string name="add_more_items">"Ajouter d\'autres éléments"</string>
     <string name="actionCall">"Appeler <xliff:g id="TYPE">%s</xliff:g>"</string>
     <string name="actionEmail">"Envoyer un e-mail à <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionText">"Envoyer un SMS à <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionChat">"Chatter à l\'aide de <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Envoyer un SMS (<xliff:g id="TYPE">%s</xliff:g>)"</string>
+    <string name="actionChat">"Chatter via <xliff:g id="TYPE">%s</xliff:g>"</string>
     <string name="actionMap">"Afficher l\'adresse <xliff:g id="TYPE">%s</xliff:g>"</string>
     <string name="actionIncomingCall">"Appels entrants"</string>
     <string name="detailIncomingCallsGoToVoicemail">"Seront envoyés directement en tant que message vocal"</string>
@@ -164,8 +169,59 @@
     <string name="callBack">"Rappeler"</string>
     <string name="callAgain">"Renouveler l\'appel"</string>
     <string name="returnCall">"Rappeler"</string>
-    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> mn <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrquentSeparator">"Fréquemment appelés"</string>
     <string name="add_contact_dlg_title">"Ajouter un contact"</string>
     <string name="add_contact_dlg_message_fmt">"Ajouter \"<xliff:g id="EMAIL">%s</xliff:g>\" aux contacts ?"</string>
+    <string name="description_image_button_one">"un"</string>
+    <string name="description_image_button_two">"deux"</string>
+    <string name="description_image_button_three">"trois"</string>
+    <string name="description_image_button_four">"quatre"</string>
+    <string name="description_image_button_five">"cinq"</string>
+    <string name="description_image_button_six">"six"</string>
+    <string name="description_image_button_seven">"sept"</string>
+    <string name="description_image_button_eight">"huit"</string>
+    <string name="description_image_button_nine">"neuf"</string>
+    <string name="description_image_button_star">"étoile"</string>
+    <string name="description_image_button_zero">"zéro"</string>
+    <string name="description_image_button_pound">"dièse"</string>
+    <string name="no_sdcard_title">"Carte SD introuvable"</string>
+    <string name="no_sdcard_message">"Aucune carte SD n\'a été détectée."</string>
+    <string name="searching_vcard_title">"Recherche des données VCard"</string>
+    <string name="select_import_type_title">"À partir de quel support souhaitez-vous importer les contacts ?"</string>
+    <string name="import_from_sim">"Carte SIM"</string>
+    <string name="import_from_sdcard">"Carte SD"</string>
+    <string name="import_all_vcard_string">"Importer tous les fichiers VCard"</string>
+    <string name="import_one_vcard_string">"Importer un fichier VCard"</string>
+    <string name="searching_vcard_message">"Recherche de données VCard sur la VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Échec de l\'analyse de la carte SD"</string>
+    <string name="scanning_sdcard_failed_message">"Échec de l\'analyse de la carte SD"</string>
+    <string name="fail_reason_io_error">"Erreur d\'E/S"</string>
+    <string name="fail_reason_vcard_parse_error">"Échec de l\'analyse des données VCard"</string>
+    <string name="fail_reason_no_vcard_file">"Aucun fichier VCard n\'a été trouvé sur la carte SD."</string>
+    <string name="fail_reason_no_vcard_entry">"Aucune entrée VCard valide n\'a été trouvée pour votre sélection."</string>
+    <string name="select_vcard_title">"Sélectionner un fichier VCard"</string>
+    <string name="select_vcard_message">"Sélectionnez un fichier VCard à importer."</string>
+    <string name="reading_vcard_title">"Lecture des données VCard"</string>
+    <string name="reading_vcard_message">"Lecture des fichiers VCard"</string>
+    <string name="importing_vcard_message">"Importation des données VCard"</string>
+    <string name="reading_vcard_failed_title">"Échec de la lecture des données VCard"</string>
+    <string name="reading_vcard_failed_message">"Échec de la lecture des données VCard"\n"Cause : \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> sur <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> sur <xliff:g id="TOTAL_NUMBER">%s</xliff:g> fichiers"</string>
+    <string name="export_contact_list">"Exporter les contacts"</string>
+    <string name="confirm_export_title">"Confirmation de l\'exportation"</string>
+    <string name="confirm_export_message">"Votre liste de contacts va être exportée vers \"<xliff:g id="VCARD_FILENAME">%s</xliff:g>\". Voulez-vous continuer ?"</string>
+    <string name="exporting_contact_failed_title">"Échec de l\'exportation des données des contacts"</string>
+    <string name="exporting_contact_failed_message">"Échec de l\'exportation des données des contacts"\n"Cause : \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_too_many_vcard">"La carte SD contient trop de données VCard."</string>
+    <string name="fail_reason_cannot_open_destination_dir">"Impossible d\'ouvrir ou de créer le répertoire de destination \"<xliff:g id="DIR_NAME">%s</xliff:g>\"."</string>
+    <string name="exporting_contact_list_title">"Exportation des données des contacts"</string>
+    <string name="exporting_contact_list_message">"Exportation des données des contacts vers \"<xliff:g id="FILE_NAME">%s</xliff:g>\""</string>
+    <string name="fail_reason_could_not_initialize_exporter">"Échec de l\'initialisation du module d\'exportation : \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_error_occurred_during_export">"Une erreur s\'est produite lors de l\'exportation : \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_could_not_open_file">"Impossible d\'ouvrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\" : <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_progress">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> sur <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 611e818..9b71f35 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -18,6 +18,11 @@
     <string name="contactsList">"Contatti"</string>
     <string name="launcherDialer">"Telefono"</string>
     <string name="shortcutContact">"Contatto"</string>
+    <string name="shortcutDialContact">"Composizione diretta"</string>
+    <string name="shortcutMessageContact">"Messaggio diretto"</string>
+    <string name="shortcutActivityTitle">"Scegli una scorciatoia contatto"</string>
+    <string name="callShortcutActivityTitle">"Scegli un numero da chiamare"</string>
+    <string name="messageShortcutActivityTitle">"Scegli un numero a cui inviare il messaggio"</string>
     <string name="starredList">"Speciali"</string>
     <string name="frequentList">"Frequenti"</string>
     <string name="strequentList">"Preferiti"</string>
@@ -128,7 +133,7 @@
     <string name="private_num">"Numero privato"</string>
     <string name="payphone">"Telefono a monete"</string>
     <string name="dialerKeyboardHintText">"Usa la tastiera"</string>
-    <string name="dialerDialpadHintText">"Componi per aggiungere una chiamata"</string>
+    <string name="dialerDialpadHintText">"Componi per aggiungere 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>
@@ -168,4 +173,55 @@
     <string name="favoritesFrquentSeparator">"Numeri più chiamati"</string>
     <string name="add_contact_dlg_title">"Aggiungi contatto"</string>
     <string name="add_contact_dlg_message_fmt">"Aggiungere \"<xliff:g id="EMAIL">%s</xliff:g>\" ai contatti?"</string>
+    <string name="description_image_button_one">"uno"</string>
+    <string name="description_image_button_two">"due"</string>
+    <string name="description_image_button_three">"tre"</string>
+    <string name="description_image_button_four">"quattro"</string>
+    <string name="description_image_button_five">"cinque"</string>
+    <string name="description_image_button_six">"sei"</string>
+    <string name="description_image_button_seven">"sette"</string>
+    <string name="description_image_button_eight">"otto"</string>
+    <string name="description_image_button_nine">"nove"</string>
+    <string name="description_image_button_star">"stella"</string>
+    <string name="description_image_button_zero">"zero"</string>
+    <string name="description_image_button_pound">"sterlina"</string>
+    <string name="no_sdcard_title">"Nessuna scheda SD"</string>
+    <string name="no_sdcard_message">"Nessuna scheda SD rilevata"</string>
+    <string name="searching_vcard_title">"Ricerca VCard"</string>
+    <string name="select_import_type_title">"Da dove desideri importare i contatti?"</string>
+    <string name="import_from_sim">"Scheda SIM"</string>
+    <string name="import_from_sdcard">"Scheda SD"</string>
+    <string name="import_all_vcard_string">"Importa tutti i file VCard"</string>
+    <string name="import_one_vcard_string">"Importa un file VCard"</string>
+    <string name="searching_vcard_message">"Ricerca dati VCard su VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Analisi scheda SD non riuscita"</string>
+    <string name="scanning_sdcard_failed_message">"Analisi scheda SD non riuscita"</string>
+    <string name="fail_reason_io_error">"Errore I/O"</string>
+    <string name="fail_reason_vcard_parse_error">"Analisi VCard non riuscita"</string>
+    <string name="fail_reason_no_vcard_file">"Nessun file VCard trovato sulla scheda SD"</string>
+    <string name="fail_reason_no_vcard_entry">"Nessuna voce VCard valida trovata per la tua selezione"</string>
+    <string name="select_vcard_title">"Seleziona file VCard"</string>
+    <string name="select_vcard_message">"Seleziona un file VCard da importare"</string>
+    <string name="reading_vcard_title">"Lettura VCard"</string>
+    <string name="reading_vcard_message">"Lettura file VCard"</string>
+    <string name="importing_vcard_message">"Importazione dati VCard"</string>
+    <string name="reading_vcard_failed_title">"Lettura dati VCard non riuscita"</string>
+    <string name="reading_vcard_failed_message">"Impossibile leggere i dati VCard"\n"Motivo dell\'errore: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> contatti su <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> file su <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+    <string name="export_contact_list">"Esporta contatti"</string>
+    <string name="confirm_export_title">"Conferma dell\'esportazione"</string>
+    <string name="confirm_export_message">"Esportare l\'elenco contatti in \"<xliff:g id="VCARD_FILENAME">%s</xliff:g>\"?"</string>
+    <string name="exporting_contact_failed_title">"Esportazione dati di contatto non riuscita"</string>
+    <string name="exporting_contact_failed_message">"Impossibile esportare i dati di contatto"\n"Motivo dell\'errore: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_too_many_vcard">"Troppi dati VCard sulla scheda SD"</string>
+    <string name="fail_reason_cannot_open_destination_dir">"Impossibile aprire o creare la directory di destinazione \"<xliff:g id="DIR_NAME">%s</xliff:g>\""</string>
+    <string name="exporting_contact_list_title">"Esportazione dati di contatto"</string>
+    <string name="exporting_contact_list_message">"Esportazione dati di contatto in \"<xliff:g id="FILE_NAME">%s</xliff:g>\""</string>
+    <string name="fail_reason_could_not_initialize_exporter">"Impossibile inizializzare l\'utilità di esportazione: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_error_occurred_during_export">"Si è verificato un errore durante l\'esportazione: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_could_not_open_file">"Impossibile aprire \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_progress">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> contatti su <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index b97c9f6..6da1bd6 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -18,6 +18,16 @@
     <string name="contactsList">"連絡先"</string>
     <string name="launcherDialer">"電話"</string>
     <string name="shortcutContact">"連絡先"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
     <string name="starredList">"スター付き"</string>
     <string name="frequentList">"よく使う連絡先"</string>
     <string name="strequentList">"お気に入り"</string>
@@ -29,14 +39,14 @@
     <string name="menu_search">"検索"</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_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">"SMS/MMSを送信"</string>
+    <string name="menu_sendSMS">"SMSを送信"</string>
     <string name="menu_sendEmail">"メールを送信"</string>
     <string name="menu_viewAddress">"地図でみる"</string>
     <string name="menu_makeDefaultNumber">"メインの番号に設定する"</string>
@@ -97,7 +107,7 @@
     <string name="contactSavedToast">"連絡先を保存しました。"</string>
     <string name="listSeparatorCallNumber">"発信"</string>
     <string name="listSeparatorCallNumber_edit">"電話番号"</string>
-    <string name="listSeparatorSendSmsMms">"SMS/MMSを送信"</string>
+    <string name="listSeparatorSendSmsMms">"SMSを送信"</string>
     <string name="listSeparatorSendEmail">"メールを送信"</string>
     <string name="listSeparatorSendEmail_edit">"メールアドレス"</string>
     <string name="listSeparatorSendIm">"インスタントメッセージを送信"</string>
@@ -116,7 +126,7 @@
     <string name="liveFolderFavorites">"スター付きの連絡先"</string>
     <string name="liveFolderPhone">"電話番号のある連絡先"</string>
     <string name="menu_sendTextMessage">"SMSメッセージを送信"</string>
-    <string name="recentCalls_callNumber">"発信 <xliff:g id="NAME">%s</xliff:g>"</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>
@@ -128,11 +138,11 @@
     <string name="private_num">"非通知"</string>
     <string name="payphone">"公衆電話発信"</string>
     <string name="dialerKeyboardHintText">"キーボードで番号を入力してください"</string>
-    <string name="dialerDialpadHintText">"ダイヤルして通話追加"</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"Googleサービスで使っている連絡先をこの携帯電話でも使えるようになります。"</string>
-    <string name="noContactsHelpText">"連絡先が登録されていません。"\n\n<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーを押して登録方法を選択してください:"\n" "\n<li><font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>": 連絡先を入力して新規作成します"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"連絡先をインポート"</b></font>": 連絡先をSIMカードから取り込みます"\n</li></string>
+    <string name="noContactsHelpText">"連絡先が登録されていません。"\n\n<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーを押して登録方法を選択してください:"\n" "\n<li><font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>": 連絡先を入力して新規作成します"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"連絡先をインポート"</b></font>": 連絡先をSIMカードおよびSDカードから取り込みます"\n</li></string>
     <string name="noContactsHelpTextWithSync">"連絡先が登録されていません。"\n\n<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーを押して登録方法を選択してください:"\n\n<li><font fgcolor="#ffffffff"><b>"同期する範囲"</b></font>": Googleアカウントから連絡先を読み込んで追加します"\n</li>\n<li><font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>": 連絡先を入力して新規作成します"\n</li>\n<li><font fgcolor="#ffffffff"><b>"連絡先をインポート"</b></font>": 連絡先をSIMカードから取り込みます"\n</li></string>
     <string name="seclectSyncGroups_title">"同期するグループを選択"</string>
     <string name="liveFolder_all_label">"すべての連絡先"</string>
@@ -168,4 +178,69 @@
     <string name="favoritesFrquentSeparator">"よく使う連絡先"</string>
     <string name="add_contact_dlg_title">"連絡先を追加"</string>
     <string name="add_contact_dlg_message_fmt">"<xliff:g id="EMAIL">%s</xliff:g> を連絡先に追加しますか?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"SDカードがありません"</string>
+    <string name="no_sdcard_message">"SDカードを検出できませんでした"</string>
+    <string name="searching_vcard_title">"VCardを検索中"</string>
+    <string name="select_import_type_title">"連絡先のインポート元を選択してください"</string>
+    <string name="import_from_sim">"SIMカード"</string>
+    <string name="import_from_sdcard">"SDカード"</string>
+    <!-- no translation found for import_all_vcard_string (2788222288962542415) -->
+    <skip />
+    <!-- no translation found for import_one_vcard_string (4618119296910253689) -->
+    <skip />
+    <string name="searching_vcard_message">"VCardのVCardデータを検索しています"</string>
+    <string name="scanning_sdcard_failed_title">"SDカードのスキャン失敗"</string>
+    <string name="scanning_sdcard_failed_message">"SDカードのスキャンに失敗しました"</string>
+    <string name="fail_reason_io_error">"送受信エラー"</string>
+    <string name="fail_reason_vcard_parse_error">"VCardの解析に失敗しました"</string>
+    <string name="fail_reason_no_vcard_file">"SDカードでVCardファイルが見つかりません"</string>
+    <string name="fail_reason_no_vcard_entry">"選択した内容の有効なVCardエントリが見つかりません"</string>
+    <string name="select_vcard_title">"VCardファイルの選択"</string>
+    <string name="select_vcard_message">"インポートするVCardファイルを選択してください"</string>
+    <string name="reading_vcard_title">"VCardを読み取り中"</string>
+    <string name="reading_vcard_message">"VCardファイルを読み取り中"</string>
+    <string name="importing_vcard_message">"VCardデータをインポート中"</string>
+    <string name="reading_vcard_failed_title">"VCardデータの読み取りに失敗しました"</string>
+    <string name="reading_vcard_failed_message">"VCardデータを読み取れませんでした"\n"エラーの理由: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>件の連絡先"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>件のファイル"</string>
+    <string name="export_contact_list">"連絡先をエクスポート"</string>
+    <string name="confirm_export_title">"エクスポートの確認"</string>
+    <string name="confirm_export_message">"連絡先を\"<xliff:g id="VCARD_FILENAME">%s</xliff:g>\"にエクスポートしてもよろしいですか?"</string>
+    <string name="exporting_contact_failed_title">"連絡先データのエクスポートに失敗しました"</string>
+    <string name="exporting_contact_failed_message">"連絡先データのエクスポートに失敗しました"\n"エラーの理由: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_too_many_vcard">"SDカードのVCardデータが多すぎます"</string>
+    <string name="fail_reason_cannot_open_destination_dir">"ディレクトリ\"<xliff:g id="DIR_NAME">%s</xliff:g>\"を開けません"</string>
+    <string name="exporting_contact_list_title">"連絡先データのエクスポート"</string>
+    <string name="exporting_contact_list_message">"連絡先データを\"<xliff:g id="FILE_NAME">%s</xliff:g>\"にエクスポートしています"</string>
+    <string name="fail_reason_could_not_initialize_exporter">"エクスポータを初期化できませんでした: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_error_occurred_during_export">"エクスポート中にエラーが発生しました: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
+    <string name="fail_reason_could_not_open_file">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\"を開けませんでした: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_progress">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>件のファイル"</string>
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index fb3a434..928b90a 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -15,27 +15,37 @@
 -->
 <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="launcherDialer">"Dialer"</string>
+    <string name="contactsList">"주소록"</string>
+    <string name="launcherDialer">"다이얼러"</string>
     <string name="shortcutContact">"연락처"</string>
-    <string name="starredList">"별표 표시된 연락처"</string>
-    <string name="frequentList">"자주 거는 전화"</string>
-    <string name="strequentList">"자주 거는 전화"</string>
-    <string name="viewContactTitle">"연락처 상세정보"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
+    <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="editContactDescription">"연락처 수정"</string>
     <string name="insertContactDescription">"연락처 만들기"</string>
-    <string name="searchHint">"연락처 검색"</string>
+    <string name="searchHint">"주소록 검색"</string>
     <string name="menu_search">"검색"</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_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_editContact">"연락처 수정"</string>
     <string name="menu_deleteContact">"연락처 삭제"</string>
-    <string name="menu_call">"전화걸기"</string>
+    <string name="menu_call">"통화"</string>
     <string name="menu_sendSMS">"SMS/MMS 보내기"</string>
     <string name="menu_sendEmail">"이메일 보내기"</string>
     <string name="menu_viewAddress">"지도상의 주소"</string>
@@ -44,17 +54,17 @@
     <string name="deleteConfirmation">"연락처가 삭제됩니다."</string>
     <string name="menu_done">"완료"</string>
     <string name="menu_doNotSave">"되돌리기"</string>
-    <string name="editContact_title_edit">"연락처 편집"</string>
+    <string name="editContact_title_edit">"연락처 수정"</string>
     <string name="editContact_title_insert">"새 연락처"</string>
-    <string name="menu_addItem">"추가정보"</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_phonetic_name">"이름(소리나는 대로)"</string>
     <string name="ghostData_company">"회사"</string>
-    <string name="ghostData_title">"직급"</string>
-    <string name="ghostData_im">"IM 이름"</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>
@@ -62,9 +72,9 @@
     <string name="invalidContactMessage">"연락처가 없습니다."</string>
     <string name="pickerNewContactHeader">"새 연락처 만들기"</string>
     <string name="selectLabel">"라벨 선택"</string>
-    <string name="phoneLabelsGroup">"전화"</string>
+    <string name="phoneLabelsGroup">"휴대전화"</string>
     <string name="emailLabelsGroup">"이메일"</string>
-    <string name="imLabelsGroup">"IM"</string>
+    <string name="imLabelsGroup">"메신저"</string>
     <string name="postalLabelsGroup">"주소"</string>
     <string name="otherLabelsGroup">"기타"</string>
   <string-array name="otherLabels">
@@ -72,54 +82,54 @@
     <item>"메모"</item>
   </string-array>
     <string name="errorDialogTitle">"사진 없음"</string>
-    <string name="photoPickerNotFoundText">"전화기에 사진이 없습니다."</string>
+    <string name="photoPickerNotFoundText">"휴대전화에 사진이 없습니다."</string>
     <string name="attachToContact">"연락처 아이콘"</string>
-    <string name="customLabelPickerTitle">"맞춤 라벨 이름"</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="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="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="starredInAndroid">"Android에 별표"</string>
-    <string name="contactCreatedToast">"연락처가 생성되었습니다."</string>
-    <string name="contactSavedToast">"연락처가 저장되었습니다."</string>
-    <string name="listSeparatorCallNumber">"전화번호"</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="starredInAndroid">"Android 중요주소록"</string>
+    <string name="contactCreatedToast">"연락처를 만들었습니다."</string>
+    <string name="contactSavedToast">"연락처를 저장했습니다."</string>
+    <string name="listSeparatorCallNumber">"전화걸기"</string>
     <string name="listSeparatorCallNumber_edit">"전화번호"</string>
     <string name="listSeparatorSendSmsMms">"SMS/MMS 보내기"</string>
     <string name="listSeparatorSendEmail">"이메일 보내기"</string>
     <string name="listSeparatorSendEmail_edit">"이메일 주소"</string>
-    <string name="listSeparatorSendIm">"인스턴트 메시지 보내기"</string>
+    <string name="listSeparatorSendIm">"채팅 메시지 보내기"</string>
     <string name="listSeparatorSendIm_edit">"채팅 주소"</string>
     <string name="listSeparatorMapAddress">"지도상의 주소"</string>
-    <string name="listSeparatorMapAddress_edit">"우편 주소"</string>
+    <string name="listSeparatorMapAddress_edit">"주소"</string>
     <string name="listSeparatorOrganizations">"조직"</string>
     <string name="listSeparatorOtherInformation">"기타 정보"</string>
     <string name="listSeparatorOtherInformation_edit">"기타 옵션"</string>
     <string name="listSeparatorMore_edit">"더보기"</string>
-    <string name="contactsIconLabel">"연락처"</string>
-    <string name="contactsFavoritesLabel">"자주 거는 전화"</string>
-    <string name="dialerIconLabel">"전화걸기"</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="liveFolderAll">"모든 주소록"</string>
+    <string name="liveFolderFavorites">"중요주소록"</string>
+    <string name="liveFolderPhone">"전화번호가 포함된 주소록"</string>
     <string name="menu_sendTextMessage">"SMS 메시지 보내기"</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_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">"IMEI"</string>
@@ -128,44 +138,120 @@
     <string name="private_num">"비공개 번호"</string>
     <string name="payphone">"공중전화"</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<li><font fgcolor="#ffffffff"><b>"새 주소록"</b></font>" - 주소록을 새로 생성하려는 경우"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"주소록 가져오기"</b></font>" - SIM 카드에서 주소록을 추가하려는 경우"\n</li></string>
-    <string name="noContactsHelpTextWithSync">"저장된 주소록이 없습니다."\n\n"주소록을 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 누르고 다음을 선택하세요."\n\n" "<li><font fgcolor="#ffffffff"><b>"동기화 그룹 수정"</b></font>" - 새 계정 또는 기존 Google 계정에서 추가하려는 경우"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"새 주소록"</b></font>" - 주소록을 새로 생성하려는 경우"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"주소록 가져오기"</b></font>" - SIM 카드에서 주소록을 추가하려는 경우"\n</li></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<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>" - 새 연락처를 만들려는 경우"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"주소록 가져오기"</b></font>" - SIM 카드에서 주소록을 추가하려는 경우"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"주소록이 없습니다."\n\n"주소록을 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 누르고 다음을 선택하세요. "\n" "\n<li><font fgcolor="#ffffffff"><b>"동기화 그룹 수정"</b></font>" - 새로운 또는 기존 Google 계정에서 추가하려는 경우"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>" - 새 연락처를 만들려는 경우"\n</li>" "\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="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>
     <string name="callDetailTitle">"통화 세부정보"</string>
-    <string name="toast_call_detail_error">"요청한 통화의 세부정보를 볼 수 없습니다."</string>
+    <string name="toast_call_detail_error">"요청한 통화의 세부정보를 읽지 못했습니다."</string>
     <string name="call_type">"유형"</string>
-    <string name="type_incoming">"수신통화"</string>
-    <string name="type_outgoing">"발신통화"</string>
+    <string name="type_incoming">"수신 전화"</string>
+    <string name="type_outgoing">"발신 통화"</string>
     <string name="type_missed">"부재중 전화"</string>
     <string name="call_time">"시간"</string>
     <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g>(<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
-    <string name="call_duration">"통화시간"</string>
-    <string name="header_actions">"작업"</string>
+    <string name="call_duration">"통화 시간"</string>
+    <string name="header_actions">"동작"</string>
     <string name="ringtone_spinner">"벨소리: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
-    <string name="add_more_items">"항목 더 추가"</string>
-    <string name="actionCall">"<xliff:g id="TYPE">%s</xliff:g>(으)로 전화걸기"</string>
-    <string name="actionEmail">"<xliff:g id="TYPE">%s</xliff:g>(으)로 이메일 보내기"</string>
-    <string name="actionText">"<xliff:g id="TYPE">%s</xliff:g>(으)로 문자 보내기"</string>
-    <string name="actionChat">"<xliff:g id="TYPE">%s</xliff:g> 채팅"</string>
+    <string name="add_more_items">"항목 추가"</string>
+    <string name="actionCall">"통화(<xliff:g id="TYPE">%s</xliff:g>)"</string>
+    <string name="actionEmail">"이메일(<xliff:g id="TYPE">%s</xliff:g>)"</string>
+    <string name="actionText">"문자(<xliff:g id="TYPE">%s</xliff:g>)"</string>
+    <string name="actionChat">"<xliff:g id="TYPE">%s</xliff:g>로 채팅"</string>
     <string name="actionMap">"<xliff:g id="TYPE">%s</xliff:g> 주소 보기"</string>
     <string name="actionIncomingCall">"수신 전화"</string>
-    <string name="detailIncomingCallsGoToVoicemail">"음성메일로 바로 보냄"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"바로 음성메일로 연결됩니다."</string>
     <string name="detailsRingtone">"<xliff:g id="RINGTONE_NAME">%s</xliff:g>(으)로 설정"</string>
-    <string name="callBack">"콜백"</string>
-    <string name="callAgain">"다시 걸기"</string>
-    <string name="returnCall">"부재중 전화에 전화 걸기"</string>
+    <string name="callBack">"통화"</string>
+    <string name="callAgain">"다시 통화"</string>
+    <string name="returnCall">"회신 통화에 전화걸기"</string>
     <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g>분 <xliff:g id="SECONDS">%s</xliff:g>초"</string>
     <string name="favoritesFrquentSeparator">"자주 통화한 목록"</string>
-    <string name="add_contact_dlg_title">"주소 추가"</string>
-    <string name="add_contact_dlg_message_fmt">"주소록에 \'<xliff:g id="EMAIL">%s</xliff:g>\'을(를) 추가하시겠습니까?"</string>
+    <string name="add_contact_dlg_title">"연락처 추가"</string>
+    <string name="add_contact_dlg_message_fmt">"\'<xliff:g id="EMAIL">%s</xliff:g>\'을(를) 주소록에 추가하겠습니까?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"SD 카드 없음"</string>
+    <string name="no_sdcard_message">"SD 카드가 발견되지 않았습니다."</string>
+    <string name="searching_vcard_title">"VCard 검색"</string>
+    <string name="select_import_type_title">"어디에서 주소록을 가져오시겠습니까?"</string>
+    <string name="import_from_sim">"SIM 카드"</string>
+    <string name="import_from_sdcard">"SD 카드"</string>
+    <string name="import_all_vcard_string">"모든 VCard 파일 가져오기"</string>
+    <string name="import_one_vcard_string">"VCard 파일 한 개 가져오기"</string>
+    <string name="searching_vcard_message">"VCard에서 VCard 데이터 검색 중"</string>
+    <string name="scanning_sdcard_failed_title">"SD 카드 스캔 실패"</string>
+    <string name="scanning_sdcard_failed_message">"SD 카드 스캔 실패"</string>
+    <string name="fail_reason_io_error">"I/O 오류"</string>
+    <string name="fail_reason_vcard_parse_error">"VCard 구문분석에 실패했습니다."</string>
+    <string name="fail_reason_no_vcard_file">"SD 카드에 VCard 파일이 없습니다."</string>
+    <string name="fail_reason_no_vcard_entry">"선택한 항목에 유효한 VCard 주소가 없습니다."</string>
+    <string name="select_vcard_title">"VCard 파일 선택"</string>
+    <string name="select_vcard_message">"가져올 VCard 파일을 선택하세요."</string>
+    <string name="reading_vcard_title">"VCard 읽는 중"</string>
+    <string name="reading_vcard_message">"VCard 파일 읽는 중"</string>
+    <string name="importing_vcard_message">"VCard 데이터 가져오기"</string>
+    <string name="reading_vcard_failed_title">"VCard 데이터를 읽어오지 못했습니다."</string>
+    <string name="reading_vcard_failed_message">"VCard 데이터를 읽을 수 없습니다."\n"실패 이유: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\'"</string>
+    <string name="reading_vcard_contacts">"주소록 <xliff:g id="TOTAL_NUMBER">%s</xliff:g>개 중 <xliff:g id="CURRENT_NUMBER">%s</xliff:g>개"</string>
+    <string name="reading_vcard_files">"파일 <xliff:g id="TOTAL_NUMBER">%s</xliff:g>개 중 <xliff:g id="CURRENT_NUMBER">%s</xliff:g>개"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 3964100..c779aeb 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -18,6 +18,16 @@
     <string name="contactsList">"Kontakter"</string>
     <string name="launcherDialer">"Telefon"</string>
     <string name="shortcutContact">"Kontakt"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
     <string name="starredList">"Med stjerne"</string>
     <string name="frequentList">"Mest brukt"</string>
     <string name="strequentList">"Favoritter"</string>
@@ -26,8 +36,7 @@
     <string name="editContactDescription">"Rediger kontakt"</string>
     <string name="insertContactDescription">"Opprett kontakt"</string>
     <string name="searchHint">"Søk i kontakter"</string>
-    <!-- no translation found for menu_search (9147752853603483719) -->
-    <skip />
+    <string name="menu_search">"Søk"</string>
     <string name="menu_newContact">"Ny kontakt"</string>
     <string name="menu_viewContact">"Se på kontakt"</string>
     <string name="menu_callNumber">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -93,8 +102,7 @@
     <string name="syncAllGroups">"Synkroniser alle kontakter"</string>
     <string name="groupNameMyContacts">"Mine kontakter"</string>
     <string name="groupNameWithPhones">"Kontakter med telefonnummer"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
+    <string name="starredInAndroid">"Stjernemerket i Android"</string>
     <string name="contactCreatedToast">"Kontakt opprettet."</string>
     <string name="contactSavedToast">"Kontakt lagret."</string>
     <string name="listSeparatorCallNumber">"Ring nummer"</string>
@@ -128,8 +136,7 @@
     <string name="voicemail">"Telefonsvarer"</string>
     <string name="unknown">"Ukjent"</string>
     <string name="private_num">"Skjult nummer"</string>
-    <!-- no translation found for payphone (4864313342828942922) -->
-    <skip />
+    <string name="payphone">"Telefonkiosk"</string>
     <string name="dialerKeyboardHintText">"Bruk tastaturet for å ringe"</string>
     <string name="dialerDialpadHintText">"Ring for å legge til en samtale"</string>
     <string name="simContacts_emptyLoading">"Henter fra SIM-kort…"</string>
@@ -168,10 +175,107 @@
     <string name="callAgain">"Ring på nytt"</string>
     <string name="returnCall">"Ring tilbake"</string>
     <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
-    <!-- no translation found for favoritesFrquentSeparator (5007070838253932139) -->
+    <string name="favoritesFrquentSeparator">"Ofte ringt"</string>
+    <string name="add_contact_dlg_title">"Legg til kontakt"</string>
+    <string name="add_contact_dlg_message_fmt">"Legg til \"<xliff:g id="EMAIL">%s</xliff:g>\" som kontakt?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
     <skip />
-    <!-- no translation found for add_contact_dlg_title (2789046541229846116) -->
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
     <skip />
-    <!-- no translation found for add_contact_dlg_message_fmt (7986472669444326576) -->
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <!-- no translation found for no_sdcard_title (6455416795090113715) -->
+    <skip />
+    <!-- no translation found for no_sdcard_message (7791906118138538259) -->
+    <skip />
+    <!-- no translation found for searching_vcard_title (4158580043290687793) -->
+    <skip />
+    <!-- no translation found for select_import_type_title (2443742794103731022) -->
+    <skip />
+    <!-- no translation found for import_from_sim (3362158539070179154) -->
+    <skip />
+    <!-- no translation found for import_from_sdcard (8854793070007530689) -->
+    <skip />
+    <!-- no translation found for import_all_vcard_string (2788222288962542415) -->
+    <skip />
+    <!-- no translation found for import_one_vcard_string (4618119296910253689) -->
+    <skip />
+    <!-- no translation found for searching_vcard_message (2467573749792455605) -->
+    <skip />
+    <!-- no translation found for scanning_sdcard_failed_title (2788276113399585924) -->
+    <skip />
+    <!-- no translation found for scanning_sdcard_failed_message (925361244069058117) -->
+    <skip />
+    <!-- no translation found for fail_reason_io_error (5922864781066136340) -->
+    <skip />
+    <!-- no translation found for fail_reason_vcard_parse_error (2129476089250836277) -->
+    <skip />
+    <!-- no translation found for fail_reason_no_vcard_file (1489638537002538332) -->
+    <skip />
+    <!-- no translation found for fail_reason_no_vcard_entry (3808734131680935043) -->
+    <skip />
+    <!-- no translation found for select_vcard_title (4615933643517710543) -->
+    <skip />
+    <!-- no translation found for select_vcard_message (7028772212789057858) -->
+    <skip />
+    <!-- no translation found for reading_vcard_title (430154704397375160) -->
+    <skip />
+    <!-- no translation found for reading_vcard_message (7470486051482460267) -->
+    <skip />
+    <!-- no translation found for importing_vcard_message (2466665710812588738) -->
+    <skip />
+    <!-- no translation found for reading_vcard_failed_title (5042366466147724748) -->
+    <skip />
+    <!-- no translation found for reading_vcard_failed_message (780588344175743735) -->
+    <skip />
+    <!-- no translation found for reading_vcard_contacts (3066834102042012868) -->
+    <skip />
+    <!-- no translation found for reading_vcard_files (34180143726972661) -->
+    <skip />
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
     <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index c4d38e1..9b88afb 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -18,6 +18,11 @@
     <string name="contactsList">"Contacten"</string>
     <string name="launcherDialer">"Telefoon"</string>
     <string name="shortcutContact">"Contacten"</string>
+    <string name="shortcutDialContact">"Direct bellen"</string>
+    <string name="shortcutMessageContact">"Direct bericht"</string>
+    <string name="shortcutActivityTitle">"Kies een contactsnelkoppeling"</string>
+    <string name="callShortcutActivityTitle">"Kies een nummer om te bellen"</string>
+    <string name="messageShortcutActivityTitle">"Kies een nummer voor bericht"</string>
     <string name="starredList">"Met ster"</string>
     <string name="frequentList">"Vaak"</string>
     <string name="strequentList">"Favorieten"</string>
@@ -108,10 +113,10 @@
     <string name="listSeparatorOtherInformation">"Overige informatie"</string>
     <string name="listSeparatorOtherInformation_edit">"Andere opties"</string>
     <string name="listSeparatorMore_edit">"Meer"</string>
-    <string name="contactsIconLabel">"Contacten"</string>
-    <string name="contactsFavoritesLabel">"Favorieten"</string>
+    <string name="contactsIconLabel">"Contact"</string>
+    <string name="contactsFavoritesLabel">"Favoriet"</string>
     <string name="dialerIconLabel">"Telefoon"</string>
-    <string name="recentCallsIconLabel">"Gesprekken"</string>
+    <string name="recentCallsIconLabel">"Gesprek"</string>
     <string name="liveFolderAll">"Alle contacten"</string>
     <string name="liveFolderFavorites">"Contacten met ster"</string>
     <string name="liveFolderPhone">"Contacten met telefoonnummers"</string>
@@ -133,7 +138,7 @@
     <string name="simContacts_title">"Contacten op SIM-kaart"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synchroniseer uw Google-contacten!"</font>" "\n"Zodra uw telefoon is gesynchroniseerd, heeft u uw contacten altijd ter beschikking."</string>
     <string name="noContactsHelpText">"U heeft geen contacten."\n\n"Als u contacten wilt toevoegen, drukt u op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en selecteert u:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact te maken"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacten importeren"</b></font>" om contacten vanaf uw SIM-kaart toe te voegen"\n</li></string>
-    <string name="noContactsHelpTextWithSync">"U heeft geen contacten."\n\n"Als u contacten wilt toevoegen, klikt u op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en selecteert u:"\n\n<li><font fgcolor="#ffffffff"><b>"\'Synchronisatiegroepen bewerken\'"</b></font>" om contacten toe te voegen uit een nieuw of bestaand Google-account"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"\'Nieuw contact\'"</b></font>" om een geheel nieuw contact te maken"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"\'Contacten importeren\'"</b></font>" om contact te importeren vanaf uw SIM-kaart"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"U heeft geen contacten."\n\n"Als u contacten wilt toevoegen, klikt u op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en selecteert u:"\n\n<li><font fgcolor="#ffffffff"><b>"\'Synchronisatiegroepen bewerken\'"</b></font>" om contacten toe te voegen uit een nieuw of bestaand Google-account"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"\'Nieuw contact\'"</b></font>" om een geheel nieuw contact te maken"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"\'Contacten importeren\'"</b></font>" om contacten te importeren vanaf uw SIM-kaart"\n</li></string>
     <string name="seclectSyncGroups_title">"Groepen selecteren om te synchroniseren"</string>
     <string name="liveFolder_all_label">"Alle contacten"</string>
     <string name="liveFolder_favorites_label">"Met ster"</string>
@@ -168,4 +173,55 @@
     <string name="favoritesFrquentSeparator">"Vaak gebeld"</string>
     <string name="add_contact_dlg_title">"Contact toevoegen"</string>
     <string name="add_contact_dlg_message_fmt">"\"<xliff:g id="EMAIL">%s</xliff:g>\" toevoegen aan contacten?"</string>
+    <string name="description_image_button_one">"één"</string>
+    <string name="description_image_button_two">"twee"</string>
+    <string name="description_image_button_three">"drie"</string>
+    <string name="description_image_button_four">"vier"</string>
+    <string name="description_image_button_five">"vijf"</string>
+    <string name="description_image_button_six">"zes"</string>
+    <string name="description_image_button_seven">"zeven"</string>
+    <string name="description_image_button_eight">"acht"</string>
+    <string name="description_image_button_nine">"negen"</string>
+    <string name="description_image_button_star">"ster"</string>
+    <string name="description_image_button_zero">"nul"</string>
+    <string name="description_image_button_pound">"hekje"</string>
+    <string name="no_sdcard_title">"Geen SD-kaart"</string>
+    <string name="no_sdcard_message">"Geen SD-kaart gedetecteerd"</string>
+    <string name="searching_vcard_title">"Zoeken naar VCard"</string>
+    <string name="select_import_type_title">"Waarvandaan wilt u contacten importeren?"</string>
+    <string name="import_from_sim">"SIM-kaart"</string>
+    <string name="import_from_sdcard">"SD-kaart"</string>
+    <string name="import_all_vcard_string">"Alle VCard-bestanden importeren"</string>
+    <string name="import_one_vcard_string">"Eén VCard-bestand importeren"</string>
+    <string name="searching_vcard_message">"Zoeken naar VCard-gegevens op VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Scannen van SD-kaart is mislukt"</string>
+    <string name="scanning_sdcard_failed_message">"Scannen van SD-kaart is mislukt"</string>
+    <string name="fail_reason_io_error">"I/O-fout"</string>
+    <string name="fail_reason_vcard_parse_error">"Parseren van VCard is mislukt"</string>
+    <string name="fail_reason_no_vcard_file">"Geen VCard-bestand gevonden op SD-kaart"</string>
+    <string name="fail_reason_no_vcard_entry">"Geen geldig VCard-item gevonden voor uw selectie"</string>
+    <string name="select_vcard_title">"VCard-bestand selecteren"</string>
+    <string name="select_vcard_message">"Selecteer een VCard-bestand om te importeren"</string>
+    <string name="reading_vcard_title">"VCard lezen"</string>
+    <string name="reading_vcard_message">"VCard-bestand(en) lezen"</string>
+    <string name="importing_vcard_message">"VCard-gegevens importeren"</string>
+    <string name="reading_vcard_failed_title">"Lezen van VCard-gegevens is mislukt"</string>
+    <string name="reading_vcard_failed_message">"VCard-gegevens kunnen niet worden gelezen"\n"Reden voor fout: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\'"</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> van <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacten"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> van <xliff:g id="TOTAL_NUMBER">%s</xliff:g> bestanden"</string>
+    <string name="export_contact_list">"Contacten exporteren"</string>
+    <string name="confirm_export_title">"Bevestiging voor export"</string>
+    <string name="confirm_export_message">"Mag uw contactenlijst worden geëxporteerd naar \'<xliff:g id="VCARD_FILENAME">%s</xliff:g>\'?"</string>
+    <string name="exporting_contact_failed_title">"Exporteren van contactgegevens is mislukt"</string>
+    <string name="exporting_contact_failed_message">"Exporteren van contactgegevens is mislukt"\n"Reden voor fout: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\'"</string>
+    <string name="fail_reason_too_many_vcard">"Te veel VCard-gegevens op de SD-kaart"</string>
+    <string name="fail_reason_cannot_open_destination_dir">"Kan de doeldirectory \'<xliff:g id="DIR_NAME">%s</xliff:g>\' niet openen of maken"</string>
+    <string name="exporting_contact_list_title">"Contactgegevens exporteren"</string>
+    <string name="exporting_contact_list_message">"Contactgegevens exporteren naar \'<xliff:g id="FILE_NAME">%s</xliff:g>\'"</string>
+    <string name="fail_reason_could_not_initialize_exporter">"Kan het exportprogramma niet initialiseren: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\'"</string>
+    <string name="fail_reason_error_occurred_during_export">"Fout opgetreden tijdens export: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\'"</string>
+    <string name="fail_reason_could_not_open_file">"Kan \'<xliff:g id="FILE_NAME">%s</xliff:g>\' niet openen: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_progress">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> van <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacten"</string>
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index d99948e..79695a8 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -18,6 +18,11 @@
     <string name="contactsList">"Kontakty"</string>
     <string name="launcherDialer">"Telefon"</string>
     <string name="shortcutContact">"Kontakt"</string>
+    <string name="shortcutDialContact">"Telefonowanie bezpośrednie"</string>
+    <string name="shortcutMessageContact">"Wiadomość bezpośrednia"</string>
+    <string name="shortcutActivityTitle">"Wybierz skrót kontaktu"</string>
+    <string name="callShortcutActivityTitle">"Wybierz numer, aby nawiązać połączenie"</string>
+    <string name="messageShortcutActivityTitle">"Wybierz numer, aby wysłać wiadomość"</string>
     <string name="starredList">"Oznaczony gwiazdką"</string>
     <string name="frequentList">"Częste"</string>
     <string name="strequentList">"Ulubione"</string>
@@ -29,15 +34,15 @@
     <string name="menu_search">"Szukaj"</string>
     <string name="menu_newContact">"Nowy kontakt"</string>
     <string name="menu_viewContact">"Wyświetl kontakt"</string>
-    <string name="menu_callNumber">"Zadzwoń do kontaktu <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber">"Zadzwoń do: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="menu_addStar">"Dodaj do ulubionych"</string>
     <string name="menu_removeStar">"Usuń z ulubionych"</string>
     <string name="menu_showBarcode">"Pokaż kod kreskowy"</string>
     <string name="menu_editContact">"Edytuj kontakt"</string>
     <string name="menu_deleteContact">"Usuń kontakt"</string>
     <string name="menu_call">"Zadzwoń"</string>
-    <string name="menu_sendSMS">"Wyślij wiadomość SMS/MMS"</string>
-    <string name="menu_sendEmail">"Wyślij wiadomość e-mail"</string>
+    <string name="menu_sendSMS">"Wyślij SMS/MMS"</string>
+    <string name="menu_sendEmail">"Wyślij e-mail"</string>
     <string name="menu_viewAddress">"Pokaż adres na mapie"</string>
     <string name="menu_makeDefaultNumber">"Ustaw ten numer jako domyślny"</string>
     <string name="deleteConfirmation_title">"Usuń"</string>
@@ -53,8 +58,8 @@
     <string name="ghostData_name">"Imię i nazwisko"</string>
     <string name="ghostData_phonetic_name">"Nazwisko (fonetycznie)"</string>
     <string name="ghostData_company">"Firma"</string>
-    <string name="ghostData_title">"Pozycja"</string>
-    <string name="ghostData_im">"Nazwa w komunikatorze"</string>
+    <string name="ghostData_title">"Stanowisko"</string>
+    <string name="ghostData_im">"Nazwa na czacie"</string>
     <string name="ghostData_notes">"Moja notatka"</string>
     <string name="ghostData_phone">"Numer telefonu"</string>
     <string name="ghostData_email">"Adres e-mail"</string>
@@ -83,8 +88,8 @@
     <string name="default_ringtone">"Domyślny"</string>
     <string name="addPicture">"Dodaj ikonę"</string>
     <string name="removePicture">"Usuń ikonę"</string>
-    <string name="noContacts">"Brak kontaktów."</string>
-    <string name="noContactsWithPhoneNumbers">"Brak kontaktów z numerami telefonów."</string>
+    <string name="noContacts">"Brak kontaktów"</string>
+    <string name="noContactsWithPhoneNumbers">"Brak kontaktów z numerami telefonów"</string>
     <string name="noFavorites">"Brak ulubionych"</string>
     <string name="select_group_title">"Grupy"</string>
     <string name="groupEmpty">"Grupa „<xliff:g id="GROUPNAME">%s</xliff:g>” jest pusta."</string>
@@ -92,15 +97,15 @@
     <string name="syncAllGroups">"Synchronizuj wszystkie kontakty"</string>
     <string name="groupNameMyContacts">"Moje kontakty"</string>
     <string name="groupNameWithPhones">"Kontakty z numerami telefonu"</string>
-    <string name="starredInAndroid">"Oznaczone gwiazdką w systemie Android"</string>
+    <string name="starredInAndroid">"Z gwiazdką w systemie Android"</string>
     <string name="contactCreatedToast">"Utworzono kontakt."</string>
     <string name="contactSavedToast">"Kontakt został zapisany."</string>
     <string name="listSeparatorCallNumber">"Wybierz numer"</string>
     <string name="listSeparatorCallNumber_edit">"Numery telefonów"</string>
-    <string name="listSeparatorSendSmsMms">"Wyślij wiadomość SMS/MMS"</string>
-    <string name="listSeparatorSendEmail">"Wyślij wiadomość e-mail"</string>
+    <string name="listSeparatorSendSmsMms">"Wyślij SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Wyślij e-mail"</string>
     <string name="listSeparatorSendEmail_edit">"Adresy e-mail"</string>
-    <string name="listSeparatorSendIm">"Wyślij wiadomość błyskawiczną"</string>
+    <string name="listSeparatorSendIm">"Wyślij wiadomość czatu"</string>
     <string name="listSeparatorSendIm_edit">"Adresy czatu"</string>
     <string name="listSeparatorMapAddress">"Pokaż adres na mapie"</string>
     <string name="listSeparatorMapAddress_edit">"Adresy pocztowe"</string>
@@ -113,10 +118,10 @@
     <string name="dialerIconLabel">"Telefon"</string>
     <string name="recentCallsIconLabel">"Rejestr"</string>
     <string name="liveFolderAll">"Wszystkie kontakty"</string>
-    <string name="liveFolderFavorites">"Kontakty oznaczone gwiazdką"</string>
+    <string name="liveFolderFavorites">"Kontakty z gwiazdką"</string>
     <string name="liveFolderPhone">"Kontakty z numerami telefonów"</string>
-    <string name="menu_sendTextMessage">"Wyślij wiadomość SMS"</string>
-    <string name="recentCalls_callNumber">"Zadzwoń do kontaktu <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_sendTextMessage">"Wyślij SMS"</string>
+    <string name="recentCalls_callNumber">"Zadzwoń do: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall">"Edytuj numer przed nawiązaniem połączenia"</string>
     <string name="recentCalls_addToContact">"Dodaj do kontaktów"</string>
     <string name="recentCalls_removeFromRecentList">"Usuń z rejestru połączeń"</string>
@@ -128,7 +133,7 @@
     <string name="private_num">"Numer prywatny"</string>
     <string name="payphone">"Telefon płatny"</string>
     <string name="dialerKeyboardHintText">"Wybierz numer za pomocą klawiatury"</string>
-    <string name="dialerDialpadHintText">"Wybierz numer, aby dodać połączenie"</string>
+    <string name="dialerDialpadHintText">"Dodaj nowe poł."</string>
     <string name="simContacts_emptyLoading">"Wczytywanie z karty SIM…"</string>
     <string name="simContacts_title">"Kontakty z karty SIM"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Zsynchronizuj kontakty Google!"</font>" "\n"Po zsynchronizowaniu telefonu zawsze będziesz mieć kontakty pod ręką."</string>
@@ -144,7 +149,7 @@
     <string name="callDetailTitle">"Szczegóły połączenia"</string>
     <string name="toast_call_detail_error">"Nie można odczytać szczegółów żądanego połączenia."</string>
     <string name="call_type">"Typ"</string>
-    <string name="type_incoming">"Poł. przychodzące"</string>
+    <string name="type_incoming">"Połączenie"</string>
     <string name="type_outgoing">"Połączenie wychodzące"</string>
     <string name="type_missed">"Nieodebrane połączenia"</string>
     <string name="call_time">"Godzina"</string>
@@ -153,10 +158,10 @@
     <string name="header_actions">"Czynności"</string>
     <string name="ringtone_spinner">"Dźwięk dzwonka: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
     <string name="add_more_items">"Dodaj więcej elementów"</string>
-    <string name="actionCall">"Zadzwoń na numer: <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionEmail">"Wyślij wiadomość e-mail na adres: <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionText">"Wyślij tekst do: <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionChat">"Porozmawiaj na czacie <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionCall">"Połącz: <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionEmail">"Wyślij e-mail: <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Wyślij SMS: <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"Czatuj przez <xliff:g id="TYPE">%s</xliff:g>"</string>
     <string name="actionMap">"Wyświetl adres: <xliff:g id="TYPE">%s</xliff:g>"</string>
     <string name="actionIncomingCall">"Połączenia przychodzące"</string>
     <string name="detailIncomingCallsGoToVoicemail">"Zostaną wysłane bezpośrednio na pocztę głosową"</string>
@@ -168,4 +173,55 @@
     <string name="favoritesFrquentSeparator">"Częste połączenia"</string>
     <string name="add_contact_dlg_title">"Dodaj kontakt"</string>
     <string name="add_contact_dlg_message_fmt">"Czy dodać adres „<xliff:g id="EMAIL">%s</xliff:g>” do kontaktów?"</string>
+    <string name="description_image_button_one">"jeden"</string>
+    <string name="description_image_button_two">"dwa"</string>
+    <string name="description_image_button_three">"trzy"</string>
+    <string name="description_image_button_four">"cztery"</string>
+    <string name="description_image_button_five">"pięć"</string>
+    <string name="description_image_button_six">"sześć"</string>
+    <string name="description_image_button_seven">"siedem"</string>
+    <string name="description_image_button_eight">"osiem"</string>
+    <string name="description_image_button_nine">"dziewięć"</string>
+    <string name="description_image_button_star">"gwiazdka"</string>
+    <string name="description_image_button_zero">"zero"</string>
+    <string name="description_image_button_pound">"funt"</string>
+    <string name="no_sdcard_title">"Brak karty SD"</string>
+    <string name="no_sdcard_message">"Nie wykryto karty SD"</string>
+    <string name="searching_vcard_title">"Wyszukiwanie danych VCard"</string>
+    <string name="select_import_type_title">"Skąd chcesz zaimportować kontakty?"</string>
+    <string name="import_from_sim">"Karta SIM"</string>
+    <string name="import_from_sdcard">"Karta SD"</string>
+    <string name="import_all_vcard_string">"Importuj wszystkie pliki VCard"</string>
+    <string name="import_one_vcard_string">"Zaimportuj jeden plik VCard"</string>
+    <string name="searching_vcard_message">"Wyszukiwanie danych VCard w pliku VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Skanowanie karty SD nie powiodło się"</string>
+    <string name="scanning_sdcard_failed_message">"Skanowanie karty SD nie powiodło się"</string>
+    <string name="fail_reason_io_error">"Błąd wejścia/wyjścia"</string>
+    <string name="fail_reason_vcard_parse_error">"Analiza danych VCard nie powiodła się"</string>
+    <string name="fail_reason_no_vcard_file">"Na karcie SD nie znaleziono żadnego pliku VCard"</string>
+    <string name="fail_reason_no_vcard_entry">"W wybranym zakresie nie znaleziono poprawnej pozycji VCard"</string>
+    <string name="select_vcard_title">"Wybierz plik VCard"</string>
+    <string name="select_vcard_message">"Wybierz plik VCard do zaimportowania"</string>
+    <string name="reading_vcard_title">"Odczytywanie danych VCard"</string>
+    <string name="reading_vcard_message">"Odczytywanie plików VCard"</string>
+    <string name="importing_vcard_message">"Importowanie danych VCard"</string>
+    <string name="reading_vcard_failed_title">"Odczytywanie danych VCard nie powiodło się"</string>
+    <string name="reading_vcard_failed_message">"Nie można odczytać danych VCard"\n"Przyczyna niepowodzenia: „<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
+    <string name="reading_vcard_contacts">"Kontakt <xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+    <string name="reading_vcard_files">"plik <xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+    <string name="export_contact_list">"Eksportuj kontakty"</string>
+    <string name="confirm_export_title">"Potwierdzenie eksportowania"</string>
+    <string name="confirm_export_message">"Czy chcesz wyeksportować swoją listę kontaktów do pliku „<xliff:g id="VCARD_FILENAME">%s</xliff:g>”?"</string>
+    <string name="exporting_contact_failed_title">"Eksportowanie danych kontaktowych nie powiodło się"</string>
+    <string name="exporting_contact_failed_message">"Eksportowanie danych kontaktowych nie powiodło się"\n"Przyczyna niepowodzenia: „<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
+    <string name="fail_reason_too_many_vcard">"Zbyt dużo danych VCard na karcie SD"</string>
+    <string name="fail_reason_cannot_open_destination_dir">"Nie można otworzyć lub utworzyć katalogu docelowego „<xliff:g id="DIR_NAME">%s</xliff:g>”"</string>
+    <string name="exporting_contact_list_title">"Eksportowanie danych kontaktowych"</string>
+    <string name="exporting_contact_list_message">"Eksportowanie danych kontaktowych do pliku „<xliff:g id="FILE_NAME">%s</xliff:g>”"</string>
+    <string name="fail_reason_could_not_initialize_exporter">"Nie można zainicjować programu eksportującego: „<xliff:g id="EXACT_REASON">%s</xliff:g>”"</string>
+    <string name="fail_reason_error_occurred_during_export">"Wystąpił błąd podczas eksportowania: „<xliff:g id="EXACT_REASON">%s</xliff:g>”"</string>
+    <string name="fail_reason_could_not_open_file">"Nie można otworzyć pliku „<xliff:g id="FILE_NAME">%s</xliff:g>”: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_progress">"Kontakt <xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..360ede2
--- /dev/null
+++ b/res/values-pt-rPT/strings.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Contactos"</string>
+    <string name="launcherDialer">"Telefone"</string>
+    <string name="shortcutContact">"Contacto"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
+    <string name="starredList">"Marcado com estrela"</string>
+    <string name="frequentList">"Frequentes"</string>
+    <string name="strequentList">"Favoritos"</string>
+    <string name="viewContactTitle">"Detalhes de contacto"</string>
+    <string name="viewContactDesription">"Visualizar contacto"</string>
+    <string name="editContactDescription">"Editar contacto"</string>
+    <string name="insertContactDescription">"Criar contacto"</string>
+    <string name="searchHint">"Pesquisar contactos"</string>
+    <string name="menu_search">"Pesquisar"</string>
+    <string name="menu_newContact">"Novo contacto"</string>
+    <string name="menu_viewContact">"Visualizar contacto"</string>
+    <string name="menu_callNumber">"Telefonar a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Adicionar aos favoritos"</string>
+    <string name="menu_removeStar">"Remover dos favoritos"</string>
+    <string name="menu_showBarcode">"Mostrar código de barras"</string>
+    <string name="menu_editContact">"Editar contacto"</string>
+    <string name="menu_deleteContact">"Eliminar contacto"</string>
+    <string name="menu_call">"Chamada"</string>
+    <string name="menu_sendSMS">"Enviar SMS/MMS"</string>
+    <string name="menu_sendEmail">"Enviar e-mail"</string>
+    <string name="menu_viewAddress">"Endereço no mapa"</string>
+    <string name="menu_makeDefaultNumber">"Utilizar como número predefinido"</string>
+    <string name="deleteConfirmation_title">"Eliminar"</string>
+    <string name="deleteConfirmation">"Este contacto será eliminado."</string>
+    <string name="menu_done">"Concluído"</string>
+    <string name="menu_doNotSave">"Reverter"</string>
+    <string name="editContact_title_edit">"Editar contacto"</string>
+    <string name="editContact_title_insert">"Novo contacto"</string>
+    <string name="menu_addItem">"Mais informações"</string>
+    <string name="label_phonetic_name">"Fonético"</string>
+    <string name="label_notes">"Notas"</string>
+    <string name="label_ringtone">"Toque"</string>
+    <string name="ghostData_name">"Primeiro e último"</string>
+    <string name="ghostData_phonetic_name">"Nome fonético"</string>
+    <string name="ghostData_company">"Empresa"</string>
+    <string name="ghostData_title">"Posição"</string>
+    <string name="ghostData_im">"Nome de MI"</string>
+    <string name="ghostData_notes">"A minha nota"</string>
+    <string name="ghostData_phone">"Número de telefone"</string>
+    <string name="ghostData_email">"Endereço de e-mail"</string>
+    <string name="ghostData_postal">"Endereço postal"</string>
+    <string name="invalidContactMessage">"O contacto não existe."</string>
+    <string name="pickerNewContactHeader">"Criar novo contacto"</string>
+    <string name="selectLabel">"Seleccionar etiqueta"</string>
+    <string name="phoneLabelsGroup">"Telefone"</string>
+    <string name="emailLabelsGroup">"E-mail"</string>
+    <string name="imLabelsGroup">"MI"</string>
+    <string name="postalLabelsGroup">"Endereço postal"</string>
+    <string name="otherLabelsGroup">"Outro"</string>
+  <string-array name="otherLabels">
+    <item>"Organização"</item>
+    <item>"Nota"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Sem imagens"</string>
+    <string name="photoPickerNotFoundText">"Não existem imagens disponíveis no telefone."</string>
+    <string name="attachToContact">"Ícone de contacto"</string>
+    <string name="customLabelPickerTitle">"Nome da etiqueta personalizada"</string>
+    <string name="menu_displayGroup">"Apresentar grupo"</string>
+    <string name="syncGroupPreference">"Editar grupos sincronizados"</string>
+    <string name="importFromSim">"Importar contactos"</string>
+    <string name="send_to_voicemail_checkbox">"Enviar as chamadas directamente para o correio de voz"</string>
+    <string name="send_to_voicemail_view">"As chamadas são enviadas directamente para o correio de voz."</string>
+    <string name="default_ringtone">"Predefinido"</string>
+    <string name="addPicture">"Adicionar ícone"</string>
+    <string name="removePicture">"Remover ícone"</string>
+    <string name="noContacts">"Sem contactos."</string>
+    <string name="noContactsWithPhoneNumbers">"Sem contactos com números de telefone."</string>
+    <string name="noFavorites">"Sem favoritos."</string>
+    <string name="select_group_title">"Grupos"</string>
+    <string name="groupEmpty">"O seu grupo \"<xliff:g id="GROUPNAME">%s</xliff:g>\" está vazio."</string>
+    <string name="showAllGroups">"Todos os contactos"</string>
+    <string name="syncAllGroups">"Sincronizar todos os contactos"</string>
+    <string name="groupNameMyContacts">"Os meus contactos"</string>
+    <string name="groupNameWithPhones">"Contactos com números de telefone"</string>
+    <string name="starredInAndroid">"Marcado com estrela no Android"</string>
+    <string name="contactCreatedToast">"Contacto criado."</string>
+    <string name="contactSavedToast">"Contacto guardado."</string>
+    <string name="listSeparatorCallNumber">"Marcar número"</string>
+    <string name="listSeparatorCallNumber_edit">"Números de telefone"</string>
+    <string name="listSeparatorSendSmsMms">"Enviar SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Enviar e-mail"</string>
+    <string name="listSeparatorSendEmail_edit">"Endereços de e-mail"</string>
+    <string name="listSeparatorSendIm">"Enviar mensagem instantânea"</string>
+    <string name="listSeparatorSendIm_edit">"Endereços de chat"</string>
+    <string name="listSeparatorMapAddress">"Endereço no mapa"</string>
+    <string name="listSeparatorMapAddress_edit">"Endereços postais"</string>
+    <string name="listSeparatorOrganizations">"Organizações"</string>
+    <string name="listSeparatorOtherInformation">"Outras informações"</string>
+    <string name="listSeparatorOtherInformation_edit">"Outras opções"</string>
+    <string name="listSeparatorMore_edit">"Mais"</string>
+    <string name="contactsIconLabel">"Contactos"</string>
+    <string name="contactsFavoritesLabel">"Favoritos"</string>
+    <string name="dialerIconLabel">"Marcador"</string>
+    <string name="recentCallsIconLabel">"Registo de chamadas"</string>
+    <string name="liveFolderAll">"Todos os contactos"</string>
+    <string name="liveFolderFavorites">"Contactos marcados com estrela"</string>
+    <string name="liveFolderPhone">"Contactos com números de telefone"</string>
+    <string name="menu_sendTextMessage">"Enviar mensagem SMS"</string>
+    <string name="recentCalls_callNumber">"Telefonar a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Editar número antes de efectuar a chamada"</string>
+    <string name="recentCalls_addToContact">"Adicionar aos contactos"</string>
+    <string name="recentCalls_removeFromRecentList">"Remover do registo de chamadas"</string>
+    <string name="recentCalls_deleteAll">"Limpar registo de chamadas"</string>
+    <string name="recentCalls_empty">"O registo de chamadas está vazio."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Correio de voz"</string>
+    <string name="unknown">"Desconhecido"</string>
+    <string name="private_num">"Número particular"</string>
+    <string name="payphone">"Telefone público"</string>
+    <string name="dialerKeyboardHintText">"Utilizar o teclado para marcar"</string>
+    <string name="dialerDialpadHintText">"Marcar para adicionar uma chamada"</string>
+    <string name="simContacts_emptyLoading">"A carregar a partir do cartão SIM..."</string>
+    <string name="simContacts_title">"Contactos no cartão SIM"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Sincronize os seus contactos do Google!"</font>" "\n"Depois de efectuar a sincronização para o seu telefone, os seus contactos ficarão disponíveis onde quer que esteja."</string>
+    <string name="noContactsHelpText">"Não tem contactos."\n\n"Para adicionar contactos, prima "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e seleccione:"\n\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um novo contacto desde o princípio"\n</li>"."\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para adicionar contactos a partir do cartão SIM"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Não tem nenhum contacto."\n\n"Para adicionar contactos, prima "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e seleccione:"\n\n<li><font fgcolor="#ffffffff"><b>"Editar grupos sincronizados"</b></font>" para adicionar a partir de uma Conta·Google nova ou já existente"\n</li>" \n"\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um novo contacto desde o princípio"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para adicionar contactos a partir do cartão SIM"\n</li></string>
+    <string name="seclectSyncGroups_title">"Seleccionar grupos para sincronizar"</string>
+    <string name="liveFolder_all_label">"Todos os contactos"</string>
+    <string name="liveFolder_favorites_label">"Marcado com estrela"</string>
+    <string name="liveFolder_phones_label">"Telefones"</string>
+    <string name="dialer_useDtmfDialpad">"Utilizar teclado numérico com tons de toque"</string>
+    <string name="dialer_returnToInCallScreen">"Voltar à chamada em curso"</string>
+    <string name="dialer_addAnotherCall">"Adicionar chamada"</string>
+    <string name="callDetailTitle">"Detalhes da chamada"</string>
+    <string name="toast_call_detail_error">"Não foi possível ler os detalhes da chamada solicitada."</string>
+    <string name="call_type">"Tipo"</string>
+    <string name="type_incoming">"Chamada recebida"</string>
+    <string name="type_outgoing">"Chamada efectuada"</string>
+    <string name="type_missed">"Chamada não atendida"</string>
+    <string name="call_time">"Hora"</string>
+    <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g> (<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
+    <string name="call_duration">"Duração"</string>
+    <string name="header_actions">"Acções"</string>
+    <string name="ringtone_spinner">"Toque: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
+    <string name="add_more_items">"Adicionar mais itens"</string>
+    <string name="actionCall">"Telefonar a <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionEmail">"E-mail <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Texto <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"Chat utilizando <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionMap">"Visualizar endereço de <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionIncomingCall">"Chamadas recebidas"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"Será enviada directamente para o correio de voz"</string>
+    <string name="detailsRingtone">"Definido para <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
+    <string name="callBack">"Chamada de retorno"</string>
+    <string name="callAgain">"Ligar novamente"</string>
+    <string name="returnCall">"Devolver chamada"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> seg"</string>
+    <string name="favoritesFrquentSeparator">"Números de marcação frequente"</string>
+    <string name="add_contact_dlg_title">"Adicionar contacto"</string>
+    <string name="add_contact_dlg_message_fmt">"Adicionar \"<xliff:g id="EMAIL">%s</xliff:g>\" aos contactos?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"Sem cartão SD"</string>
+    <string name="no_sdcard_message">"Não foi detectado nenhum cartão SD"</string>
+    <string name="searching_vcard_title">"A procurar VCard"</string>
+    <string name="select_import_type_title">"De onde pretende importar contactos?"</string>
+    <string name="import_from_sim">"Cartão SIM"</string>
+    <string name="import_from_sdcard">"Cartão SD"</string>
+    <string name="import_all_vcard_string">"Importar todos os ficheiros VCard"</string>
+    <string name="import_one_vcard_string">"Importar um ficheiro VCard"</string>
+    <string name="searching_vcard_message">"A procurar dados VCard no VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Falha na análise do cartão SD"</string>
+    <string name="scanning_sdcard_failed_message">"Falha na análise do cartão SD"</string>
+    <string name="fail_reason_io_error">"Erro de E/S"</string>
+    <string name="fail_reason_vcard_parse_error">"Falha na análise do VCard"</string>
+    <string name="fail_reason_no_vcard_file">"Não foi encontrado nenhum ficheiro VCard no cartão SD"</string>
+    <string name="fail_reason_no_vcard_entry">"Não foi encontrada nenhuma entrada VCard válida para a sua selecção"</string>
+    <string name="select_vcard_title">"Seleccionar ficheiro VCard"</string>
+    <string name="select_vcard_message">"Seleccione um ficheiro VCard para importar"</string>
+    <string name="reading_vcard_title">"A ler VCard"</string>
+    <string name="reading_vcard_message">"A ler ficheiro(s) VCard"</string>
+    <string name="importing_vcard_message">"A importar dados VCard"</string>
+    <string name="reading_vcard_failed_title">"Falha na leitura de dados VCard"</string>
+    <string name="reading_vcard_failed_message">"Não foi possível ler os dados VCard"\n"Motivo da falha: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> ficheiros"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
+</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
new file mode 100644
index 0000000..9d9de1a
--- /dev/null
+++ b/res/values-pt/strings.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Contatos"</string>
+    <string name="launcherDialer">"Discador"</string>
+    <string name="shortcutContact">"Contato"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
+    <string name="starredList">"Com estrela"</string>
+    <string name="frequentList">"Frequente"</string>
+    <string name="strequentList">"Favoritos"</string>
+    <string name="viewContactTitle">"Detalhes do contato"</string>
+    <string name="viewContactDesription">"Visualizar contato"</string>
+    <string name="editContactDescription">"Editar contato"</string>
+    <string name="insertContactDescription">"Criar contato"</string>
+    <string name="searchHint">"Pesquisar contatos"</string>
+    <string name="menu_search">"Pesquisar"</string>
+    <string name="menu_newContact">"Novo contato"</string>
+    <string name="menu_viewContact">"Visualizar contato"</string>
+    <string name="menu_callNumber">"Chamar <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Adicionar aos favoritos"</string>
+    <string name="menu_removeStar">"Remover dos favoritos"</string>
+    <string name="menu_showBarcode">"Mostrar código de barras"</string>
+    <string name="menu_editContact">"Editar contato"</string>
+    <string name="menu_deleteContact">"Excluir contato"</string>
+    <string name="menu_call">"Chamar"</string>
+    <string name="menu_sendSMS">"Enviar SMS/MMS"</string>
+    <string name="menu_sendEmail">"Enviar e-mail"</string>
+    <string name="menu_viewAddress">"Endereço no mapa"</string>
+    <string name="menu_makeDefaultNumber">"Criar número padrão"</string>
+    <string name="deleteConfirmation_title">"Excluir"</string>
+    <string name="deleteConfirmation">"Esse evento será excluído."</string>
+    <string name="menu_done">"Concluído"</string>
+    <string name="menu_doNotSave">"Reverter"</string>
+    <string name="editContact_title_edit">"Editar contato"</string>
+    <string name="editContact_title_insert">"Novo contato"</string>
+    <string name="menu_addItem">"Mais informações"</string>
+    <string name="label_phonetic_name">"Fonética"</string>
+    <string name="label_notes">"Observações"</string>
+    <string name="label_ringtone">"Toque"</string>
+    <string name="ghostData_name">"Nome e sobrenome"</string>
+    <string name="ghostData_phonetic_name">"Nome fonético"</string>
+    <string name="ghostData_company">"Empresa"</string>
+    <string name="ghostData_title">"Posição"</string>
+    <string name="ghostData_im">"Nome no programa de mensagens instantâneas"</string>
+    <string name="ghostData_notes">"Minha observação"</string>
+    <string name="ghostData_phone">"Número de telefone"</string>
+    <string name="ghostData_email">"Endereço de e-mail"</string>
+    <string name="ghostData_postal">"Endereço postal"</string>
+    <string name="invalidContactMessage">"O contato não existe."</string>
+    <string name="pickerNewContactHeader">"Criar novo contato"</string>
+    <string name="selectLabel">"Selecionar marcador"</string>
+    <string name="phoneLabelsGroup">"Telefone"</string>
+    <string name="emailLabelsGroup">"E-mail"</string>
+    <string name="imLabelsGroup">"Mensagem instantânea"</string>
+    <string name="postalLabelsGroup">"Endereço postal"</string>
+    <string name="otherLabelsGroup">"Outros"</string>
+  <string-array name="otherLabels">
+    <item>"Organização"</item>
+    <item>"Observação"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Nenhuma imagem"</string>
+    <string name="photoPickerNotFoundText">"Nenhuma imagem disponível no telefone."</string>
+    <string name="attachToContact">"Ícone de contato"</string>
+    <string name="customLabelPickerTitle">"Personalizar nome do marcador"</string>
+    <string name="menu_displayGroup">"Exibir grupo"</string>
+    <string name="syncGroupPreference">"Editar grupos sincronizados"</string>
+    <string name="importFromSim">"Importar contatos"</string>
+    <string name="send_to_voicemail_checkbox">"Enviar chamadas diretamente para o correio de voz"</string>
+    <string name="send_to_voicemail_view">"As chamadas são enviadas diretamente para o correio de voz."</string>
+    <string name="default_ringtone">"Padrão"</string>
+    <string name="addPicture">"Adicionar ícone"</string>
+    <string name="removePicture">"Remover ícone"</string>
+    <string name="noContacts">"Nenhum contato."</string>
+    <string name="noContactsWithPhoneNumbers">"Nenhum contato com números de telefone."</string>
+    <string name="noFavorites">"Nenhum favorito"</string>
+    <string name="select_group_title">"Grupos"</string>
+    <string name="groupEmpty">"Seu grupo \"<xliff:g id="GROUPNAME">%s</xliff:g>\" está vazio."</string>
+    <string name="showAllGroups">"Todos os contatos"</string>
+    <string name="syncAllGroups">"Sincronizar todos os contatos"</string>
+    <string name="groupNameMyContacts">"Meus contatos"</string>
+    <string name="groupNameWithPhones">"Contatos com números de telefone"</string>
+    <string name="starredInAndroid">"Com estrela no Android"</string>
+    <string name="contactCreatedToast">"Contato criado."</string>
+    <string name="contactSavedToast">"Contato salvo."</string>
+    <string name="listSeparatorCallNumber">"Discar número"</string>
+    <string name="listSeparatorCallNumber_edit">"Números de telefone"</string>
+    <string name="listSeparatorSendSmsMms">"Enviar SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Enviar e-mail"</string>
+    <string name="listSeparatorSendEmail_edit">"Endereços de e-mail"</string>
+    <string name="listSeparatorSendIm">"Enviar mensagem instantânea"</string>
+    <string name="listSeparatorSendIm_edit">"Endereços de bate-papo"</string>
+    <string name="listSeparatorMapAddress">"Endereço no mapa"</string>
+    <string name="listSeparatorMapAddress_edit">"Endereços postais"</string>
+    <string name="listSeparatorOrganizations">"Organizações"</string>
+    <string name="listSeparatorOtherInformation">"Outras informações"</string>
+    <string name="listSeparatorOtherInformation_edit">"Outras opções"</string>
+    <string name="listSeparatorMore_edit">"Mais"</string>
+    <string name="contactsIconLabel">"Contatos"</string>
+    <string name="contactsFavoritesLabel">"Favoritos"</string>
+    <string name="dialerIconLabel">"Discador"</string>
+    <string name="recentCallsIconLabel">"Registro de chamadas"</string>
+    <string name="liveFolderAll">"Todos os contatos"</string>
+    <string name="liveFolderFavorites">"Contatos com estrela"</string>
+    <string name="liveFolderPhone">"Contatos com números de telefone"</string>
+    <string name="menu_sendTextMessage">"Enviar mensagem SMS"</string>
+    <string name="recentCalls_callNumber">"Chamar <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Editar número antes da chamada"</string>
+    <string name="recentCalls_addToContact">"Adicionar aos contatos"</string>
+    <string name="recentCalls_removeFromRecentList">"Remover do registro de chamadas"</string>
+    <string name="recentCalls_deleteAll">"Limpar registro de chamadas"</string>
+    <string name="recentCalls_empty">"O registro de chamadas está vazio."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Correio de voz"</string>
+    <string name="unknown">"Desconhecido"</string>
+    <string name="private_num">"Número privado"</string>
+    <string name="payphone">"Orelhão"</string>
+    <string name="dialerKeyboardHintText">"Use o teclado para discar"</string>
+    <string name="dialerDialpadHintText">"Discar para adicionar uma chamada"</string>
+    <string name="simContacts_emptyLoading">"Carregando do cartão SIM..."</string>
+    <string name="simContacts_title">"Contatos do cartão SIM"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">" Sincronize seus contatos do Google!"</font>" "\n"Após sincronizar para o seu telefone, seus contatos estarão disponíveis em qualquer lugar que você vá."</string>
+    <string name="noContactsHelpText">"Não há nenhum contato."\n\n"Para adicionar contatos, pressione "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e selecione:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Novo contato"</b></font>" para criar um novo contato do início "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contatos"</b></font>" para adicionar do seu cartão SIM "\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Não há nenhum contato."\n\n"Para adicionar contatos, pressione "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e selecione:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Editar grupos sincronizados"</b></font>" para adicionar a partir de uma conta do Google nova ou já existente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contato"</b></font>" para criar um novo contato do início"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contatos"</b></font>" para adicionar contatos do seu cartão SIM "\n</li></string>
+    <string name="seclectSyncGroups_title">"Selecionar grupos para sincronizar"</string>
+    <string name="liveFolder_all_label">"Todos os contatos"</string>
+    <string name="liveFolder_favorites_label">"Com estrela"</string>
+    <string name="liveFolder_phones_label">"Telefones"</string>
+    <string name="dialer_useDtmfDialpad">"Usar teclado multifrequencial"</string>
+    <string name="dialer_returnToInCallScreen">"Retornar para a chamada em espera"</string>
+    <string name="dialer_addAnotherCall">"Adicionar chamada"</string>
+    <string name="callDetailTitle">"Detalhes da chamada"</string>
+    <string name="toast_call_detail_error">"Não foi possível ler os detalhes para a chamada solicitada."</string>
+    <string name="call_type">"Tipo"</string>
+    <string name="type_incoming">"Recebendo chamada"</string>
+    <string name="type_outgoing">"Chamada enviada"</string>
+    <string name="type_missed">"Chamada perdida"</string>
+    <string name="call_time">"Horário"</string>
+    <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g> (<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
+    <string name="call_duration">"Duração"</string>
+    <string name="header_actions">"Ações"</string>
+    <string name="ringtone_spinner">"Toque: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
+    <string name="add_more_items">"Adicionar mais itens"</string>
+    <string name="actionCall">"Chamar <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionEmail">"Enviar e-mail para <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Enviar mensagem de texto para <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"Bater papo usando <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionMap">"Visualizar endereço de <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionIncomingCall">"Chamadas recebidas"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"Será enviado diretamente para o correio de voz"</string>
+    <string name="detailsRingtone">"Definir para <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
+    <string name="callBack">"Retornar chamada"</string>
+    <string name="callAgain">"Chamar novamente"</string>
+    <string name="returnCall">"Retornar chamada"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="favoritesFrquentSeparator">"Frequentemente chamado"</string>
+    <string name="add_contact_dlg_title">"Adicionar contato"</string>
+    <string name="add_contact_dlg_message_fmt">"Adicionar \"<xliff:g id="EMAIL">%s</xliff:g>\" aos contatos?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"Nenhum Cartão SD disponível"</string>
+    <string name="no_sdcard_message">"Nenhum cartão SD detectado"</string>
+    <string name="searching_vcard_title">"Pesquisando VCard"</string>
+    <string name="select_import_type_title">"De onde você gostaria de importar contatos?"</string>
+    <string name="import_from_sim">"Cartão SIM"</string>
+    <string name="import_from_sdcard">"Cartão SD"</string>
+    <string name="import_all_vcard_string">"Importar todos os arquivos do VCard"</string>
+    <string name="import_one_vcard_string">"Importar um arquivo do VCard"</string>
+    <string name="searching_vcard_message">"Procurando dados do VCard no VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Falha na verificação do Cartão SD"</string>
+    <string name="scanning_sdcard_failed_message">"Falha na verificação do Cartão SD"</string>
+    <string name="fail_reason_io_error">"Erro E/S"</string>
+    <string name="fail_reason_vcard_parse_error">"Falha ao analisar o VCard"</string>
+    <string name="fail_reason_no_vcard_file">"Nenhum arquivo de VCard encontrado no Cartão SD"</string>
+    <string name="fail_reason_no_vcard_entry">"Nenhuma entrada válida no VCard foi encontrada para sua seleção"</string>
+    <string name="select_vcard_title">"Selecionar arquivo do VCard"</string>
+    <string name="select_vcard_message">"Selecione um arquivo do VCard para importar"</string>
+    <string name="reading_vcard_title">"Lendo VCard"</string>
+    <string name="reading_vcard_message">"Lendo os arquivos do VCard"</string>
+    <string name="importing_vcard_message">"Importando os dados do VCard"</string>
+    <string name="reading_vcard_failed_title">"A leitura dos dados do VCard falhou"</string>
+    <string name="reading_vcard_failed_message">"Não foi possível ler os dados do VCard"\n"Motivo da falha: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contatos"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> arquivos"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
+</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index d7dae47..ce97eb4 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -16,47 +16,57 @@
 <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="launcherDialer">"Дозвон"</string>
+    <string name="launcherDialer">"Телефон"</string>
     <string name="shortcutContact">"Контакт"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
     <string name="starredList">"Помеченные"</string>
-    <string name="frequentList">"Частые"</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="searchHint">"Поиск контактов"</string>
     <string name="menu_search">"Поиск"</string>
-    <string name="menu_newContact">"Создать контакт"</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_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">"Отправить SMS/MMS"</string>
-    <string name="menu_sendEmail">"Отправить сообщение электронной почты"</string>
+    <string name="menu_sendEmail">"Отправить письмо"</string>
     <string name="menu_viewAddress">"Адрес на карте"</string>
     <string name="menu_makeDefaultNumber">"Сделать номером по умолчанию"</string>
-    <string name="deleteConfirmation_title">"Удаление"</string>
+    <string name="deleteConfirmation_title">"Удалить"</string>
     <string name="deleteConfirmation">"Этот контакт будет удален."</string>
     <string name="menu_done">"Готово"</string>
-    <string name="menu_doNotSave">"Отменить"</string>
+    <string name="menu_doNotSave">"Отменить изменения"</string>
     <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="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="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">"Имя в чате"</string>
     <string name="ghostData_notes">"Мое примечание"</string>
-    <string name="ghostData_phone">"Телефонный номер"</string>
+    <string name="ghostData_phone">"Номер телефона"</string>
     <string name="ghostData_email">"Адрес электронной почты"</string>
     <string name="ghostData_postal">"Почтовый адрес"</string>
     <string name="invalidContactMessage">"Контакт не существует."</string>
@@ -71,101 +81,177 @@
     <item>"Организация"</item>
     <item>"Примечание"</item>
   </string-array>
-    <string name="errorDialogTitle">"Нет изображений"</string>
-    <string name="photoPickerNotFoundText">"На телефоне нет изображений."</string>
+    <string name="errorDialogTitle">"Нет картинок"</string>
+    <string name="photoPickerNotFoundText">"В телефоне нет картинок."</string>
     <string name="attachToContact">"Значок контакта"</string>
-    <string name="customLabelPickerTitle">"Имя персонализированного ярлыка"</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="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="removePicture">"Удалить значок"</string>
     <string name="noContacts">"Нет контактов."</string>
-    <string name="noContactsWithPhoneNumbers">"Нет контактов с телефонными номерами."</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="groupNameWithPhones">"Контакты с номерами телефонов"</string>
     <string name="starredInAndroid">"Помеченные в Android"</string>
     <string name="contactCreatedToast">"Контакт создан."</string>
     <string name="contactSavedToast">"Контакт сохранен."</string>
     <string name="listSeparatorCallNumber">"Набрать номер"</string>
     <string name="listSeparatorCallNumber_edit">"Номера телефонов"</string>
     <string name="listSeparatorSendSmsMms">"Отправить SMS/MMS"</string>
-    <string name="listSeparatorSendEmail">"Отправить сообщение электронной почты"</string>
+    <string name="listSeparatorSendEmail">"Отправить письмо"</string>
     <string name="listSeparatorSendEmail_edit">"Адреса электронной почты"</string>
     <string name="listSeparatorSendIm">"Отправить мгновенное сообщение"</string>
-    <string name="listSeparatorSendIm_edit">"Адреса чата"</string>
+    <string name="listSeparatorSendIm_edit">"Адреса в чате"</string>
     <string name="listSeparatorMapAddress">"Адрес на карте"</string>
     <string name="listSeparatorMapAddress_edit">"Почтовые адреса"</string>
     <string name="listSeparatorOrganizations">"Организации"</string>
-    <string name="listSeparatorOtherInformation">"Другие сведения"</string>
+    <string name="listSeparatorOtherInformation">"Другая информация"</string>
     <string name="listSeparatorOtherInformation_edit">"Другие параметры"</string>
-    <string name="listSeparatorMore_edit">"Дополнительно"</string>
+    <string name="listSeparatorMore_edit">"Добавить"</string>
     <string name="contactsIconLabel">"Контакты"</string>
     <string name="contactsFavoritesLabel">"Избранные"</string>
-    <string name="dialerIconLabel">"Набор номеров"</string>
-    <string name="recentCallsIconLabel">"Журнал вызовов"</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">"Отправить сообщение SMS"</string>
-    <string name="recentCalls_callNumber">"Позвонить: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_sendTextMessage">"Отправить SMS-сообщение"</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="recentCalls_removeFromRecentList">"Удалить из списка вызовов"</string>
+    <string name="recentCalls_deleteAll">"Очистить список вызовов"</string>
+    <string name="recentCalls_empty">"Список вызовов пуст."</string>
     <string name="imei">"IMEI"</string>
     <string name="voicemail">"Голосовая почта"</string>
     <string name="unknown">"Неизвестно"</string>
     <string name="private_num">"Частный номер"</string>
     <string name="payphone">"Телефон-автомат"</string>
-    <string name="dialerKeyboardHintText">"Для набора воспользуйтесь клавиатурой"</string>
+    <string name="dialerKeyboardHintText">"Наберите номер с клавиатуры"</string>
     <string name="dialerDialpadHintText">"Наберите номер, чтобы добавить вызов"</string>
-    <string name="simContacts_emptyLoading">"Идет загрузка с SIM-карты…"</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<li><font fgcolor="#ffffffff"><b>"Создать контакт"</b></font>" – добавление нового контакта из рабочей области;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт контактов"</b></font>" – добавление контактов с SIM-карты."\n</li></string>
-    <string name="noContactsHelpTextWithSync">"Контакты отсутствуют."\n\n"Чтобы добавить контакты, нажмите кнопку "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Редактировать группы синхронизации"</b></font>" – добавление контакта из нового или существующего аккаунта Google;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Создать контакт"</b></font>" – создание абсолютно нового контакта;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортировать контакты"</b></font>" – добавление контактов, содержащихся на SIM-карте."\n</li></string>
-    <string name="seclectSyncGroups_title">"Выбор групп для синхронизации"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Синхронизируйте контакты Google."</font>" "\n"После синхронизации с телефоном ваши контакты будут доступны отовсюду."</string>
+    <string name="noContactsHelpText">"У вас нет контактов."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>", чтобы создать новый контакт с нуля"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортировать контакты"</b></font>", чтобы добавить контакты с SIM-карты"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"У вас нет контактов."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Изменить группы синхронизации"</b></font>", чтобы добавить контакт из имеющегося или нового аккаунта Google"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>", чтобы создать новый контакт с нуля"\n</li>" "\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>
-    <string name="callDetailTitle">"Сведения о звонке"</string>
-    <string name="toast_call_detail_error">"Не удается считать сведения об указанном звонке."</string>
+    <string name="dialer_useDtmfDialpad">"Использовать тональный набор"</string>
+    <string name="dialer_returnToInCallScreen">"Вернуться к ожидающему вызову"</string>
+    <string name="dialer_addAnotherCall">"Добавить вызов"</string>
+    <string name="callDetailTitle">"Сведения о вызове"</string>
+    <string name="toast_call_detail_error">"Не удается получить сведения о вызове."</string>
     <string name="call_type">"Тип"</string>
-    <string name="type_incoming">"Входящий звонок"</string>
-    <string name="type_outgoing">"Исходящий звонок"</string>
-    <string name="type_missed">"Пропущенный звонок"</string>
+    <string name="type_incoming">"Входящий вызов"</string>
+    <string name="type_outgoing">"Исходящий вызов"</string>
+    <string name="type_missed">"Пропущенный вызов"</string>
     <string name="call_time">"Время"</string>
     <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g> (<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
     <string name="call_duration">"Продолжительность"</string>
     <string name="header_actions">"Действия"</string>
     <string name="ringtone_spinner">"Мелодия: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
-    <string name="add_more_items">"Добавление контактов"</string>
-    <string name="actionCall">"Позвонить по номеру: <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionEmail">"Отправить электронное сообщение на адрес: <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionText">"Отправить текстовое сообщение на номер: <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionChat">"Общаться в чате с помощью: <xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionMap">"Просмотр адреса: <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="add_more_items">"Добавить сведения"</string>
+    <string name="actionCall">"Вызов: <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionEmail">"Электронная почта <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Отправить текстовое сообщение <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"Начать чат в <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionMap">"Адрес <xliff:g id="TYPE">%s</xliff:g> на карте"</string>
     <string name="actionIncomingCall">"Входящие вызовы"</string>
-    <string name="detailIncomingCallsGoToVoicemail">"Переадресация в голосовую почту"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"Будут направляться в голосовую почту"</string>
     <string name="detailsRingtone">"Выбрано: <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
-    <string name="callBack">"Перезвонить"</string>
+    <string name="callBack">"Позвонить"</string>
     <string name="callAgain">"Позвонить снова"</string>
     <string name="returnCall">"Перезвонить"</string>
-    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> с."</string>
-    <string name="favoritesFrquentSeparator">"Часто набираемые"</string>
-    <string name="add_contact_dlg_title">"Добавление контакта"</string>
-    <string name="add_contact_dlg_message_fmt">"Добавить адрес <xliff:g id="EMAIL">%s</xliff:g> в·контакты?"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g>:<xliff:g id="SECONDS">%s</xliff:g>"</string>
+    <string name="favoritesFrquentSeparator">"Часто вызываемые"</string>
+    <string name="add_contact_dlg_title">"Добление контакта"</string>
+    <string name="add_contact_dlg_message_fmt">"Добавить в контакты <xliff:g id="EMAIL">%s</xliff:g>?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"Нет SD-карты"</string>
+    <string name="no_sdcard_message">"SD-карта не обнаружена"</string>
+    <string name="searching_vcard_title">"Поиск VCard"</string>
+    <string name="select_import_type_title">"Откуда импортировать контакты?"</string>
+    <string name="import_from_sim">"SIM-карта"</string>
+    <string name="import_from_sdcard">"SD-карта"</string>
+    <string name="import_all_vcard_string">"Импорт всех файлов VCard"</string>
+    <string name="import_one_vcard_string">"Импортировать один файл VCard"</string>
+    <string name="searching_vcard_message">"Поиск данных VCard в файле VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Не удалось сканировать SD-карту"</string>
+    <string name="scanning_sdcard_failed_message">"Не удалось сканировать SD-карту"</string>
+    <string name="fail_reason_io_error">"Ошибка ввода-вывода"</string>
+    <string name="fail_reason_vcard_parse_error">"Не удается выполнить синтаксический анализ VCard"</string>
+    <string name="fail_reason_no_vcard_file">"На SD-карте не найдены файлы VCard"</string>
+    <string name="fail_reason_no_vcard_entry">"Нет подходящих записей VCard"</string>
+    <string name="select_vcard_title">"Выбор файла VCard"</string>
+    <string name="select_vcard_message">"Выберите файл VCard для импорта"</string>
+    <string name="reading_vcard_title">"Чтение VCard"</string>
+    <string name="reading_vcard_message">"Чтение файлов VCard"</string>
+    <string name="importing_vcard_message">"Импорт данных VCard"</string>
+    <string name="reading_vcard_failed_title">"Не удается считать данные VCard"</string>
+    <string name="reading_vcard_failed_message">"Не удается прочитать данные VCard"\n"Причина: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"Контакт <xliff:g id="CURRENT_NUMBER">%s</xliff:g> из <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+    <string name="reading_vcard_files">"Файл <xliff:g id="CURRENT_NUMBER">%s</xliff:g> из <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
new file mode 100644
index 0000000..340b177
--- /dev/null
+++ b/res/values-sv/strings.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Kontakter"</string>
+    <string name="launcherDialer">"Samtal"</string>
+    <string name="shortcutContact">"Kontakt"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
+    <string name="starredList">"Stjärnmärkta"</string>
+    <string name="frequentList">"Ofta"</string>
+    <string name="strequentList">"Favoriter"</string>
+    <string name="viewContactTitle">"Kontaktuppgifter"</string>
+    <string name="viewContactDesription">"Visa kontakt"</string>
+    <string name="editContactDescription">"Redigera kontakt"</string>
+    <string name="insertContactDescription">"Skapa kontakt"</string>
+    <string name="searchHint">"Sök efter kontakter"</string>
+    <string name="menu_search">"Sök"</string>
+    <string name="menu_newContact">"Ny kontakt"</string>
+    <string name="menu_viewContact">"Visa kontakt"</string>
+    <string name="menu_callNumber">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_addStar">"Lägg till i Favoriter"</string>
+    <string name="menu_removeStar">"Ta bort från Favoriter"</string>
+    <string name="menu_showBarcode">"Visa streckkod"</string>
+    <string name="menu_editContact">"Redigera kontakt"</string>
+    <string name="menu_deleteContact">"Ta bort kontakt"</string>
+    <string name="menu_call">"Ring"</string>
+    <string name="menu_sendSMS">"Skicka SMS/MMS"</string>
+    <string name="menu_sendEmail">"Skicka e-post"</string>
+    <string name="menu_viewAddress">"Visa adress på karta"</string>
+    <string name="menu_makeDefaultNumber">"Använd som standardnummer"</string>
+    <string name="deleteConfirmation_title">"Ta bort"</string>
+    <string name="deleteConfirmation">"Kontakten kommer att tas bort."</string>
+    <string name="menu_done">"Färdig"</string>
+    <string name="menu_doNotSave">"Återgå"</string>
+    <string name="editContact_title_edit">"Redigera kontakt"</string>
+    <string name="editContact_title_insert">"Ny kontakt"</string>
+    <string name="menu_addItem">"Mer info"</string>
+    <string name="label_phonetic_name">"Fonetiskt"</string>
+    <string name="label_notes">"Anteckningar"</string>
+    <string name="label_ringtone">"Ringsignal"</string>
+    <string name="ghostData_name">"För- och efternamn"</string>
+    <string name="ghostData_phonetic_name">"Fonetiskt namn"</string>
+    <string name="ghostData_company">"Företag"</string>
+    <string name="ghostData_title">"Position"</string>
+    <string name="ghostData_im">"Chattnamn"</string>
+    <string name="ghostData_notes">"Min anteckning"</string>
+    <string name="ghostData_phone">"Telefonnummer"</string>
+    <string name="ghostData_email">"E-postadress"</string>
+    <string name="ghostData_postal">"Postadress"</string>
+    <string name="invalidContactMessage">"Kontakten finns inte."</string>
+    <string name="pickerNewContactHeader">"Skapa ny kontakt"</string>
+    <string name="selectLabel">"Välj etikett"</string>
+    <string name="phoneLabelsGroup">"Telefon"</string>
+    <string name="emailLabelsGroup">"E-post"</string>
+    <string name="imLabelsGroup">"Chatt"</string>
+    <string name="postalLabelsGroup">"Postadress"</string>
+    <string name="otherLabelsGroup">"Övrigt"</string>
+  <string-array name="otherLabels">
+    <item>"Organisation"</item>
+    <item>"Anteckning"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Inga bilder"</string>
+    <string name="photoPickerNotFoundText">"Det finns inga bilder på telefonen."</string>
+    <string name="attachToContact">"Kontaktikon"</string>
+    <string name="customLabelPickerTitle">"Anpassat etikettsnamn"</string>
+    <string name="menu_displayGroup">"Visa grupper"</string>
+    <string name="syncGroupPreference">"Redigera synkgrupper"</string>
+    <string name="importFromSim">"Importera kontakter"</string>
+    <string name="send_to_voicemail_checkbox">"Skicka samtal direkt till röstbrevlåda"</string>
+    <string name="send_to_voicemail_view">"Samtal skickas direkt till röstbrevlådan."</string>
+    <string name="default_ringtone">"Standardinställning"</string>
+    <string name="addPicture">"Lägg till ikon"</string>
+    <string name="removePicture">"Ta bort ikon"</string>
+    <string name="noContacts">"Inga kontakter."</string>
+    <string name="noContactsWithPhoneNumbers">"Inga kontakter med telefonnummer."</string>
+    <string name="noFavorites">"Inga favoriter."</string>
+    <string name="select_group_title">"Grupper"</string>
+    <string name="groupEmpty">"Din grupp, <xliff:g id="GROUPNAME">%s</xliff:g>, är tom."</string>
+    <string name="showAllGroups">"Alla kontakter"</string>
+    <string name="syncAllGroups">"Synka alla kontakter"</string>
+    <string name="groupNameMyContacts">"Mina kontakter"</string>
+    <string name="groupNameWithPhones">"Kontakter med telefonnummer"</string>
+    <string name="starredInAndroid">"Stjärnmärkta i Android"</string>
+    <string name="contactCreatedToast">"Kontakt skapad."</string>
+    <string name="contactSavedToast">"Kontakt sparad."</string>
+    <string name="listSeparatorCallNumber">"Ring upp"</string>
+    <string name="listSeparatorCallNumber_edit">"Telefonnummer"</string>
+    <string name="listSeparatorSendSmsMms">"Skicka SMS/MMS"</string>
+    <string name="listSeparatorSendEmail">"Skicka e-post"</string>
+    <string name="listSeparatorSendEmail_edit">"E-postadresser"</string>
+    <string name="listSeparatorSendIm">"Skicka snabbmeddelande"</string>
+    <string name="listSeparatorSendIm_edit">"Chattadresser"</string>
+    <string name="listSeparatorMapAddress">"Visa adress på karta"</string>
+    <string name="listSeparatorMapAddress_edit">"Postadress"</string>
+    <string name="listSeparatorOrganizations">"Organisationer"</string>
+    <string name="listSeparatorOtherInformation">"Övrig information"</string>
+    <string name="listSeparatorOtherInformation_edit">"Övriga alternativ"</string>
+    <string name="listSeparatorMore_edit">"Mer"</string>
+    <string name="contactsIconLabel">"Kontakter"</string>
+    <string name="contactsFavoritesLabel">"Favoriter"</string>
+    <string name="dialerIconLabel">"Samtal"</string>
+    <string name="recentCallsIconLabel">"Samtalshistorik"</string>
+    <string name="liveFolderAll">"Alla kontakter"</string>
+    <string name="liveFolderFavorites">"Stjärnmärkta kontakter"</string>
+    <string name="liveFolderPhone">"Kontakter med telefonnummer"</string>
+    <string name="menu_sendTextMessage">"Skicka SMS"</string>
+    <string name="recentCalls_callNumber">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Redigera nummer före samtal"</string>
+    <string name="recentCalls_addToContact">"Lägg till i Kontakter"</string>
+    <string name="recentCalls_removeFromRecentList">"Ta bort från samtalshistorik"</string>
+    <string name="recentCalls_deleteAll">"Rensa samtalshistorik"</string>
+    <string name="recentCalls_empty">"Samtalshistoriken är tom."</string>
+    <string name="imei">"IMEI-kod"</string>
+    <string name="voicemail">"Röstbrevlåda"</string>
+    <string name="unknown">"Okänd"</string>
+    <string name="private_num">"Privat nummer"</string>
+    <string name="payphone">"Telefonautomat"</string>
+    <string name="dialerKeyboardHintText">"Använd tangentbordet när du ringer"</string>
+    <string name="dialerDialpadHintText">"Ring om du vill lägga till ett samtal"</string>
+    <string name="simContacts_emptyLoading">"Läser in från SIM-kort…"</string>
+    <string name="simContacts_title">"Kontakter från SIM-kort"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synka dina Google-kontakter!"</font>" "\n"När du har synkat med telefonen kan du använda dina kontakter var du än är."</string>
+    <string name="noContactsHelpText">"Du har inga kontakter."\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och väljer:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" om du vill skapa en helt ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera kontakter"</b></font>" om du vill lägga till kontakter från SIM-kortet"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Du har inga kontakter."\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och väljer:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Redigera synkgrupper"</b></font>" om du vill lägga till från ett nytt eller befintligt Google-konto"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" om du vill lägga till en helt ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera kontakter"</b></font>" om du vill lägga till kontakter från SIM-kortet"\n</li></string>
+    <string name="seclectSyncGroups_title">"Välj grupper att synka"</string>
+    <string name="liveFolder_all_label">"Alla kontakter"</string>
+    <string name="liveFolder_favorites_label">"Stjärnmärkt"</string>
+    <string name="liveFolder_phones_label">"Telefoner"</string>
+    <string name="dialer_useDtmfDialpad">"Använda tonvalstelefon"</string>
+    <string name="dialer_returnToInCallScreen">"Återgå till pågående samtal"</string>
+    <string name="dialer_addAnotherCall">"Lägg t. samt."</string>
+    <string name="callDetailTitle">"Samtalsinfo"</string>
+    <string name="toast_call_detail_error">"Det gick inte att läsa information om samtalet."</string>
+    <string name="call_type">"Typ"</string>
+    <string name="type_incoming">"Inkommande samtal"</string>
+    <string name="type_outgoing">"Utgående samtal"</string>
+    <string name="type_missed">"Missat samtal"</string>
+    <string name="call_time">"Tid"</string>
+    <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g> (<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
+    <string name="call_duration">"Längd"</string>
+    <string name="header_actions">"Aktiviteter"</string>
+    <string name="ringtone_spinner">"Ringsignal: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
+    <string name="add_more_items">"Lägg till fler objekt"</string>
+    <string name="actionCall">"Ring <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionEmail">"Skicka e-post till <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Skicka SMS till <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"Chatta med <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionMap">"Visa adress, <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionIncomingCall">"Inkommande samtal"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"Skickas direkt till röstbrevlådan"</string>
+    <string name="detailsRingtone">"Inställd på <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
+    <string name="callBack">"Ring upp"</string>
+    <string name="callAgain">"Ring igen"</string>
+    <string name="returnCall">"Ring upp"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> minuter <xliff:g id="SECONDS">%s</xliff:g> sekunder"</string>
+    <string name="favoritesFrquentSeparator">"Ringer ofta"</string>
+    <string name="add_contact_dlg_title">"Lägg till kontakt"</string>
+    <string name="add_contact_dlg_message_fmt">"Vill du lägga till <xliff:g id="EMAIL">%s</xliff:g> i Kontakter?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"Inget SD-kort"</string>
+    <string name="no_sdcard_message">"Inget SD-kort hittades"</string>
+    <string name="searching_vcard_title">"Söker efter VCard"</string>
+    <string name="select_import_type_title">"Varifrån vill du importera dina kontakter?"</string>
+    <string name="import_from_sim">"SIM-kort"</string>
+    <string name="import_from_sdcard">"SD-kort"</string>
+    <string name="import_all_vcard_string">"Importera alla VCard-filer"</string>
+    <string name="import_one_vcard_string">"Importera en VCard-fil"</string>
+    <string name="searching_vcard_message">"Söker efter VCard-data på VCard"</string>
+    <string name="scanning_sdcard_failed_title">"Det gick inte att läsa SD-kort"</string>
+    <string name="scanning_sdcard_failed_message">"Det gick inte att skanna SD-kort"</string>
+    <string name="fail_reason_io_error">"I/O-fel"</string>
+    <string name="fail_reason_vcard_parse_error">"Det gick inte att analysera VCard"</string>
+    <string name="fail_reason_no_vcard_file">"Ingen VCard-fil hittades på SD-kortet"</string>
+    <string name="fail_reason_no_vcard_entry">"Det finns ingen VCard-post i den valda filen"</string>
+    <string name="select_vcard_title">"Välj VCard-fil"</string>
+    <string name="select_vcard_message">"Välj en VCard-fil att importera"</string>
+    <string name="reading_vcard_title">"Läser VCard"</string>
+    <string name="reading_vcard_message">"Läser VCard-filer"</string>
+    <string name="importing_vcard_message">"Importera VCard-data"</string>
+    <string name="reading_vcard_failed_title">"Det gick inte att läsa VCard-data"</string>
+    <string name="reading_vcard_failed_message">"Det gick inte att läsa VCard-data"\n"Anledning: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
+    <string name="reading_vcard_contacts">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> av <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakter"</string>
+    <string name="reading_vcard_files">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> av <xliff:g id="TOTAL_NUMBER">%s</xliff:g> filer"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
new file mode 100644
index 0000000..ccd7f60
--- /dev/null
+++ b/res/values-tr/strings.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="contactsList">"Kişiler"</string>
+    <string name="launcherDialer">"Çevirici"</string>
+    <string name="shortcutContact">"Kişi"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
+    <string name="starredList">"Yıldızlı"</string>
+    <string name="frequentList">"Sık sık"</string>
+    <string name="strequentList">"Sık Kullanılanlar"</string>
+    <string name="viewContactTitle">"Kişi ayrıntıları"</string>
+    <string name="viewContactDesription">"Kişiyi görüntüle"</string>
+    <string name="editContactDescription">"Kişiyi düzenle"</string>
+    <string name="insertContactDescription">"Kişi oluştur"</string>
+    <string name="searchHint">"Kişileri ara"</string>
+    <string name="menu_search">"Ara"</string>
+    <string name="menu_newContact">"Yeni kişi"</string>
+    <string name="menu_viewContact">"Kişiyi görüntüle"</string>
+    <string name="menu_callNumber">"<xliff:g id="NAME">%s</xliff:g> adlı kişiyi ara"</string>
+    <string name="menu_addStar">"Sık kullanılanlara ekle"</string>
+    <string name="menu_removeStar">"Sık kullanılanlardan kaldır"</string>
+    <string name="menu_showBarcode">"Barkodu göster"</string>
+    <string name="menu_editContact">"Kişiyi düzenle"</string>
+    <string name="menu_deleteContact">"Kişiyi sil"</string>
+    <string name="menu_call">"Çağrı"</string>
+    <string name="menu_sendSMS">"SMS/MMS gönder"</string>
+    <string name="menu_sendEmail">"E-posta gönder"</string>
+    <string name="menu_viewAddress">"Adresi haritada göster"</string>
+    <string name="menu_makeDefaultNumber">"Varsayılan numara yap"</string>
+    <string name="deleteConfirmation_title">"Sil"</string>
+    <string name="deleteConfirmation">"Bu kişi silinecek."</string>
+    <string name="menu_done">"Bitti"</string>
+    <string name="menu_doNotSave">"Geri Döndür"</string>
+    <string name="editContact_title_edit">"Kişiyi düzenle"</string>
+    <string name="editContact_title_insert">"Yeni kişi"</string>
+    <string name="menu_addItem">"Daha fazla bilgi"</string>
+    <string name="label_phonetic_name">"Fonetik"</string>
+    <string name="label_notes">"Notlar"</string>
+    <string name="label_ringtone">"Zil sesi"</string>
+    <string name="ghostData_name">"İlk ve Son"</string>
+    <string name="ghostData_phonetic_name">"Fonetik adı"</string>
+    <string name="ghostData_company">"Şirket"</string>
+    <string name="ghostData_title">"Konum"</string>
+    <string name="ghostData_im">"IM adı"</string>
+    <string name="ghostData_notes">"Notum"</string>
+    <string name="ghostData_phone">"Telefon numarası"</string>
+    <string name="ghostData_email">"E-posta adresi"</string>
+    <string name="ghostData_postal">"Posta adresi"</string>
+    <string name="invalidContactMessage">"Kişi mevcut değil."</string>
+    <string name="pickerNewContactHeader">"Yeni kişi oluştur"</string>
+    <string name="selectLabel">"Etiketi seç"</string>
+    <string name="phoneLabelsGroup">"Telefon"</string>
+    <string name="emailLabelsGroup">"E-posta"</string>
+    <string name="imLabelsGroup">"IM"</string>
+    <string name="postalLabelsGroup">"Posta adresi"</string>
+    <string name="otherLabelsGroup">"Diğer"</string>
+  <string-array name="otherLabels">
+    <item>"Kuruluş"</item>
+    <item>"Not"</item>
+  </string-array>
+    <string name="errorDialogTitle">"Resim yok"</string>
+    <string name="photoPickerNotFoundText">"Telefonda hiçbir resim yok."</string>
+    <string name="attachToContact">"Kişi simgesi"</string>
+    <string name="customLabelPickerTitle">"Özel etiket adı"</string>
+    <string name="menu_displayGroup">"Grubu görüntüle"</string>
+    <string name="syncGroupPreference">"Senk. Grupları düzenle"</string>
+    <string name="importFromSim">"Kişileri içe aktar"</string>
+    <string name="send_to_voicemail_checkbox">"Çağrıları doğrudan sesli mesaja gönder"</string>
+    <string name="send_to_voicemail_view">"Aramalar doğrudan sesli mesaja gönderildi."</string>
+    <string name="default_ringtone">"Varsayılan"</string>
+    <string name="addPicture">"Simge ekle"</string>
+    <string name="removePicture">"Simgeyi kaldır"</string>
+    <string name="noContacts">"Hiçbir kişi yok."</string>
+    <string name="noContactsWithPhoneNumbers">"Telefon numarası olan hiçbir kişi yok."</string>
+    <string name="noFavorites">"Sık kullanılan yok."</string>
+    <string name="select_group_title">"Gruplar"</string>
+    <string name="groupEmpty">"\"<xliff:g id="GROUPNAME">%s</xliff:g>\" grubunuz boş."</string>
+    <string name="showAllGroups">"Tüm kişiler"</string>
+    <string name="syncAllGroups">"Tüm kişileri senkronize et"</string>
+    <string name="groupNameMyContacts">"Kişilerim"</string>
+    <string name="groupNameWithPhones">"Telefon numarası olan kişiler"</string>
+    <string name="starredInAndroid">"Android\'de yıldızlı"</string>
+    <string name="contactCreatedToast">"Kişi oluşturuldu."</string>
+    <string name="contactSavedToast">"Kişi kaydedildi."</string>
+    <string name="listSeparatorCallNumber">"Numarayı çevir"</string>
+    <string name="listSeparatorCallNumber_edit">"Telefon numaraları"</string>
+    <string name="listSeparatorSendSmsMms">"SMS/MMS gönder"</string>
+    <string name="listSeparatorSendEmail">"E-posta gönder"</string>
+    <string name="listSeparatorSendEmail_edit">"E-posta adresleri"</string>
+    <string name="listSeparatorSendIm">"Anlık ileti gönder"</string>
+    <string name="listSeparatorSendIm_edit">"Sohbet adresleri"</string>
+    <string name="listSeparatorMapAddress">"Adresi haritada göster"</string>
+    <string name="listSeparatorMapAddress_edit">"Posta adresleri"</string>
+    <string name="listSeparatorOrganizations">"Kuruluşlar"</string>
+    <string name="listSeparatorOtherInformation">"Diğer bilgiler"</string>
+    <string name="listSeparatorOtherInformation_edit">"Diğer seçenekler"</string>
+    <string name="listSeparatorMore_edit">"Diğer"</string>
+    <string name="contactsIconLabel">"Kişiler"</string>
+    <string name="contactsFavoritesLabel">"Sık Kullanılanlar"</string>
+    <string name="dialerIconLabel">"Çevirici"</string>
+    <string name="recentCallsIconLabel">"Çağrı kaydı"</string>
+    <string name="liveFolderAll">"Tüm kişiler"</string>
+    <string name="liveFolderFavorites">"Yıldızlı kişiler"</string>
+    <string name="liveFolderPhone">"Telefon numarası olan kişiler"</string>
+    <string name="menu_sendTextMessage">"SMS iletisi gönder"</string>
+    <string name="recentCalls_callNumber">"<xliff:g id="NAME">%s</xliff:g> adlı kişiyi ara"</string>
+    <string name="recentCalls_editNumberBeforeCall">"Aramadan önce numarayı düzenle"</string>
+    <string name="recentCalls_addToContact">"Kişilere ekle"</string>
+    <string name="recentCalls_removeFromRecentList">"Çağrı kaydından kaldır"</string>
+    <string name="recentCalls_deleteAll">"Çağrı kaydını temizle"</string>
+    <string name="recentCalls_empty">"Çağrı kaydı boş."</string>
+    <string name="imei">"IMEI"</string>
+    <string name="voicemail">"Sesli Mesaj"</string>
+    <string name="unknown">"Bilinmiyor"</string>
+    <string name="private_num">"Özel numara"</string>
+    <string name="payphone">"Ankesörlü telefon"</string>
+    <string name="dialerKeyboardHintText">"Çevirmek için klavyeyi kullan"</string>
+    <string name="dialerDialpadHintText">"Arama eklemek için çevir"</string>
+    <string name="simContacts_emptyLoading">"SIM karttan yükleniyor..."</string>
+    <string name="simContacts_title">"SIM kart kişileri"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Google kişilerinizi senkronize edin!"</font>" "\n"Telefonunuzu senkronize ettikten sonra, kişilerinize gittiğiniz her yerden ulaşabilirsiniz."</string>
+    <string name="noContactsHelpText">"Hiçbir kişiye sahip değilsiniz."\n\n"Kişi eklemek için "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye basın ve şunu seçin:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kişileri içe aktar"</b></font>" (kişileri SIM kartınızdan almak için)"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Hiçbir kişiniz yok."\n\n"Kişi eklemek için "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye basın ve şunu seçin:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Senkronize grupları düzenle"</b></font>" (yeni veya mevcut bir Google hesabından eklemek için )"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kişileri içe aktar"</b></font>" (kişileri SIM kartınızdan eklemek için)"\n</li></string>
+    <string name="seclectSyncGroups_title">"Senkronize edilecek grupları seç"</string>
+    <string name="liveFolder_all_label">"Tüm Kişiler"</string>
+    <string name="liveFolder_favorites_label">"Yıldızlı"</string>
+    <string name="liveFolder_phones_label">"Telefonlar"</string>
+    <string name="dialer_useDtmfDialpad">"Telefon tuş takımını kullan"</string>
+    <string name="dialer_returnToInCallScreen">"Çağrıya dön"</string>
+    <string name="dialer_addAnotherCall">"Çağrı ekle"</string>
+    <string name="callDetailTitle">"Çağrı ayrıntıları"</string>
+    <string name="toast_call_detail_error">"İstenen çağrı için ayrıntılar okunamadı."</string>
+    <string name="call_type">"Tür"</string>
+    <string name="type_incoming">"Gelen çağrı"</string>
+    <string name="type_outgoing">"Giden çağrı"</string>
+    <string name="type_missed">"Cevapsız çağrı"</string>
+    <string name="call_time">"Saat"</string>
+    <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g> (<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
+    <string name="call_duration">"Süre"</string>
+    <string name="header_actions">"İşlemler"</string>
+    <string name="ringtone_spinner">"Zil sesi: <xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
+    <string name="add_more_items">"Daha fazla öğe ekle"</string>
+    <string name="actionCall">"Şunu ara: <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionEmail">"E-posta <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"Metin <xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"<xliff:g id="TYPE">%s</xliff:g> kullanarak sohbet et"</string>
+    <string name="actionMap">"<xliff:g id="TYPE">%s</xliff:g> adresini görüntüle"</string>
+    <string name="actionIncomingCall">"Gelen çağrılar"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"Doğrudan sesli mesaja gönderilecek"</string>
+    <string name="detailsRingtone">"<xliff:g id="RINGTONE_NAME">%s</xliff:g> olarak ayarla"</string>
+    <string name="callBack">"Tekrar ara"</string>
+    <string name="callAgain">"Tekrar ara"</string>
+    <string name="returnCall">"Geri ara"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> dak <xliff:g id="SECONDS">%s</xliff:g> sn"</string>
+    <string name="favoritesFrquentSeparator">"Sık aranan"</string>
+    <string name="add_contact_dlg_title">"Kişi Ekle"</string>
+    <string name="add_contact_dlg_message_fmt">"\"<xliff:g id="EMAIL">%s</xliff:g>\" adresi kişilere eklensin mi?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"SD Kart yok"</string>
+    <string name="no_sdcard_message">"Hiçbir SD Kart tespit edilmedi"</string>
+    <string name="searching_vcard_title">"VCard aranıyor"</string>
+    <string name="select_import_type_title">"Kişilerin nereden içe aktarılmasını istiyorsunuz?"</string>
+    <string name="import_from_sim">"SIM Kart"</string>
+    <string name="import_from_sdcard">"SD Kart"</string>
+    <string name="import_all_vcard_string">"Tüm VCard dosyalarını içe aktar"</string>
+    <string name="import_one_vcard_string">"Bir VCard dosyası içe aktar"</string>
+    <string name="searching_vcard_message">"VCard üzerinde VCard verileri aranıyor"</string>
+    <string name="scanning_sdcard_failed_title">"SD kartın taranması başarısız oldu"</string>
+    <string name="scanning_sdcard_failed_message">"SD kartın taranması başarısız oldu"</string>
+    <string name="fail_reason_io_error">"G/Ç Hatası"</string>
+    <string name="fail_reason_vcard_parse_error">"VCard ayrıştırma başarısız"</string>
+    <string name="fail_reason_no_vcard_file">"SD Kartta hiçbir VCard dosyası bulunamadı"</string>
+    <string name="fail_reason_no_vcard_entry">"Seçiminiz için geçerli VCard kaydı bulunamadı"</string>
+    <string name="select_vcard_title">"VCard dosyasını seç"</string>
+    <string name="select_vcard_message">"Lütfen içe aktarılacak bir VCard dosyası seçin"</string>
+    <string name="reading_vcard_title">"VCard okunuyor"</string>
+    <string name="reading_vcard_message">"VCard dosyaları okunuyor"</string>
+    <string name="importing_vcard_message">"VCard verileri içe aktarılıyor"</string>
+    <string name="reading_vcard_failed_title">"VCard verilerinin okunması başarısız oldu"</string>
+    <string name="reading_vcard_failed_message">"VCard verileri okunamadı"\n"Sorunun nedeni: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
+    <string name="reading_vcard_contacts">"Toplam <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kişiden <xliff:g id="CURRENT_NUMBER">%s</xliff:g>. kişi"</string>
+    <string name="reading_vcard_files">"toplam <xliff:g id="TOTAL_NUMBER">%s</xliff:g> dosyadan <xliff:g id="CURRENT_NUMBER">%s</xliff:g>. dosya"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index d8dcd42..d35e83f 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -18,20 +18,30 @@
     <string name="contactsList">"联系人"</string>
     <string name="launcherDialer">"拨号"</string>
     <string name="shortcutContact">"联系人"</string>
+    <!-- no translation found for shortcutDialContact (7165340343023469996) -->
+    <skip />
+    <!-- no translation found for shortcutMessageContact (3025782962770298900) -->
+    <skip />
+    <!-- no translation found for shortcutActivityTitle (6642877210643565436) -->
+    <skip />
+    <!-- no translation found for callShortcutActivityTitle (6065749861423648991) -->
+    <skip />
+    <!-- no translation found for messageShortcutActivityTitle (3084542316620335911) -->
+    <skip />
     <string name="starredList">"已加星标"</string>
-    <string name="frequentList">"经常"</string>
-    <string name="strequentList">"收藏夹"</string>
-    <string name="viewContactTitle">"联系人详细信息"</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_search">"搜索"</string>
-    <string name="menu_newContact">"添加联系人"</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_addStar">"添加到收藏"</string>
+    <string name="menu_removeStar">"从收藏删除"</string>
     <string name="menu_showBarcode">"显示条形码"</string>
     <string name="menu_editContact">"编辑联系人"</string>
     <string name="menu_deleteContact">"删除联系人"</string>
@@ -41,62 +51,61 @@
     <string name="menu_viewAddress">"地图地址"</string>
     <string name="menu_makeDefaultNumber">"设置默认号码"</string>
     <string name="deleteConfirmation_title">"删除"</string>
-    <string name="deleteConfirmation">"会删除此联系人。"</string>
+    <string name="deleteConfirmation">"将会删除此联系人。"</string>
     <string name="menu_done">"完成"</string>
     <string name="menu_doNotSave">"还原"</string>
     <string name="editContact_title_edit">"编辑联系人"</string>
-    <string name="editContact_title_insert">"添加联系人"</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_name">"姓名"</string>
+    <string name="ghostData_phonetic_name">"姓名拼音"</string>
     <string name="ghostData_company">"公司"</string>
-    <string name="ghostData_title">"位置"</string>
-    <string name="ghostData_im">"即时消息名称"</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="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="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="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="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="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="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>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
-    <string name="contactCreatedToast">"已创建“联系人”。"</string>
-    <string name="contactSavedToast">"已保存联系人。"</string>
-    <string name="listSeparatorCallNumber">"拔号"</string>
+    <string name="groupNameWithPhones">"具有手机号码的联系人"</string>
+    <string name="starredInAndroid">"Android 中加星标的联系人"</string>
+    <string name="contactCreatedToast">"已创建联系人。"</string>
+    <string name="contactSavedToast">"联系人已保存。"</string>
+    <string name="listSeparatorCallNumber">"拨打电话"</string>
     <string name="listSeparatorCallNumber_edit">"电话号码"</string>
     <string name="listSeparatorSendSmsMms">"发送短信/彩信"</string>
     <string name="listSeparatorSendEmail">"发送电子邮件"</string>
@@ -110,64 +119,139 @@
     <string name="listSeparatorOtherInformation_edit">"其他选项"</string>
     <string name="listSeparatorMore_edit">"更多"</string>
     <string name="contactsIconLabel">"联系人"</string>
-    <string name="contactsFavoritesLabel">"收藏夹"</string>
-    <string name="dialerIconLabel">"拔号程序"</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="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_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="imei">"IMEI"</string>
+    <string name="voicemail">"语音信箱"</string>
     <string name="unknown">"未知"</string>
     <string name="private_num">"私人号码"</string>
-    <!-- no translation found for payphone (4864313342828942922) -->
-    <skip />
-    <string name="dialerKeyboardHintText">"使用键盘拔号"</string>
-    <string name="dialerDialpadHintText">"通过拨号添加通话"</string>
-    <string name="simContacts_emptyLoading">"正在从 SIM 卡中载入..."</string>
+    <string name="payphone">"投币式公用电话"</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<li><font fgcolor="#ffffffff"><b>"新建联系人"</b></font>" - 从头开始创建新联系人"\n</li>\n<li><font fgcolor="#ffffffff"><b>"导入联系人"</b></font>" - 从 SIM 卡添加联系人"\n</li></string>
-    <string name="noContactsHelpTextWithSync">"您还没有联系人。"\n\n"要添加联系人,请按"<font fgcolor="#ffffffff"><b>"菜单"</b></font>",然后选择:"\n\n<li><font fgcolor="#ffffffff"><b>"修改同步组"</b></font>" - 从现有的或新的 Google 帐户添加联系人"\n</li>\n<li><font fgcolor="#ffffffff"><b>"新建联系人"</b></font>" - 从头开始创建新联系人"\n</li>\n<li><font fgcolor="#ffffffff"><b>"导入联系人"</b></font>" - 从 SIM 卡添加联系人"\n</li></string>
-    <string name="seclectSyncGroups_title">"选择要同步的组"</string>
+    <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"同步您的 Google 联系人!"</font>" "\n"将您的联系人同步到您的手机,然后您在任何地方都可以与他们联系。"</string>
+    <string name="noContactsHelpText">"您没有任何联系人。"\n\n"要添加联系人,请按 "<font fgcolor="#ffffffff"><b>"MENU"</b></font>" 并选择:"\n" "\n<li><font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"以从头开始创建新联系人 "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"导入联系人"</b></font>"以从您的 SIM 卡添加联系人"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"您没有任何联系人。"\n\n"要添加联系人,请按 "<font fgcolor="#ffffffff"><b>"MENU"</b></font>" 并选择:"\n" "\n<li><font fgcolor="#ffffffff"><b>"编辑同步群组"</b></font>"以从新的或现有的 Google 帐户添加"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"以从头开始创建新联系人"\n</li>" "\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>
+    <string name="liveFolder_phones_label">"手机"</string>
+    <string name="dialer_useDtmfDialpad">"使用按键式数字键盘"</string>
+    <string name="dialer_returnToInCallScreen">"返回正在进行的通话"</string>
+    <string name="dialer_addAnotherCall">"添加呼叫"</string>
     <string name="callDetailTitle">"通话详情"</string>
-    <string name="toast_call_detail_error">"无法阅读所请求通话的详情。"</string>
+    <string name="toast_call_detail_error">"无法读取所请求呼叫的详细信息。"</string>
     <string name="call_type">"类型"</string>
     <string name="type_incoming">"来电"</string>
-    <string name="type_outgoing">"去电"</string>
-    <string name="type_missed">"未接来电"</string>
+    <string name="type_outgoing">"对外呼叫"</string>
+    <string name="type_missed">"未接电话"</string>
     <string name="call_time">"时间"</string>
-    <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g>(<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
+    <string name="datetime_relative">"<xliff:g id="DATETIME">%1$s</xliff:g> (<xliff:g id="RELATIVE">%2$s</xliff:g>)"</string>
     <string name="call_duration">"持续时间"</string>
     <string name="header_actions">"操作"</string>
     <string name="ringtone_spinner">"铃声:<xliff:g id="RINGTONE">%1$s</xliff:g>"</string>
-    <string name="add_more_items">"添加更多项目"</string>
+    <string name="add_more_items">"添加更多项"</string>
     <string name="actionCall">"呼叫<xliff:g id="TYPE">%s</xliff:g>"</string>
-    <string name="actionEmail">"向<xliff:g id="TYPE">%s</xliff:g>发送电子邮件"</string>
-    <string name="actionText">"向<xliff:g id="TYPE">%s</xliff:g>发送文本消息"</string>
-    <string name="actionChat">"使用 <xliff:g id="TYPE">%s</xliff:g> 进行聊天"</string>
+    <string name="actionEmail">"发送电子邮件至<xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionText">"发送信息至<xliff:g id="TYPE">%s</xliff:g>"</string>
+    <string name="actionChat">"使用<xliff:g id="TYPE">%s</xliff:g>聊天"</string>
     <string name="actionMap">"查看<xliff:g id="TYPE">%s</xliff:g>地址"</string>
     <string name="actionIncomingCall">"来电"</string>
-    <string name="detailIncomingCallsGoToVoicemail">"将直接发送至语音邮件"</string>
-    <string name="detailsRingtone">"设置为“<xliff:g id="RINGTONE_NAME">%s</xliff:g>”"</string>
-    <string name="callBack">"回拨"</string>
-    <string name="callAgain">"再次呼叫"</string>
-    <string name="returnCall">"回电话"</string>
-    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> 分钟 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
-    <string name="favoritesFrquentSeparator">"经常呼叫的联系人"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"直接发送到语音信箱"</string>
+    <string name="detailsRingtone">"设为<xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
+    <string name="callBack">"回电"</string>
+    <string name="callAgain">"重新呼叫"</string>
+    <string name="returnCall">"返回呼叫"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="favoritesFrquentSeparator">"经常呼叫"</string>
     <string name="add_contact_dlg_title">"添加联系人"</string>
-    <string name="add_contact_dlg_message_fmt">"是否将“<xliff:g id="EMAIL">%s</xliff:g>”添加到通讯录中?"</string>
+    <string name="add_contact_dlg_message_fmt">"将“<xliff:g id="EMAIL">%s</xliff:g>”添加到联系人?"</string>
+    <!-- no translation found for description_image_button_one (1740638037139856139) -->
+    <skip />
+    <!-- no translation found for description_image_button_two (5882638439003731308) -->
+    <skip />
+    <!-- no translation found for description_image_button_three (8709731759376015180) -->
+    <skip />
+    <!-- no translation found for description_image_button_four (3530239685642246130) -->
+    <skip />
+    <!-- no translation found for description_image_button_five (1182465427501188413) -->
+    <skip />
+    <!-- no translation found for description_image_button_six (2093656269261415475) -->
+    <skip />
+    <!-- no translation found for description_image_button_seven (2450357020447676481) -->
+    <skip />
+    <!-- no translation found for description_image_button_eight (6969435115163287801) -->
+    <skip />
+    <!-- no translation found for description_image_button_nine (7857248695662558323) -->
+    <skip />
+    <!-- no translation found for description_image_button_star (3365919907520767866) -->
+    <skip />
+    <!-- no translation found for description_image_button_zero (4133108949401820710) -->
+    <skip />
+    <!-- no translation found for description_image_button_pound (3039765597595889230) -->
+    <skip />
+    <string name="no_sdcard_title">"无 SD 卡"</string>
+    <string name="no_sdcard_message">"未检测到 SD 卡"</string>
+    <string name="searching_vcard_title">"正在搜索 VCard"</string>
+    <string name="select_import_type_title">"您希望从何处导入联系人?"</string>
+    <string name="import_from_sim">"SIM 卡"</string>
+    <string name="import_from_sdcard">"SD 卡"</string>
+    <string name="import_all_vcard_string">"导入所有 VCard 文件"</string>
+    <string name="import_one_vcard_string">"导入一个 VCard 文件"</string>
+    <string name="searching_vcard_message">"正在搜索 VCard 上的 VCard 数据"</string>
+    <string name="scanning_sdcard_failed_title">"扫描 SD 卡失败"</string>
+    <string name="scanning_sdcard_failed_message">"扫描 SD 卡失败"</string>
+    <string name="fail_reason_io_error">"I/O 错误"</string>
+    <string name="fail_reason_vcard_parse_error">"解析 VCard 失败"</string>
+    <string name="fail_reason_no_vcard_file">"未在 SD 卡上找到 VCard 文件"</string>
+    <string name="fail_reason_no_vcard_entry">"未找到与所选内容对应的有效 VCard 条目"</string>
+    <string name="select_vcard_title">"选择 VCard 文件"</string>
+    <string name="select_vcard_message">"请选择要导入的 VCard 文件"</string>
+    <string name="reading_vcard_title">"正在读取 VCard"</string>
+    <string name="reading_vcard_message">"正在读取 VCard 文件"</string>
+    <string name="importing_vcard_message">"正在导入 VCard 数据"</string>
+    <string name="reading_vcard_failed_title">"读取 VCard 数据失败"</string>
+    <string name="reading_vcard_failed_message">"无法读取 VCard 数据"\n"失败原因:“<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
+    <string name="reading_vcard_contacts">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 个,共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 个联系人"</string>
+    <string name="reading_vcard_files">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 个,共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 个文件"</string>
+    <!-- no translation found for export_contact_list (3165097742175874384) -->
+    <skip />
+    <!-- no translation found for confirm_export_title (1693047909433122854) -->
+    <skip />
+    <!-- no translation found for confirm_export_message (63482084706768079) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_title (1455264422455075858) -->
+    <skip />
+    <!-- no translation found for exporting_contact_failed_message (1426451081541603512) -->
+    <skip />
+    <!-- no translation found for fail_reason_too_many_vcard (5416992255233341607) -->
+    <skip />
+    <!-- no translation found for fail_reason_cannot_open_destination_dir (1739293936432987758) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_title (9072240631534457415) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_message (5640326540405486055) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_initialize_exporter (4943708332700987376) -->
+    <skip />
+    <!-- no translation found for fail_reason_error_occurred_during_export (2151165129433831202) -->
+    <skip />
+    <!-- no translation found for fail_reason_could_not_open_file (4013520943128739511) -->
+    <skip />
+    <!-- no translation found for exporting_contact_list_progress (560522409559101193) -->
+    <skip />
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index c4d57db..0b6d011 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -18,6 +18,11 @@
     <string name="contactsList">"聯絡人"</string>
     <string name="launcherDialer">"撥號"</string>
     <string name="shortcutContact">"聯絡人"</string>
+    <string name="shortcutDialContact">"直接撥號"</string>
+    <string name="shortcutMessageContact">"直接傳訊"</string>
+    <string name="shortcutActivityTitle">"選擇聯絡人捷徑"</string>
+    <string name="callShortcutActivityTitle">"選擇去電號碼"</string>
+    <string name="messageShortcutActivityTitle">"選擇傳訊號碼"</string>
     <string name="starredList">"已標記星號"</string>
     <string name="frequentList">"經常聯絡"</string>
     <string name="strequentList">"我的最愛"</string>
@@ -168,4 +173,55 @@
     <string name="favoritesFrquentSeparator">"常用聯絡人"</string>
     <string name="add_contact_dlg_title">"新增聯絡人"</string>
     <string name="add_contact_dlg_message_fmt">"要將「<xliff:g id="EMAIL">%s</xliff:g>」新增為聯絡人嗎?"</string>
+    <string name="description_image_button_one">"1"</string>
+    <string name="description_image_button_two">"2"</string>
+    <string name="description_image_button_three">"3"</string>
+    <string name="description_image_button_four">"4"</string>
+    <string name="description_image_button_five">"5"</string>
+    <string name="description_image_button_six">"6"</string>
+    <string name="description_image_button_seven">"7"</string>
+    <string name="description_image_button_eight">"8"</string>
+    <string name="description_image_button_nine">"9"</string>
+    <string name="description_image_button_star">"星號"</string>
+    <string name="description_image_button_zero">"0"</string>
+    <string name="description_image_button_pound">"磅"</string>
+    <string name="no_sdcard_title">"無 SD 卡"</string>
+    <string name="no_sdcard_message">"未偵測到 SD 卡"</string>
+    <string name="searching_vcard_title">"正在搜尋 VCard"</string>
+    <string name="select_import_type_title">"您要從哪裡匯入聯絡人?"</string>
+    <string name="import_from_sim">"SIM 卡"</string>
+    <string name="import_from_sdcard">"SD 卡"</string>
+    <string name="import_all_vcard_string">"匯入所有 VCard 檔案"</string>
+    <string name="import_one_vcard_string">"匯入一個 VCard 檔案"</string>
+    <string name="searching_vcard_message">"正在搜尋 VCard 資料"</string>
+    <string name="scanning_sdcard_failed_title">"無法掃描 SD 卡"</string>
+    <string name="scanning_sdcard_failed_message">"無法掃描 SD 卡"</string>
+    <string name="fail_reason_io_error">"I/O 錯誤"</string>
+    <string name="fail_reason_vcard_parse_error">"無法剖析 VCard"</string>
+    <string name="fail_reason_no_vcard_file">"SD 卡上沒有 VCard 檔案"</string>
+    <string name="fail_reason_no_vcard_entry">"您所選的檔案沒有有效的 VCard 項目"</string>
+    <string name="select_vcard_title">"選取 VCard 檔案"</string>
+    <string name="select_vcard_message">"請選取要匯入的 VCard 檔案"</string>
+    <string name="reading_vcard_title">"讀取 VCard"</string>
+    <string name="reading_vcard_message">"正在讀取 VCard 檔案"</string>
+    <string name="importing_vcard_message">"正在匯入 VCard 資料"</string>
+    <string name="reading_vcard_failed_title">"無法讀取 VCard 資料"</string>
+    <string name="reading_vcard_failed_message">"無法讀取 VCard 資料"\n"失敗原因:「<xliff:g id="FAIL_REASON">%s</xliff:g>」"</string>
+    <string name="reading_vcard_contacts">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 位聯絡人,共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 位"</string>
+    <string name="reading_vcard_files">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 個檔案,共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 個"</string>
+    <string name="export_contact_list">"匯出聯絡人"</string>
+    <string name="confirm_export_title">"確認匯出"</string>
+    <string name="confirm_export_message">"可以將聯絡人清單匯出至「<xliff:g id="VCARD_FILENAME">%s</xliff:g>」嗎?"</string>
+    <string name="exporting_contact_failed_title">"無法匯出聯絡人資料"</string>
+    <string name="exporting_contact_failed_message">"無法匯出聯絡人資料"\n"失敗原因:「<xliff:g id="FAIL_REASON">%s</xliff:g>」"</string>
+    <string name="fail_reason_too_many_vcard">"SD 卡上儲存的 VCard 資料過多"</string>
+    <string name="fail_reason_cannot_open_destination_dir">"無法開啟或建立目標目錄「<xliff:g id="DIR_NAME">%s</xliff:g>」"</string>
+    <string name="exporting_contact_list_title">"正在匯出聯絡人資料"</string>
+    <string name="exporting_contact_list_message">"正在將聯絡人資料匯出至「<xliff:g id="FILE_NAME">%s</xliff:g>」"</string>
+    <string name="fail_reason_could_not_initialize_exporter">"無法初始化匯出程式:「<xliff:g id="EXACT_REASON">%s</xliff:g>」"</string>
+    <string name="fail_reason_error_occurred_during_export">"匯出時發生錯誤:「<xliff:g id="EXACT_REASON">%s</xliff:g>」"</string>
+    <string name="fail_reason_could_not_open_file">"無法開啟「<xliff:g id="FILE_NAME">%s</xliff:g>」:<xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
+    <string name="exporting_contact_list_progress">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 位聯絡人,共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 位"</string>
+    <!-- no translation found for search_settings_description (1422183266726984096) -->
+    <skip />
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 4dc08cc..7d85a40 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -15,5 +15,7 @@
 -->
 
 <resources>
+    <color name="textColorIconOverlay">#fff</color>
+    <color name="textColorIconOverlayShadow">#000</color>
     <color name="sect_secondary">#4fff</color>
 </resources>
diff --git a/res/values/config.xml b/res/values/config.xml
new file mode 100644
index 0000000..32664ec
--- /dev/null
+++ b/res/values/config.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <!-- Flag indicating whether Contacts app is allowed to import contacts from SDCard -->
+    <bool name="config_allow_import_from_sdcard">true</bool>
+    <!-- If true, all vcard files are imported from SDCard without asking a user.
+    If not, dialog shows to let the user to select whether all vcard files are imported or not.
+    If the user selects "not", then the application ask the user to select a file.-->
+    <bool name="config_import_all_vcard_from_sdcard_automatically">false</bool>
+    <!-- If true, vcard importer shows a dialog which asks the user whether the user wants
+    to import all vcard files in SDCard or select one vcard file. If false, the dialog is
+    skipped and the importer asks the user to choose one vcard file.
+    If config_import_all_vcard_from_sdcard_automatically is set true, this configuration
+    is ignored. -->
+    <bool name="config_allow_users_select_all_vcard_import">false</bool>
+
+    <!-- Flag indicating whether Contacts app is allowed to export contacts to SDCard -->
+    <bool name="config_allow_export_to_sdcard">false</bool>
+
+    <!-- If true, enable vibration (haptic feedback) for dialer key presses.
+         TODO: If enough users are annoyed by this, we might eventually
+         need to make it a user preference rather than a per-platform
+         resource. -->
+    <bool name="config_enable_dialer_key_vibration">true</bool>
+
+    <!-- How long to vibrate (in msec), if dialer key vibration is enabled. -->
+    <integer name="config_dialer_key_vibrate_duration">40</integer>
+
+    <!-- The type of VCard for export. Without specifying this, generic VCard will be emitted.
+     If you want to let the app emit VCard specific to some vendor (like DoCoMo),
+     please specify the type.-->
+    <string name="config_export_vcard_type"></string>
+
+    <!-- Directory in which exported VCard file is stored -->
+    <string name="config_export_dir">/sdcard</string>
+
+    <!-- Prefix of exported VCard file -->
+    <string name="config_export_file_prefix"></string>
+
+    <!-- Suffix of exported VCard file. Attached before an extension -->
+    <string name="config_export_file_suffix"></string>
+
+    <!-- Extension for exported VCard files -->
+    <string name="config_export_file_extension">vcf</string>
+
+    <!-- Minimum number of exported VCard file index -->
+    <integer name="config_export_file_min_index">1</integer>
+
+    <!-- Maximum number of exported VCard file index -->
+    <integer name="config_export_file_max_index">99999</integer>
+
+    <!-- The list (separated by ',') of extensions should be checked in addition to
+     config_export_extension. e.g. If "aaa" is added to here and 00001.vcf and 00002.aaa
+     exist in a target directory, 00003.vcf becomes a next file name candidate.
+     Without this configuration, 00002.vcf becomes the candidate.-->
+    <string name="config_export_extensions_to_consider"></string>
+
+    <!-- If true, show an onscreen "Dial" button in the dialer.
+         (In practice this is used only on platforms with no hard SEND/END
+         keys, but for maximum flexibility it's controlled by a flag here
+         (which can be overridden on a per-product basis.)) -->
+    <bool name="config_show_onscreen_dial_button">false</bool>
+
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c9fd548..d845e09 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -27,6 +27,23 @@
          This shows up in a list of things like bookmark, folder, music playlist, etc -->
     <string name="shortcutContact">Contact</string>
 
+    <!-- Name of activity that allows users to create shortcuts on the home screen to dial a contact.
+         This shows up in a list of things like bookmark, folder, music playlist, etc -->
+    <string name="shortcutDialContact">Direct Dial</string>
+
+    <!-- Name of activity that allows users to create shortcuts on the home screen to message (SMS) a contact.
+         This shows up in a list of things like bookmark, folder, music playlist, etc -->
+    <string name="shortcutMessageContact">Direct Message</string>
+
+    <!-- Activity title when the user is selecting a contact for a shortcut. -->
+    <string name="shortcutActivityTitle">Choose a contact shortcut</string>
+    
+    <!-- Activity title when the user is selecting a contact for a direct dial shortcut. -->
+    <string name="callShortcutActivityTitle">Choose a number to call</string>
+    
+    <!-- Activity title when the user is selecting a contact for a direct message shortcut. -->
+    <string name="messageShortcutActivityTitle">Choose a number to message</string>
+        
     <!-- Title for the activity that shows only starred contacts -->
     <string name="starredList">Starred</string>
 
@@ -417,6 +434,9 @@
     <!-- The title of a dialog that displays the IMEI of the phone -->
     <string name="imei">IMEI</string>
 
+    <!-- The title of a dialog that displays the MEID of the CDMA phone -->
+    <string name="meid">MEID</string>
+
     <!-- String used for displaying calls to the voicemail number in the call log -->
     <string name="voicemail">Voicemail</string>
 
@@ -572,6 +592,7 @@
 
     <!-- Label for the all data tab in the view and edit card -->
     <string name="all_tab_label">All</string>
+
     <!-- Content description values -->
 
     <!-- String describing the image on ImageButton one
@@ -658,6 +679,133 @@
     -->
     <string name="description_image_button_pound">pound</string>
 
+    <!-- Dialog title shown when SD Card does not exist -->
+    <string name="no_sdcard_title">No SD Card</string>
+
+    <!-- Dialog message shown when SDcard does not exist -->
+    <string name="no_sdcard_message">No SD Card detected</string>
+
+    <!-- Dialog title shown when searching VCard data from SD Card -->
+    <string name="searching_vcard_title">Searching for VCard</string>
+
+    <!-- Dialog title shown when asking a user whether import contact data from SIM or SD Card -->
+    <string name="select_import_type_title">Where would you like to import contacts from?</string>
+
+    <!-- Action string for selecting SIM for importing contacts -->
+    <string name="import_from_sim">SIM Card</string>
+
+    <!-- Action string for selecting SD Card for importing contacts -->
+    <string name="import_from_sdcard">SD Card</string>
+
+    <!-- "Import all VCard files" -->
+    <string name="import_all_vcard_string">Import all VCard files</string>
+
+    <!-- "Import one VCard file" -->
+    <string name="import_one_vcard_string">Import one VCard file</string>
+
+    <!-- Dialog message shown when searching VCard data from SD Card -->
+    <string name="searching_vcard_message">Searching for VCard data on VCard</string>
+
+    <!-- Dialog title shown when searching VCard data failed. -->
+    <string name="scanning_sdcard_failed_title">Scanning SD Card failed</string>
+
+    <!-- Dialog message shown when searching VCard data failed. -->
+    <string name="scanning_sdcard_failed_message">Scanning SD Card failed</string>
+
+    <!-- The failed reason: "I/O Error" -->
+    <string name="fail_reason_io_error">I/O Error</string>
+
+    <!-- The failed reason: "Failed to parse VCard data" -->
+    <string name="fail_reason_vcard_parse_error">Failed to parse VCard with some unexpected reason</string>
+    
+    <!-- The failed reason: "The VCard is not supported right now, but may be supported in the future" -->
+    <string name="fail_reason_vcard_not_supported_error">Failed to parse VCard though it seems in valid format, since the current implementation does not support it</string>
+
+    <!-- The failed reason: "There is no VCard file" -->
+    <string name="fail_reason_no_vcard_file">No VCard file found on SD Card</string>
+
+    <!-- The failed reason: "There is no valid VCard entry in the file(s)" -->
+    <string name="fail_reason_no_vcard_entry">No valid VCard entry found for your selection</string>
+
+    <!-- Dialog title shown when a user is asked to select VCard file -->
+    <string name="select_vcard_title">Select VCard file</string>
+
+    <!-- Dialog message shown when a user is asked to choose VCard file -->
+    <string name="select_vcard_message">Please select a VCard file to import</string>
+
+    <!-- Dialog title shown when reading VCard data -->
+    <string name="reading_vcard_title">Reading VCard</string>
+
+    <!-- Dialog message shown when reading a VCard file -->
+    <string name="reading_vcard_message">Reading VCard file(s)</string>
+
+    <!-- Dialog message shown when importing VCard data into local database -->
+    <string name="importing_vcard_message">Importing VCard data</string>
+
+    <!-- Dialog title shown when reading VCard data failed -->
+    <string name="reading_vcard_failed_title">Reading of VCard data has failed</string>
+
+    <!-- Dialog message shown when reading VCard data failed -->
+    <string name="reading_vcard_failed_message">VCard data could not be read\nReason for failure: \"<xliff:g id="fail_reason">%s</xliff:g>\"</string>
+
+    <!-- Message while reading one vCard file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+    <string name="reading_vcard_contacts"><xliff:g id="current_number">%s</xliff:g> of <xliff:g id="total_number">%s</xliff:g> contacts</string>
+
+    <!-- Message while reading multiple vCard files "(current number) of (total number) files" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+    <string name="reading_vcard_files"><xliff:g id="current_number">%s</xliff:g> of <xliff:g id="total_number">%s</xliff:g> files</string>
+
+    <!-- The menu item that launches VCard export activity -->
+    <string name="export_contact_list">Export contacts</string>
+    
+    <!-- Dialog title shown when a user confirms whether he/she export Contact data -->
+    <string name="confirm_export_title">Confirmation for export</string>
+        
+    <!-- Dialog message shown when a user confirms whether he/she export Contact data -->
+    <string name="confirm_export_message">Is it ok to export your contact list to \"<xliff:g id="vcard_filename">%s</xliff:g>\"?</string>    
+    
+    <!-- Dialog title shown when exporting Contact data failed -->
+    <string name="exporting_contact_failed_title">Exporting contact data has failed</string>
+    
+    <!-- Dialog message shown when exporting Contact data failed -->
+    <string name="exporting_contact_failed_message">Exporting contact data has failed\nReason for failure: \"<xliff:g id="fail_reason">%s</xliff:g>\"</string>
+
+    <!-- The failed reason: "Too many vcard files on the SD Card" -->
+    <string name="fail_reason_too_many_vcard">Too many VCard data on the SD Card</string>
+
+    <!-- The failed reason: "Too long filename". This error usually does not happen. -->
+    <string name="fail_reason_too_long_filename">Too long filename is required (\"<xliff:g id="filename">%s</xliff:g>\")</string>
+
+    <!-- The failed reason: "Cannot open or create the destination directory" -->
+    <string name="fail_reason_cannot_open_destination_dir">Cannot open or create the destination directory\"<xliff:g id="dir_name">%s</xliff:g>\"</string>
+
+    <!-- Dialog title shown when the application is exporting contact data outside -->
+    <string name="exporting_contact_list_title">Exporting contact data</string>
+
+    <!-- Message shown when the application is exporting contact data outside -->
+    <string name="exporting_contact_list_message">Exporting contact data to \"<xliff:g id="file_name">%s</xliff:g>\"</string>
+    
+    <!-- The failed reason: "Could not initialize the exporter" -->
+    <string name="fail_reason_could_not_initialize_exporter">Could not initialize the exporter: \"<xliff:g id="exact_reason">%s</xliff:g>\"</string>
+    
+    <!-- The failed reason: "Error occured during export" -->
+    <string name="fail_reason_error_occurred_during_export">Error occured during export: \"<xliff:g id="exact_reason">%s</xliff:g>\"</string>
+    
+    <!-- The failed reason: "Could not open a specific file" -->
+    <string name="fail_reason_could_not_open_file">Could not open \"<xliff:g id="file_name">%s</xliff:g>\": <xliff:g id="exact_reason">%s</xliff:g></string>
+
+    <!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
+    <string name="exporting_contact_list_progress"><xliff:g id="current_number">%s</xliff:g> of <xliff:g id="total_number">%s</xliff:g> contacts</string>
+    
+    <!-- The string used to describe Contacts as a searchable item within system search settings. -->
+    <string name="search_settings_description">Names of your contacts</string>
+
+    <!-- Menu items for dialpad options as part of Pause and Wait ftr -->
+    <string name="add_2sec_pause">Add 2-sec Pause</string>
+    <string name="add_wait">Add Wait</string>
+
+    <!-- Label for onscreen "Dial" button -->
+    <string name="dial_button_label">Dial</string>
+
     <!-- Shown as a toast when the user taps on a Fast-Track icon, and no application
          was found that could perform the selected action -->
     <string name="fasttrack_missing_app">No application found to handle this action</string>
@@ -788,5 +936,4 @@
 
 
 
-
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index b6c63db..cedd2b7 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -35,6 +35,15 @@
         <item name="android:windowContentOverlay">@null</item>
     </style>
 
+    <style name="BackgroundOnly">
+        <item name="android:windowBackground">@null</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowAnimationStyle">@null</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowNoDisplay">true</item>
+        <item name="android:windowIsFloating">true</item>
+    </style>
+
     <style name="ShowOrCreateTheme" parent="android:Theme.Translucent.NoTitleBar">
         <item name="android:windowContentOverlay">@null</item>
     </style>
diff --git a/res/xml/searchable.xml b/res/xml/searchable.xml
index f81a981..0deed7e 100644
--- a/res/xml/searchable.xml
+++ b/res/xml/searchable.xml
@@ -28,6 +28,7 @@
     android:searchSuggestAuthority="contacts"
     android:searchSuggestIntentAction="android.provider.Contacts.SEARCH_SUGGESTION_CLICKED"
     android:searchSuggestIntentData="content://contacts/people"
+    android:searchSettingsDescription="@string/search_settings_description"
 >
 
     <!-- allow green action key for search-bar and per-suggestion clicks -->
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index 8c94be5..22cae96 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -17,7 +17,6 @@
 package com.android.contacts;
 
 import com.android.contacts.DisplayGroupsActivity.Prefs;
-import com.android.contacts.ui.EditContactActivity;
 import com.android.contacts.ui.FastTrackWindow;
 
 import android.app.Activity;
@@ -32,11 +31,17 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.content.res.Resources;
 import android.database.CharArrayBuffer;
 import android.database.Cursor;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Paint;
 import android.graphics.Rect;
+import android.graphics.Typeface;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
@@ -44,17 +49,19 @@
 import android.os.Parcelable;
 import android.preference.PreferenceManager;
 import android.provider.ContactsContract;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Contacts.AggregationSuggestions;
+import android.provider.Contacts.ContactMethods;
+import android.provider.Contacts.People;
+import android.provider.Contacts.Phones;
 import android.provider.ContactsContract.CommonDataKinds;
+import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Intents;
+import android.provider.ContactsContract.Presence;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.CommonDataKinds.Photo;
 import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.Intents;
+import android.provider.ContactsContract.Contacts.AggregationSuggestions;
 import android.provider.ContactsContract.Intents.UI;
-import android.provider.ContactsContract.Presence;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.SparseArray;
@@ -68,7 +75,6 @@
 import android.view.ViewGroup;
 import android.view.ContextMenu.ContextMenuInfo;
 import android.view.inputmethod.InputMethodManager;
-import android.widget.AbsListView.OnScrollListener;
 import android.widget.AbsListView;
 import android.widget.AdapterView;
 import android.widget.AlphabetIndexer;
@@ -78,6 +84,7 @@
 import android.widget.ResourceCursorAdapter;
 import android.widget.SectionIndexer;
 import android.widget.TextView;
+import android.widget.AbsListView.OnScrollListener;
 
 import java.lang.ref.SoftReference;
 import java.lang.ref.WeakReference;
@@ -96,6 +103,8 @@
         View.OnCreateContextMenuListener, View.OnClickListener {
     private static final String TAG = "ContactsListActivity";
 
+    private static final boolean ENABLE_ACTION_ICON_OVERLAYS = false;
+
     private static final String LIST_STATE_KEY = "liststate";
     private static final String FOCUS_KEY = "focused";
 
@@ -112,6 +121,8 @@
     public static final int MENU_DIALER = 9;
     public static final int MENU_NEW_CONTACT = 10;
     public static final int MENU_DISPLAY_GROUP = 11;
+    public static final int MENU_IMPORT_CONTACTS = 12;
+    public static final int MENU_EXPORT_CONTACTS = 13;
 
     private static final int SUBACTIVITY_NEW_CONTACT = 1;
     private static final int SUBACTIVITY_VIEW_CONTACT = 2;
@@ -267,6 +278,9 @@
     private Parcelable mListState = null;
     private boolean mListHasFocus;
 
+    private String mShortcutAction;
+    private boolean mDefaultMode = false;
+    
     private boolean mCreateShortcut;
 
     /**
@@ -283,6 +297,33 @@
      * provided by scheme-specific part of incoming {@link Intent#getData()}.
      */
     private String mQueryData;
+    
+    private Handler mHandler = new Handler();
+
+    private class ImportTypeSelectedListener implements DialogInterface.OnClickListener {
+        public static final int IMPORT_FROM_SIM = 0;
+        public static final int IMPORT_FROM_SDCARD = 1;
+
+        private int mIndex;
+
+        public ImportTypeSelectedListener() {
+            mIndex = IMPORT_FROM_SIM;
+        }
+
+        public void onClick(DialogInterface dialog, int which) {
+            if (which == DialogInterface.BUTTON_POSITIVE) {
+                if (mIndex == IMPORT_FROM_SIM) {
+                    doImportFromSim();
+                } else {
+                    doImportFromSDCard();
+                }
+            } else if (which == DialogInterface.BUTTON_NEGATIVE) {
+
+            } else {
+                mIndex = which;
+            }
+        }
+    }
 
     private static final String CLAUSE_ONLY_VISIBLE = Contacts.IN_VISIBLE_GROUP + "=1";
     private static final String CLAUSE_ONLY_PHONES = Contacts.HAS_PHONE_NUMBER + "=1";
@@ -357,7 +398,19 @@
                 mMode = MODE_PICK_POSTAL;
             }
         } else if (Intent.ACTION_CREATE_SHORTCUT.equals(action)) {
-            mMode = MODE_PICK_OR_CREATE_AGGREGATE;
+            if (intent.getComponent().getClassName().equals("alias.DialShortcut")) {
+                mMode = MODE_PICK_PHONE;
+                mShortcutAction = Intent.ACTION_CALL;
+                setTitle(R.string.callShortcutActivityTitle);
+            } else if (intent.getComponent().getClassName().equals("alias.MessageShortcut")) {
+                mMode = MODE_PICK_PHONE;
+                mShortcutAction = Intent.ACTION_SENDTO;
+                setTitle(R.string.messageShortcutActivityTitle);
+            } else {
+                mMode = MODE_PICK_OR_CREATE_AGGREGATE;
+                mShortcutAction = Intent.ACTION_VIEW;
+                setTitle(R.string.shortcutActivityTitle);
+            }
             mCreateShortcut = true;
         } else if (Intent.ACTION_GET_CONTENT.equals(action)) {
             final String type = intent.resolveType(this);
@@ -451,7 +504,7 @@
         list.setOnCreateContextMenuListener(this);
         if ((mMode & MODE_MASK_NO_FILTER) != MODE_MASK_NO_FILTER) {
             list.setTextFilterEnabled(true);
-        }
+        }        
 
         if ((mMode & MODE_MASK_CREATE_NEW) != 0) {
             // Add the header for creating a new contact
@@ -680,14 +733,15 @@
                     .setIcon(com.android.internal.R.drawable.ic_menu_refresh)
                     .setIntent(syncIntent);
         }
+        
+        // Contacts import (SIM/SDCard)
+        menu.add(0, MENU_IMPORT_CONTACTS, 0, R.string.importFromSim)
+                .setIcon(R.drawable.ic_menu_import_contact);
 
-        // SIM import
-        Intent importIntent = new Intent(Intent.ACTION_VIEW);
-        importIntent.setType("vnd.android.cursor.item/sim-contact");
-        importIntent.setClassName("com.android.phone", "com.android.phone.SimContacts");
-        menu.add(0, 0, 0, R.string.importFromSim)
-                .setIcon(R.drawable.ic_menu_import_contact)
-                .setIntent(importIntent);
+        if (getResources().getBoolean(R.bool.config_allow_export_to_sdcard)) {
+            menu.add(0, MENU_EXPORT_CONTACTS, 0, R.string.export_contact_list)
+                    .setIcon(R.drawable.ic_menu_export_contact);
+        }
 
         return super.onCreateOptionsMenu(menu);
     }
@@ -703,10 +757,48 @@
             case MENU_SEARCH:
                 startSearch(null, false, null, false);
                 return true;
+
+            case MENU_IMPORT_CONTACTS:
+                if (getResources().getBoolean(R.bool.config_allow_import_from_sdcard)) {
+                    ImportTypeSelectedListener listener =
+                            new ImportTypeSelectedListener();
+                    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this)
+                            .setTitle(R.string.select_import_type_title)
+                            .setPositiveButton(android.R.string.ok, listener)
+                            .setNegativeButton(android.R.string.cancel, null);
+                    dialogBuilder.setSingleChoiceItems(new String[] {
+                            getString(R.string.import_from_sim),
+                            getString(R.string.import_from_sdcard)},
+                            ImportTypeSelectedListener.IMPORT_FROM_SIM, listener);
+                    dialogBuilder.show();
+                } else {
+                    doImportFromSim();
+                }
+                return true;
+
+            case MENU_EXPORT_CONTACTS:
+                handleExportContacts();
         }
         return false;
     }
 
+    private void doImportFromSim() {
+        Intent importIntent = new Intent(Intent.ACTION_VIEW);
+        importIntent.setType("vnd.android.cursor.item/sim-contact");
+        importIntent.setClassName("com.android.phone", "com.android.phone.SimContacts");
+        startActivity(importIntent);
+    }
+
+    private void doImportFromSDCard() {
+        Intent intent = new Intent(this, ImportVCardActivity.class);
+        startActivity(intent);
+    }
+
+    private void handleExportContacts() {
+        VCardExporter exporter = new VCardExporter(ContactsListActivity.this, mHandler);
+        exporter.startExportVCardToSdCard();
+    }
+    
     @Override
     protected void onActivityResult(int requestCode, int resultCode,
             Intent data) {
@@ -714,8 +806,8 @@
             case SUBACTIVITY_NEW_CONTACT:
                 if (resultCode == RESULT_OK) {
                     // Contact was created, pass it back
-                    returnPickerResult(data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME),
-                            data.getData());
+                    returnPickerResult(null, data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME),
+                            data.getData(), 0);
                 }
                 break;
 
@@ -914,7 +1006,7 @@
                 startActivityForResult(intent, SUBACTIVITY_VIEW_CONTACT);
             } else if (mMode == MODE_JOIN_AGGREGATE) {
                 Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, id);
-                returnPickerResult(null, uri);
+                returnPickerResult(null, null, uri, id);
             }
 
             /*else if (mMode == MODE_QUERY_PICK_TO_VIEW) {
@@ -928,20 +1020,24 @@
             }*/ else if (mMode == MODE_PICK_AGGREGATE
                     || mMode == MODE_PICK_OR_CREATE_AGGREGATE) {
                 Uri uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, id);
-                if (mCreateShortcut) {
+                if (mShortcutAction != null) {
                     // Subtract one if we have Create Contact at the top
                     Cursor c = (Cursor) mAdapter.getItem(position
                             - (mMode == MODE_PICK_OR_CREATE_AGGREGATE? 1:0));
-                    returnPickerResult(c.getString(SUMMARY_NAME_COLUMN_INDEX), uri);
+                    returnPickerResult(c, c.getString(SUMMARY_NAME_COLUMN_INDEX), uri, id);
                 } else {
-                    returnPickerResult(null, uri);
+                    returnPickerResult(null, null, uri, id);
                 }
                 setResult(RESULT_OK, new Intent().setData(uri));
                 finish();
             } else if (mMode == MODE_PICK_PHONE) {
-                setResult(RESULT_OK, new Intent().setData(
-                        ContentUris.withAppendedId(Data.CONTENT_URI, id)));
-                finish();
+                Uri uri = ContentUris.withAppendedId(Data.CONTENT_URI, id);
+                if (mShortcutAction != null) {
+                    Cursor c = (Cursor) mAdapter.getItem(position);
+                    returnPickerResult(c, c.getString(SUMMARY_NAME_COLUMN_INDEX), uri, id);
+                } else {
+                    returnPickerResult(null, null, uri, id);
+                }
             } else if (mMode == MODE_PICK_POSTAL) {
                 setResult(RESULT_OK, new Intent().setData(
                         ContentUris.withAppendedId(Data.CONTENT_URI, id)));
@@ -957,22 +1053,58 @@
         }
     }
 
-    private void returnPickerResult(String name, Uri uri) {
+    private void returnPickerResult(Cursor c, String name, Uri uri, long id) {
         final Intent intent = new Intent();
-
-        if (mCreateShortcut) {
-            Intent shortcutIntent = new Intent(Intent.ACTION_VIEW, uri);
+    
+        if (mShortcutAction != null) {
+            Intent shortcutIntent;
+            if (Intent.ACTION_VIEW.equals(mShortcutAction)) {
+                // This is a simple shortcut to view a contact.
+                shortcutIntent = new Intent(mShortcutAction, uri);
+                final Bitmap icon = loadContactPhoto(id, null);
+                if (icon != null) {
+                    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
+                } else {
+                    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
+                            Intent.ShortcutIconResource.fromContext(this,
+                                    R.drawable.ic_launcher_shortcut_contact));
+                }
+            } else {
+                // This is a direct dial or sms shortcut.
+                String number = c.getString(PHONE_NUMBER_COLUMN_INDEX);
+                int type = c.getInt(PHONE_TYPE_COLUMN_INDEX);
+                String scheme;
+                int resid;
+                if (Intent.ACTION_CALL.equals(mShortcutAction)) {
+                    scheme = "tel";
+                    resid = R.drawable.badge_action_call;
+                } else {
+                    scheme = "smsto";
+                    resid = R.drawable.badge_action_sms;
+                }
+                // Make the URI a direct tel: URI so that it will always continue to work
+                Uri phoneUri = Uri.fromParts(scheme, number, null);
+                shortcutIntent = new Intent(mShortcutAction, phoneUri);
+                
+                // Find the People._ID for this phone number
+/* TODO bring back the better icon handling
+                final long personId = c.getLong(PHONES_PERSON_ID_INDEX);
+                Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, personId);
+                intent.putExtra(Intent.EXTRA_SHORTCUT_ICON,
+                        generatePhoneNumberIcon(personUri, type, resid));
+*/
+                final Bitmap icon = loadContactPhoto(id, null);
+                if (icon != null) {
+                    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
+                } else {
+                    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
+                            Intent.ShortcutIconResource.fromContext(this,
+                                    R.drawable.ic_launcher_shortcut_contact));
+                }
+            }
             shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
             intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
             intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
-            final Bitmap icon = loadContactPhoto(ContentUris.parseId(uri), null);
-            if (icon != null) {
-                intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
-            } else {
-                intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
-                        Intent.ShortcutIconResource.fromContext(this,
-                                R.drawable.ic_launcher_shortcut_contact));
-            }
             setResult(RESULT_OK, intent);
         } else {
             setResult(RESULT_OK, intent.setData(uri));
@@ -980,6 +1112,107 @@
         finish();
     }
 
+    /**
+     * Generates a phone number shortcut icon. Adds an overlay describing the type of the phone
+     * number, and if there is a photo also adds the call action icon.
+     *
+     * @param personUri The person the phone number belongs to
+     * @param type The type of the phone number
+     * @param actionResId The ID for the action resource
+     * @return The bitmap for the icon
+     */
+    private Bitmap generatePhoneNumberIcon(Uri personUri, int type, int actionResId) {
+        final Resources r = getResources();
+        boolean drawPhoneOverlay = true;
+
+        Bitmap photo = People.loadContactPhoto(this, personUri, 0, null);
+        if (photo == null) {
+            // If there isn't a photo use the generic phone action icon instead
+            Bitmap phoneIcon = getPhoneActionIcon(r, actionResId);
+            if (phoneIcon != null) {
+                photo = phoneIcon;
+                drawPhoneOverlay = false;
+            } else {
+                return null;
+            }
+        }
+
+        // Setup the drawing classes
+        int iconSize = (int) r.getDimension(android.R.dimen.app_icon_size);
+        Bitmap icon = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(icon);
+
+        // Copy in the photo
+        Paint photoPaint = new Paint();
+        photoPaint.setDither(true);
+        photoPaint.setFilterBitmap(true);
+        Rect src = new Rect(0,0, photo.getWidth(),photo.getHeight());
+        Rect dst = new Rect(0,0, iconSize,iconSize);
+        canvas.drawBitmap(photo, src, dst, photoPaint);
+
+        // Create an overlay for the phone number type
+        String overlay = null;
+        switch (type) {
+            case Phones.TYPE_HOME:
+                overlay = "H";
+                break;
+
+            case Phones.TYPE_MOBILE:
+                overlay = "M";
+                break;
+
+            case Phones.TYPE_WORK:
+                overlay = "W";
+                break;
+
+            case Phones.TYPE_PAGER:
+                overlay = "P";
+                break;
+
+            case Phones.TYPE_OTHER:
+                overlay = "O";
+                break;
+        }
+        if (overlay != null) {
+            Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
+            textPaint.setTextSize(20.0f);
+            textPaint.setTypeface(Typeface.DEFAULT_BOLD);
+            textPaint.setColor(r.getColor(R.color.textColorIconOverlay));
+            textPaint.setShadowLayer(3f, 1, 1, r.getColor(R.color.textColorIconOverlayShadow));
+            canvas.drawText(overlay, 2, 16, textPaint);
+        }
+
+        // Draw the phone action icon as an overlay
+        if (ENABLE_ACTION_ICON_OVERLAYS && drawPhoneOverlay) {
+            Bitmap phoneIcon = getPhoneActionIcon(r, actionResId);
+            if (phoneIcon != null) {
+                src.set(0,0, phoneIcon.getWidth(),phoneIcon.getHeight());
+                int iconWidth = icon.getWidth();
+                dst.set(iconWidth - 20, -1, iconWidth, 19);
+                canvas.drawBitmap(phoneIcon, src, dst, photoPaint);
+            }
+        }
+
+        return icon;
+    }
+
+    /**
+     * Returns the icon for the phone call action.
+     *
+     * @param r The resources to load the icon from
+     * @param resId The resource ID to load
+     * @return the icon for the phone call action
+     */
+    private Bitmap getPhoneActionIcon(Resources r, int resId) {
+        Drawable phoneIcon = r.getDrawable(resId);
+        if (phoneIcon instanceof BitmapDrawable) {
+            BitmapDrawable bd = (BitmapDrawable) phoneIcon;
+            return bd.getBitmap();
+        } else {
+            return null;
+        }
+    }
+    
     String[] getProjection() {
         switch (mMode) {
             case MODE_PICK_PHONE:
@@ -1437,7 +1670,7 @@
         }
 
         private SectionIndexer getNewIndexer(Cursor cursor) {
-            /* if (Locale.getDefault().equals(Locale.JAPAN)) {
+            /* if (Locale.getDefault().getLanguage().equals(Locale.JAPAN.getLanguage())) {
                 return new JapaneseContactListIndexer(cursor, SORT_STRING_INDEX);
             } else { */
                 return new AlphabetIndexer(cursor, SUMMARY_NAME_COLUMN_INDEX, mAlphabet);
diff --git a/src/com/android/contacts/ImportVCardActivity.java b/src/com/android/contacts/ImportVCardActivity.java
new file mode 100644
index 0000000..b1dd11a
--- /dev/null
+++ b/src/com/android/contacts/ImportVCardActivity.java
@@ -0,0 +1,654 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.ProgressDialog;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnCancelListener;
+import android.content.DialogInterface.OnClickListener;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.PowerManager;
+import android.pim.vcard.EntryCommitter;
+import android.pim.vcard.VCardBuilder;
+import android.pim.vcard.VCardBuilderCollection;
+import android.pim.vcard.VCardConfig;
+import android.pim.vcard.VCardDataBuilder;
+import android.pim.vcard.VCardEntryCounter;
+import android.pim.vcard.VCardParser_V21;
+import android.pim.vcard.VCardParser_V30;
+import android.pim.vcard.VCardSourceDetector;
+import android.pim.vcard.exception.VCardException;
+import android.pim.vcard.exception.VCardNestedException;
+import android.pim.vcard.exception.VCardNotSupportedException;
+import android.pim.vcard.exception.VCardVersionException;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.style.RelativeSizeSpan;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.Vector;
+
+class VCardFile {
+    private String mName;
+    private String mCanonicalPath;
+    private long mLastModified;
+
+    public VCardFile(String name, String canonicalPath, long lastModified) {
+        mName = name;
+        mCanonicalPath = canonicalPath;
+        mLastModified = lastModified;
+    }
+
+    public String getName() {
+        return mName;
+    }
+
+    public String getCanonicalPath() {
+        return mCanonicalPath;
+    }
+
+    public long getLastModified() {
+        return mLastModified;
+    }
+}
+
+/**
+ * Class for importing vCard. Several user interaction will be required while reading
+ * (selecting a file, waiting a moment, etc.)
+ */
+public class ImportVCardActivity extends Activity {
+    private static final String LOG_TAG = "ImportVCardActivity";
+    private static final boolean DO_PERFORMANCE_PROFILE = false;
+
+    private ProgressDialog mProgressDialog;
+    private Handler mHandler = new Handler();
+    private boolean mLastNameComesBeforeFirstName;
+
+    private class CancelListener
+        implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
+        public void onClick(DialogInterface dialog, int which) {
+            finish();
+        }
+
+        public void onCancel(DialogInterface dialog) {
+            finish();
+        }
+    }
+
+    private CancelListener mCancelListener = new CancelListener();
+
+    private class ErrorDisplayer implements Runnable {
+        private String mErrorMessage;
+
+        public ErrorDisplayer(String errorMessage) {
+            mErrorMessage = errorMessage;
+        }
+
+        public void run() {
+            String message =
+                getString(R.string.reading_vcard_failed_message, mErrorMessage);
+            AlertDialog.Builder builder =
+                new AlertDialog.Builder(ImportVCardActivity.this)
+                    .setTitle(getString(R.string.reading_vcard_failed_title))
+                    .setIcon(android.R.drawable.ic_dialog_alert)
+                    .setMessage(message)
+                    .setOnCancelListener(mCancelListener)
+                    .setPositiveButton(android.R.string.ok, mCancelListener);
+            builder.show();
+        }
+    }
+
+    private class VCardReadThread extends Thread
+            implements DialogInterface.OnCancelListener {
+        private String mCanonicalPath;
+        private List<VCardFile> mVCardFileList;
+        private ContentResolver mResolver;
+        private VCardParser_V21 mVCardParser;
+        private boolean mCanceled;
+        private PowerManager.WakeLock mWakeLock;
+
+        public VCardReadThread(String canonicalPath) {
+            mCanonicalPath = canonicalPath;
+            mVCardFileList = null;
+            init();
+        }
+
+        public VCardReadThread(List<VCardFile> vcardFileList) {
+            mCanonicalPath = null;
+            mVCardFileList = vcardFileList;
+            init();
+        }
+
+        private void init() {
+            Context context = ImportVCardActivity.this;
+            mResolver = context.getContentResolver();
+            PowerManager powerManager = (PowerManager)context.getSystemService(
+                    Context.POWER_SERVICE);
+            mWakeLock = powerManager.newWakeLock(
+                    PowerManager.SCREEN_DIM_WAKE_LOCK |
+                    PowerManager.ON_AFTER_RELEASE, LOG_TAG);
+        }
+
+        @Override
+        public void finalize() {
+            if (mWakeLock != null && mWakeLock.isHeld()) {
+                mWakeLock.release();
+            }
+        }
+
+        @Override
+        public void run() {
+            mWakeLock.acquire();
+            // Some malicious vCard data may make this thread broken
+            // (e.g. OutOfMemoryError).
+            // Even in such cases, some should be done.
+            try {
+                if (mCanonicalPath != null) {
+                    mProgressDialog.setProgressNumberFormat("");
+                    mProgressDialog.setProgress(0);
+
+                    // Count the number of VCard entries
+                    mProgressDialog.setIndeterminate(true);
+                    long start;
+                    if (DO_PERFORMANCE_PROFILE) {
+                        start = System.currentTimeMillis();
+                    }
+                    VCardEntryCounter counter = new VCardEntryCounter();
+                    VCardSourceDetector detector = new VCardSourceDetector();
+                    VCardBuilderCollection builderCollection = new VCardBuilderCollection(
+                            Arrays.asList(counter, detector));
+
+                    boolean result;
+                    try {
+                        result = readOneVCardFile(mCanonicalPath,
+                                VCardConfig.DEFAULT_CHARSET, builderCollection, null, true);
+                    } catch (VCardNestedException e) {
+                        try {
+                            // Assume that VCardSourceDetector was able to detect the source.
+                            // Try again with the detector.
+                            result = readOneVCardFile(mCanonicalPath,
+                                    VCardConfig.DEFAULT_CHARSET, counter, detector, false);
+                        } catch (VCardNestedException e2) {
+                            result = false;
+                            Log.e(LOG_TAG, "Must not reach here. " + e2);
+                        }
+                    }
+                    if (DO_PERFORMANCE_PROFILE) {
+                        long time = System.currentTimeMillis() - start;
+                        Log.d(LOG_TAG, "time for counting the number of vCard entries: " +
+                                time + " ms");
+                    }
+                    if (!result) {
+                        return;
+                    }
+
+                    mProgressDialog.setProgressNumberFormat(
+                            getString(R.string.reading_vcard_contacts));
+                    mProgressDialog.setIndeterminate(false);
+                    mProgressDialog.setMax(counter.getCount());
+                    String charset = detector.getEstimatedCharset();
+                    doActuallyReadOneVCard(charset, true, detector);
+                } else {
+                    mProgressDialog.setProgressNumberFormat(
+                            getString(R.string.reading_vcard_files));
+                    mProgressDialog.setMax(mVCardFileList.size());
+                    mProgressDialog.setProgress(0);
+                    for (VCardFile vcardFile : mVCardFileList) {
+                        if (mCanceled) {
+                            return;
+                        }
+                        String canonicalPath = vcardFile.getCanonicalPath();
+
+                        VCardSourceDetector detector = new VCardSourceDetector();
+                        try {
+                            if (!readOneVCardFile(canonicalPath, VCardConfig.DEFAULT_CHARSET,
+                                    detector, null, true)) {
+                                continue;
+                            }
+                        } catch (VCardNestedException e) {
+                            // Assume that VCardSourceDetector was able to detect the source.
+                        }
+                        String charset = detector.getEstimatedCharset();
+                        doActuallyReadOneVCard(charset, false, detector);
+                        mProgressDialog.incrementProgressBy(1);
+                    }
+                }
+            } finally {
+                mWakeLock.release();
+                mProgressDialog.dismiss();
+                finish();
+            }
+        }
+
+        private void doActuallyReadOneVCard(String charset, boolean doIncrementProgress,
+                VCardSourceDetector detector) {
+            final Context context = ImportVCardActivity.this;
+            VCardDataBuilder builder;
+            int nameOrderType =
+                (mLastNameComesBeforeFirstName ? 
+                        VCardConfig.NAME_ORDER_TYPE_JAPANESE :
+                            VCardConfig.NAME_ORDER_TYPE_ENGLISH);
+            if (charset != null) {
+                builder = new VCardDataBuilder(charset,
+                        charset,
+                        false,
+                        nameOrderType);
+            } else {
+                charset = VCardConfig.DEFAULT_CHARSET;
+                builder = new VCardDataBuilder(null,
+                        null,
+                        false,
+                        nameOrderType);
+            }
+            builder.addEntryHandler(new EntryCommitter(mResolver));
+            builder.addEntryHandler(new ProgressShower(mProgressDialog,
+                    context.getString(R.string.reading_vcard_message),
+                    mHandler,
+                    doIncrementProgress));
+
+            try {
+                readOneVCardFile(mCanonicalPath, charset, builder, detector, false);
+            } catch (VCardNestedException e) {
+                Log.e(LOG_TAG, "Never reach here.");
+            }
+        }
+
+        private boolean readOneVCardFile(String canonicalPath, String charset,
+                VCardBuilder builder, VCardSourceDetector detector,
+                boolean throwNestedException)
+                throws VCardNestedException {
+            FileInputStream is;
+            try {
+                is = new FileInputStream(canonicalPath);
+                mVCardParser = new VCardParser_V21(detector);
+
+                try {
+                    mVCardParser.parse(is, charset, builder, mCanceled);
+                } catch (VCardVersionException e1) {
+                    try {
+                        is.close();
+                    } catch (IOException e) {
+                    }
+                    is = new FileInputStream(canonicalPath);
+
+                    try {
+                        mVCardParser = new VCardParser_V30();
+                        mVCardParser.parse(is, charset, builder, mCanceled);
+                    } catch (VCardVersionException e2) {
+                        throw new VCardException("vCard with unspported version.");
+                    }
+                } finally {
+                    if (is != null) {
+                        try {
+                            is.close();
+                        } catch (IOException e) {
+                        }
+                    }
+                }
+            } catch (IOException e) {
+                Log.e(LOG_TAG, "IOException was emitted: " + e.getMessage());
+
+                mProgressDialog.dismiss();
+
+                mHandler.post(new ErrorDisplayer(
+                        getString(R.string.fail_reason_io_error) +
+                        " (" + e.getMessage() + ")"));
+                return false;
+            } catch (VCardNotSupportedException e) {
+                if ((e instanceof VCardNestedException) && throwNestedException) {
+                    throw (VCardNestedException)e;
+                }
+                mHandler.post(new ErrorDisplayer(
+                        getString(R.string.fail_reason_vcard_not_supported_error) +
+                        " (" + e.getMessage() + ")"));
+                return false;
+            } catch (VCardException e) {
+                mHandler.post(new ErrorDisplayer(
+                        getString(R.string.fail_reason_vcard_parse_error) +
+                        " (" + e.getMessage() + ")"));
+                return false;
+            }
+            return true;
+        }
+
+        public void onCancel(DialogInterface dialog) {
+            mCanceled = true;
+            if (mVCardParser != null) {
+                mVCardParser.cancel();
+            }
+        }
+    }
+
+    private class ImportTypeSelectedListener implements
+            DialogInterface.OnClickListener {
+        public static final int IMPORT_ALL = 0;
+        public static final int IMPORT_ONE = 1;
+
+        private List<VCardFile> mVCardFileList;
+        private int mCurrentIndex;
+
+        public ImportTypeSelectedListener(List<VCardFile> vcardFileList) {
+            mVCardFileList = vcardFileList;
+        }
+
+        public void onClick(DialogInterface dialog, int which) {
+            if (which == DialogInterface.BUTTON_POSITIVE) {
+                if (mCurrentIndex == IMPORT_ALL) {
+                    importAllVCardFromSDCard(mVCardFileList);
+                } else {
+                    showVCardFileSelectDialog(mVCardFileList);
+                }
+            } else if (which == DialogInterface.BUTTON_NEGATIVE) {
+                finish();
+            } else {
+                mCurrentIndex = which;
+            }
+        }
+    }
+
+    private class VCardSelectedListener implements DialogInterface.OnClickListener {
+        private List<VCardFile> mVCardFileList;
+        private int mCurrentIndex;
+
+        public VCardSelectedListener(List<VCardFile> vcardFileList) {
+            mVCardFileList = vcardFileList;
+            mCurrentIndex = 0;
+        }
+
+        public void onClick(DialogInterface dialog, int which) {
+            if (which == DialogInterface.BUTTON_POSITIVE) {
+                importOneVCardFromSDCard(mVCardFileList.get(mCurrentIndex).getCanonicalPath());
+            } else if (which == DialogInterface.BUTTON_NEGATIVE) {
+                finish();
+            } else {
+                // Some file is selected.
+                mCurrentIndex = which;
+            }
+        }
+    }
+
+    /**
+     * Thread scanning VCard from SDCard. After scanning, the dialog which lets a user select
+     * a vCard file is shown. After the choice, VCardReadThread starts running.
+     */
+    private class VCardScanThread extends Thread implements OnCancelListener, OnClickListener {
+        private boolean mCanceled;
+        private boolean mGotIOException;
+        private File mRootDirectory;
+
+        // null when search operation is canceled.
+        private List<VCardFile> mVCardFiles;
+
+        // To avoid recursive link.
+        private Set<String> mCheckedPaths;
+        private PowerManager.WakeLock mWakeLock;
+
+        private class CanceledException extends Exception {
+        }
+
+        public VCardScanThread(File sdcardDirectory) {
+            mCanceled = false;
+            mGotIOException = false;
+            mRootDirectory = sdcardDirectory;
+            mCheckedPaths = new HashSet<String>();
+            mVCardFiles = new Vector<VCardFile>();
+            PowerManager powerManager = (PowerManager)ImportVCardActivity.this.getSystemService(
+                    Context.POWER_SERVICE);
+            mWakeLock = powerManager.newWakeLock(
+                    PowerManager.SCREEN_DIM_WAKE_LOCK |
+                    PowerManager.ON_AFTER_RELEASE, LOG_TAG);
+        }
+
+        @Override
+        public void run() {
+            try {
+                mWakeLock.acquire();
+                getVCardFileRecursively(mRootDirectory);
+            } catch (CanceledException e) {
+                mCanceled = true;
+            } catch (IOException e) {
+                mGotIOException = true;
+            } finally {
+                mWakeLock.release();
+            }
+
+            if (mCanceled) {
+                mVCardFiles = null;
+            }
+
+            mProgressDialog.dismiss();
+
+            if (mGotIOException) {
+                mHandler.post(new Runnable() {
+                    public void run() {
+                        String message = (getString(R.string.scanning_sdcard_failed_message,
+                                getString(R.string.fail_reason_io_error)));
+
+                        AlertDialog.Builder builder =
+                            new AlertDialog.Builder(ImportVCardActivity.this)
+                                .setTitle(R.string.scanning_sdcard_failed_title)
+                                .setIcon(android.R.drawable.ic_dialog_alert)
+                                .setMessage(message)
+                                .setOnCancelListener(mCancelListener)
+                                .setPositiveButton(android.R.string.ok, mCancelListener);
+                        builder.show();
+                    }
+                });
+            } else if (mCanceled) {
+                finish();
+            } else {
+                mHandler.post(new Runnable() {
+                    public void run() {
+                        int size = mVCardFiles.size();
+                        final Context context = ImportVCardActivity.this;
+                        if (size == 0) {
+                            String message = (getString(R.string.scanning_sdcard_failed_message,
+                                    getString(R.string.fail_reason_no_vcard_file)));
+
+                            AlertDialog.Builder builder =
+                                new AlertDialog.Builder(context)
+                                    .setTitle(R.string.scanning_sdcard_failed_title)
+                                    .setMessage(message)
+                                    .setOnCancelListener(mCancelListener)
+                                    .setPositiveButton(android.R.string.ok, mCancelListener);
+                            builder.show();
+                            return;
+                        } else if (context.getResources().getBoolean(
+                                R.bool.config_import_all_vcard_from_sdcard_automatically)) {
+                            importAllVCardFromSDCard(mVCardFiles);
+                        } else if (size == 1) {
+                            importOneVCardFromSDCard(mVCardFiles.get(0).getCanonicalPath());
+                        } else if (context.getResources().getBoolean(
+                                R.bool.config_allow_users_select_all_vcard_import)) {
+                            showSelectImportTypeDialog(mVCardFiles);
+                        } else {
+                            showVCardFileSelectDialog(mVCardFiles);
+                        }
+                    }
+                });
+            }
+        }
+
+        private void getVCardFileRecursively(File directory)
+                throws CanceledException, IOException {
+            if (mCanceled) {
+                throw new CanceledException();
+            }
+
+            for (File file : directory.listFiles()) {
+                if (mCanceled) {
+                    throw new CanceledException();
+                }
+                String canonicalPath = file.getCanonicalPath();
+                if (mCheckedPaths.contains(canonicalPath)) {
+                    continue;
+                }
+
+                mCheckedPaths.add(canonicalPath);
+
+                if (file.isDirectory()) {
+                    getVCardFileRecursively(file);
+                } else if (canonicalPath.toLowerCase().endsWith(".vcf") &&
+                        file.canRead()){
+                    String fileName = file.getName();
+                    VCardFile vcardFile = new VCardFile(
+                            fileName, canonicalPath, file.lastModified());
+                    mVCardFiles.add(vcardFile);
+                }
+            }
+        }
+
+        public void onCancel(DialogInterface dialog) {
+            mCanceled = true;
+        }
+
+        public void onClick(DialogInterface dialog, int which) {
+            if (which == DialogInterface.BUTTON_NEGATIVE) {
+                mCanceled = true;
+            }
+        }
+    }
+
+    
+    private void importOneVCardFromSDCard(String canonicalPath) {
+        VCardReadThread thread = new VCardReadThread(canonicalPath);
+        showReadingVCardDialog(thread);
+        thread.start();
+    }
+
+    private void importAllVCardFromSDCard(List<VCardFile> vcardFileList) {
+        VCardReadThread thread = new VCardReadThread(vcardFileList);
+        showReadingVCardDialog(thread);
+        thread.start();
+    }
+
+    private void showSelectImportTypeDialog(List<VCardFile> vcardFileList) {
+        DialogInterface.OnClickListener listener =
+            new ImportTypeSelectedListener(vcardFileList);
+        AlertDialog.Builder builder =
+            new AlertDialog.Builder(ImportVCardActivity.this)
+                .setTitle(R.string.select_vcard_title)
+                .setPositiveButton(android.R.string.ok, listener)
+                .setOnCancelListener(mCancelListener)
+                .setNegativeButton(android.R.string.cancel, mCancelListener);
+
+        String[] items = new String[2];
+        items[ImportTypeSelectedListener.IMPORT_ALL] =
+            getString(R.string.import_all_vcard_string);
+        items[ImportTypeSelectedListener.IMPORT_ONE] =
+            getString(R.string.import_one_vcard_string);
+        builder.setSingleChoiceItems(items,
+                ImportTypeSelectedListener.IMPORT_ALL, listener);
+        builder.show();
+    }
+
+    private void showVCardFileSelectDialog(List<VCardFile> vcardFileList) {
+        int size = vcardFileList.size();
+        DialogInterface.OnClickListener listener =
+            new VCardSelectedListener(vcardFileList);
+        AlertDialog.Builder builder =
+            new AlertDialog.Builder(this)
+                .setTitle(R.string.select_vcard_title)
+                .setPositiveButton(android.R.string.ok, listener)
+                .setOnCancelListener(mCancelListener)
+                .setNegativeButton(android.R.string.cancel, mCancelListener);
+
+        CharSequence[] items = new CharSequence[size];
+        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        for (int i = 0; i < size; i++) {
+            VCardFile vcardFile = vcardFileList.get(i);
+            SpannableStringBuilder stringBuilder = new SpannableStringBuilder();
+            stringBuilder.append(vcardFile.getName());
+            stringBuilder.append('\n');
+            int indexToBeSpanned = stringBuilder.length();
+            // Smaller date text looks better, since each file name becomes easier to read.
+            // The value set to RelativeSizeSpan is arbitrary. You can change it to any other
+            // value (but the value bigger than 1.0f would not make nice appearance :)
+            stringBuilder.append(
+                        "(" + dateFormat.format(new Date(vcardFile.getLastModified())) + ")");
+            stringBuilder.setSpan(
+                    new RelativeSizeSpan(0.7f), indexToBeSpanned, stringBuilder.length(),
+                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+            items[i] = stringBuilder;
+        }
+        builder.setSingleChoiceItems(items, 0, listener);
+        builder.show();
+    }
+
+    private void showReadingVCardDialog(DialogInterface.OnCancelListener listener) {
+        String title = getString(R.string.reading_vcard_title);
+        String message = getString(R.string.reading_vcard_message);
+        mProgressDialog = new ProgressDialog(this);
+        mProgressDialog.setTitle(title);
+        mProgressDialog.setMessage(message);
+        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+        mProgressDialog.setOnCancelListener(listener);
+        mProgressDialog.show();
+    }
+
+    @Override
+    protected void onCreate(Bundle bundle) {
+        super.onCreate(bundle);
+
+        mLastNameComesBeforeFirstName = getResources().getBoolean(
+                com.android.internal.R.bool.config_lastname_comes_before_firstname);
+
+        startImportVCardFromSdCard();
+    }
+
+    /**
+     * Tries to start importing VCard. If there's no SDCard available,
+     * an error dialog is shown. If there is, start scanning using another thread
+     * and shows a progress dialog. Several interactions will occur.
+     * This method should be called from a thread with a looper (like Activity).
+     */
+    public void startImportVCardFromSdCard() {
+        File file = new File("/sdcard");
+        if (!file.exists() || !file.isDirectory() || !file.canRead()) {
+            new AlertDialog.Builder(this)
+                    .setTitle(R.string.no_sdcard_title)
+                    .setIcon(android.R.drawable.ic_dialog_alert)
+                    .setMessage(R.string.no_sdcard_message)
+                    .setOnCancelListener(mCancelListener)
+                    .setPositiveButton(android.R.string.ok, mCancelListener)
+                    .show();
+        } else {
+            String title = getString(R.string.searching_vcard_title);
+            String message = getString(R.string.searching_vcard_message);
+
+            mProgressDialog = ProgressDialog.show(this, title, message, true, false);
+            VCardScanThread thread = new VCardScanThread(file);
+            mProgressDialog.setOnCancelListener(thread);
+            thread.start();
+        }
+    }
+}
diff --git a/src/com/android/contacts/ProgressShower.java b/src/com/android/contacts/ProgressShower.java
new file mode 100644
index 0000000..9498569
--- /dev/null
+++ b/src/com/android/contacts/ProgressShower.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.contacts;
+
+import android.app.ProgressDialog;
+import android.os.Handler;
+import android.pim.vcard.ContactStruct;
+import android.pim.vcard.EntryHandler;
+import android.pim.vcard.VCardConfig;
+import android.util.Log;
+
+public class ProgressShower implements EntryHandler {
+    public static final String LOG_TAG = "vcard.ProgressShower"; 
+
+    private final Handler mHandler;
+    private final ProgressDialog mProgressDialog;
+    private final String mProgressMessage;
+    private final boolean mIncrementProgress;
+
+    private long mTime;
+    
+    private class ShowProgressRunnable implements Runnable {
+        private ContactStruct mContact;
+        
+        public ShowProgressRunnable(ContactStruct contact) {
+            mContact = contact;
+        }
+        
+        public void run() {
+            mProgressDialog.setMessage(mProgressMessage + "\n" + 
+                    mContact.displayString());
+            if (mIncrementProgress) {
+                mProgressDialog.incrementProgressBy(1);
+            }
+        }
+    }
+    
+    public ProgressShower(ProgressDialog progressDialog,
+            String progressMessage,
+            Handler handler, 
+            boolean incrementProgress) {
+        mHandler = handler;
+        mProgressDialog = progressDialog;
+        mProgressMessage = progressMessage;
+        mIncrementProgress = incrementProgress;
+    }
+    
+    public void onEntryCreated(ContactStruct contactStruct) {
+        long start = System.currentTimeMillis();
+        
+        if (!contactStruct.isIgnorable()) {
+            if (mProgressDialog != null && mProgressMessage != null) {
+                if (mHandler != null) {
+                    mHandler.post(new ShowProgressRunnable(contactStruct));
+                } else {
+                    mProgressDialog.setMessage(mProgressMessage + "\n" + 
+                            contactStruct.displayString());
+                }
+            }
+        }
+        
+        mTime += System.currentTimeMillis() - start;
+    }
+
+    public void onFinal() {
+        if (VCardConfig.showPerformanceLog()) {
+            Log.d(LOG_TAG,
+                    String.format("Time to progress a dialog: %ld ms", mTime));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/RecentCallsListActivity.java b/src/com/android/contacts/RecentCallsListActivity.java
index 7ce01e3..d1237bf 100644
--- a/src/com/android/contacts/RecentCallsListActivity.java
+++ b/src/com/android/contacts/RecentCallsListActivity.java
@@ -24,10 +24,14 @@
 import android.content.Context;
 import android.content.Intent;
 import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabaseCorruptException;
+import android.database.sqlite.SQLiteDiskIOException;
+import android.database.sqlite.SQLiteFullException;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -278,9 +282,17 @@
             values.put(Calls.CACHED_NAME, ci.name);
             values.put(Calls.CACHED_NUMBER_TYPE, ci.type);
             values.put(Calls.CACHED_NUMBER_LABEL, ci.label);
-            RecentCallsListActivity.this.getContentResolver().update(
-                    Calls.CONTENT_URI,
-                    values, Calls.NUMBER + "='" + ciq.number + "'", null);
+
+            try {
+                RecentCallsListActivity.this.getContentResolver().update(Calls.CONTENT_URI, values,
+                        Calls.NUMBER + "='" + ciq.number + "'", null);
+            } catch (SQLiteDiskIOException e) {
+                Log.w(TAG, "Exception while updating call info", e);
+            } catch (SQLiteFullException e) {
+                Log.w(TAG, "Exception while updating call info", e);
+            } catch (SQLiteDatabaseCorruptException e) {
+                Log.w(TAG, "Exception while updating call info", e);
+            }
         }
 
         private void enqueueRequest(String number, int position,
@@ -510,6 +522,36 @@
     private static final class QueryHandler extends AsyncQueryHandler {
         private final WeakReference<RecentCallsListActivity> mActivity;
 
+        /**
+         * Simple handler that wraps background calls to catch
+         * {@link SQLiteException}, such as when the disk is full.
+         */
+        protected class CatchingWorkerHandler extends AsyncQueryHandler.WorkerHandler {
+            public CatchingWorkerHandler(Looper looper) {
+                super(looper);
+            }
+
+            @Override
+            public void handleMessage(Message msg) {
+                try {
+                    // Perform same query while catching any exceptions
+                    super.handleMessage(msg);
+                } catch (SQLiteDiskIOException e) {
+                    Log.w(TAG, "Exception on background worker thread", e);
+                } catch (SQLiteFullException e) {
+                    Log.w(TAG, "Exception on background worker thread", e);
+                } catch (SQLiteDatabaseCorruptException e) {
+                    Log.w(TAG, "Exception on background worker thread", e);
+                }
+            }
+        }
+
+        @Override
+        protected Handler createHandler(Looper looper) {
+            // Provide our special handler that catches exceptions
+            return new CatchingWorkerHandler(looper);
+        }
+
         public QueryHandler(Context context) {
             super(context.getContentResolver());
             mActivity = new WeakReference<RecentCallsListActivity>(
diff --git a/src/com/android/contacts/SpecialCharSequenceMgr.java b/src/com/android/contacts/SpecialCharSequenceMgr.java
index 999e141..644b66f 100644
--- a/src/com/android/contacts/SpecialCharSequenceMgr.java
+++ b/src/com/android/contacts/SpecialCharSequenceMgr.java
@@ -179,14 +179,14 @@
 
     static boolean handleIMEIDisplay(Context context, String input, boolean useSystemWindow) {
         if (input.equals(MMI_IMEI_DISPLAY)) {
-            int networkType = ((TelephonyManager)context.getSystemService(
-                    Context.TELEPHONY_SERVICE)).getNetworkType();
-            // check for GSM
-            if(networkType == TelephonyManager.NETWORK_TYPE_GPRS || 
-                    networkType == TelephonyManager.NETWORK_TYPE_EDGE || 
-                    networkType == TelephonyManager.NETWORK_TYPE_UMTS ) { 
+            int phoneType = ((TelephonyManager)context.getSystemService(
+                    Context.TELEPHONY_SERVICE)).getPhoneType();
 
-                showIMEIPanel(context, useSystemWindow); 
+            if (phoneType == TelephonyManager.PHONE_TYPE_GSM) {
+                showIMEIPanel(context, useSystemWindow);
+                return true;
+            } else if (phoneType == TelephonyManager.PHONE_TYPE_CDMA) {
+                showMEIDPanel(context, useSystemWindow);
                 return true;
             }
         }
@@ -207,6 +207,19 @@
         alert.getWindow().setType(WindowManager.LayoutParams.TYPE_PRIORITY_PHONE);
     }
 
+    static void showMEIDPanel(Context context, boolean useSystemWindow) {
+        String meidStr = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE))
+                .getDeviceId();
+
+        AlertDialog alert = new AlertDialog.Builder(context)
+                .setTitle(R.string.meid)
+                .setMessage(meidStr)
+                .setPositiveButton(android.R.string.ok, null)
+                .setCancelable(false)
+                .show();
+        alert.getWindow().setType(WindowManager.LayoutParams.TYPE_PRIORITY_PHONE);
+    }
+
     /*******
      * This code is used to handle SIM Contact queries
      *******/
diff --git a/src/com/android/contacts/TwelveKeyDialer.java b/src/com/android/contacts/TwelveKeyDialer.java
index fb1cb4b..3e43eaf 100644
--- a/src/com/android/contacts/TwelveKeyDialer.java
+++ b/src/com/android/contacts/TwelveKeyDialer.java
@@ -34,6 +34,7 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemClock;
+import android.os.Vibrator;
 import android.provider.Contacts.Intents.Insert;
 import android.provider.Contacts.People;
 import android.provider.Contacts.Phones;
@@ -44,6 +45,7 @@
 import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
 import android.text.Editable;
+import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.text.method.DialerKeyListener;
@@ -74,6 +76,7 @@
 
     private static final String TAG = "TwelveKeyDialer";
 
+    // Handler message codes
     private static final int STOP_TONE = 1;
 
     /** The length of DTMF tones in milliseconds */
@@ -93,12 +96,25 @@
     private Drawable mDeleteEmptyBackground;
     private View mDigitsAndBackspace;
     private View mDialpad;
+    private View mDialButton;
     private ListView mDialpadChooser;
     private DialpadChooserAdapter mDialpadChooserAdapter;
+    //Member variables for dialpad options
+    private MenuItem m2SecPauseMenuItem;
+    private MenuItem mWaitMenuItem;
+    private static final int MENU_ADD_CONTACTS = 1;
+    private static final int MENU_2S_PAUSE = 2;
+    private static final int MENU_WAIT = 3;
 
     // determines if we want to playback local DTMF tones.
     private boolean mDTMFToneEnabled;
 
+    // Vibration (haptic feedback) for dialer key presses.
+    private Vibrator mVibrator;
+    private boolean mVibrateOn;
+    private long mVibrateDuration;
+
+
     /** Identifier for the "Add Call" intent extra. */
     static final String ADD_CALL_MODE_KEY = "add_call_mode";
     /** Indicates if we are opening this dialer to add a call from the InCallScreen. */
@@ -154,6 +170,11 @@
             mDigits.setBackgroundDrawable(mDigitsEmptyBackground);
             mDigits.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
         }
+
+        // Update the enabledness of the "Dial" button
+        if (mDialButton != null) {
+            mDialButton.setEnabled(mDigits.length() != 0);
+        }
     }
 
     @Override
@@ -186,6 +207,13 @@
             setupKeypad();
         }
 
+        // Check whether we should show the onscreen "Dial" button.
+        if (r.getBoolean(R.bool.config_show_onscreen_dial_button)) {
+            mDialButton = findViewById(R.id.dialButton);
+            mDialButton.setVisibility(View.VISIBLE);  // It's GONE by default
+            mDialButton.setOnClickListener(this);
+        }
+
         view = findViewById(R.id.backspace);
         view.setOnClickListener(this);
         view.setOnLongClickListener(this);
@@ -202,31 +230,12 @@
             super.onRestoreInstanceState(icicle);
         }
 
-        // 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) {
-            if (mToneGenerator == null) {
-                try {
-                    mToneGenerator = new ToneGenerator(AudioManager.STREAM_VOICE_CALL,
-                            TONE_RELATIVE_VOLUME);
-                } catch (RuntimeException e) {
-                    Log.w(TAG, "Exception caught while creating local tone generator: " + e);
-                    mToneGenerator = null;
-                }
-            }
-        }
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        synchronized(mToneGeneratorLock) {
-            if (mToneGenerator != null) {
-                mToneStopper.removeMessages(STOP_TONE);
-                mToneGenerator.release();
-                mToneGenerator = null;
-            }
-        }
+        // Initialize vibration parameters.
+        // TODO: We might eventually need to make mVibrateOn come from a
+        // user preference rather than a per-platform resource, in which
+        // case we would need to update it in onResume() rather than here.
+        mVibrateOn = r.getBoolean(R.bool.config_enable_dialer_key_vibration);
+        mVibrateDuration = (long) r.getInteger(R.integer.config_dialer_key_vibrate_duration);
     }
 
     @Override
@@ -381,7 +390,7 @@
         synchronized(mToneGeneratorLock) {
             if (mToneGenerator == null) {
                 try {
-                    mToneGenerator = new ToneGenerator(AudioManager.STREAM_VOICE_CALL,
+                    mToneGenerator = new ToneGenerator(AudioManager.STREAM_DTMF,
                             TONE_RELATIVE_VOLUME);
                 } catch (RuntimeException e) {
                     Log.w(TAG, "Exception caught while creating local tone generator: " + e);
@@ -459,9 +468,12 @@
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
-        mAddToContactMenuItem = menu.add(0, 0, 0, R.string.recentCalls_addToContact)
+        mAddToContactMenuItem = menu.add(0, MENU_ADD_CONTACTS, 0, R.string.recentCalls_addToContact)
                 .setIcon(android.R.drawable.ic_menu_add);
-
+        m2SecPauseMenuItem = menu.add(0, MENU_2S_PAUSE, 0, R.string.add_2sec_pause)
+                .setIcon(R.drawable.ic_menu_2sec_pause);
+        mWaitMenuItem = menu.add(0, MENU_WAIT, 0, R.string.add_wait)
+                .setIcon(R.drawable.ic_menu_wait);
         return true;
     }
 
@@ -475,6 +487,8 @@
         CharSequence digits = mDigits.getText();
         if (digits == null || !TextUtils.isGraphic(digits)) {
             mAddToContactMenuItem.setVisible(false);
+            m2SecPauseMenuItem.setVisible(false);
+            mWaitMenuItem.setVisible(false);
         } else {
             // Put the current digits string into an intent
             Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
@@ -482,6 +496,41 @@
             intent.setType(People.CONTENT_ITEM_TYPE);
             mAddToContactMenuItem.setIntent(intent);
             mAddToContactMenuItem.setVisible(true);
+
+            // Check out whether to show Pause & Wait option menu items
+            int selectionStart;
+            int selectionEnd;
+            String strDigits = digits.toString();
+
+            selectionStart = mDigits.getSelectionStart();
+            selectionEnd = mDigits.getSelectionEnd();
+
+            if (selectionStart != -1) {
+                if (selectionStart > selectionEnd) {
+                    // swap it as we want start to be less then end
+                    int tmp = selectionStart;
+                    selectionStart = selectionEnd;
+                    selectionEnd = tmp;
+                }
+
+                if (selectionStart != 0) {
+                    // Pause can be visible if cursor is not in the begining
+                    m2SecPauseMenuItem.setVisible(true);
+
+                    // For Wait to be visible set of condition to meet
+                    mWaitMenuItem.setVisible(showWait(selectionStart,
+                                                      selectionEnd, strDigits));
+                } else {
+                    // cursor in the beginning both pause and wait to be invisible
+                    m2SecPauseMenuItem.setVisible(false);
+                    mWaitMenuItem.setVisible(false);
+                }
+            } else {
+                // cursor is not selected so assume new digit is added to the end
+                int strLength = strDigits.length();
+                mWaitMenuItem.setVisible(showWait(strLength,
+                                                      strLength, strDigits));
+            }
         }
         return true;
     }
@@ -534,6 +583,7 @@
     }
 
     private void keyPressed(int keyCode) {
+        vibrate();
         KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
         mDigits.onKeyDown(keyCode, event);
     }
@@ -616,7 +666,9 @@
                 keyPressed(KeyEvent.KEYCODE_DEL);
                 return;
             }
+            case R.id.dialButton:
             case R.id.digits: {
+                vibrate();  // Vibrate here too, just like we do for the regular keys
                 placeCall();
                 return;
             }
@@ -688,7 +740,11 @@
     };
 
     /**
-     * Play a tone for TONE_LENGTH_MS milliseconds.
+     * Plays the specified tone for TONE_LENGTH_MS milliseconds.
+     *
+     * The tone is played locally, using the audio stream for phone calls.
+     * Tones are played only if the "Audible touch tones" user preference
+     * is checked, and are NOT played if the device is in silent mode.
      *
      * @param tone a tone code from {@link ToneGenerator}
      */
@@ -698,6 +754,18 @@
             return;
         }
 
+        // Also do nothing if the phone is in silent mode.
+        // We need to re-check the ringer mode for *every* playTone()
+        // call, rather than keeping a local flag that's updated in
+        // onResume(), since it's possible to toggle silent mode without
+        // leaving the current activity (via the ENDCALL-longpress menu.)
+        AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+        int ringerMode = audioManager.getRingerMode();
+        if ((ringerMode == AudioManager.RINGER_MODE_SILENT)
+            || (ringerMode == AudioManager.RINGER_MODE_VIBRATE)) {
+            return;
+        }
+
         synchronized(mToneGeneratorLock) {
             if (mToneGenerator == null) {
                 Log.w(TAG, "playTone: mToneGenerator == null, tone: "+tone);
@@ -734,6 +802,7 @@
             // Log.i(TAG, "Showing dialpad chooser!");
             mDigitsAndBackspace.setVisibility(View.GONE);
             if (mDialpad != null) mDialpad.setVisibility(View.GONE);
+            if (mDialButton != null) mDialButton.setVisibility(View.GONE);
             mDialpadChooser.setVisibility(View.VISIBLE);
 
             // Instantiate the DialpadChooserAdapter and hook it up to the
@@ -746,6 +815,7 @@
             // Log.i(TAG, "Displaying normal Dialer UI.");
             mDigitsAndBackspace.setVisibility(View.VISIBLE);
             if (mDialpad != null) mDialpad.setVisibility(View.VISIBLE);
+            if (mDialButton != null) mDialButton.setVisibility(View.VISIBLE);
             mDialpadChooser.setVisibility(View.GONE);
         }
     }
@@ -925,4 +995,88 @@
         }
         return phoneInUse;
     }
+
+    /**
+     * Triggers haptic feedback (if enabled) for dialer key presses.
+     */
+    private synchronized void vibrate() {
+        if (!mVibrateOn) {
+            return;
+        }
+        if (mVibrator == null) {
+            mVibrator = new Vibrator();
+        }
+        mVibrator.vibrate(mVibrateDuration);
+    }
+
+    /**
+     * Returns true whenever any one of the options from the menu is selected.
+     * Code changes to support dialpad options
+     */
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case MENU_2S_PAUSE:
+                updateDialString(",");
+                return true;
+            case MENU_WAIT:
+                updateDialString(";");
+                return true;
+        }
+        return false;
+    }
+
+    /**
+     * Updates the dial string (mDigits) after inserting a Pause character (,)
+     * or Wait character (;).
+     */
+    private void updateDialString(String newDigits) {
+        int selectionStart;
+        int selectionEnd;
+
+        // SpannableStringBuilder editable_text = new SpannableStringBuilder(mDigits.getText());
+        selectionStart = mDigits.getSelectionStart();
+        selectionEnd = mDigits.getSelectionEnd();
+
+        Editable digits = mDigits.getText();
+        if (selectionStart != -1 ) {
+            if (selectionStart == selectionEnd) {
+                // then there is no selection. So insert the pause at this
+                // position and update the mDigits.
+                digits.replace(selectionStart, selectionStart, newDigits);
+            } else {
+                digits.delete(selectionStart, selectionEnd);
+                digits.replace(selectionStart, selectionStart, newDigits);
+            }
+        } else {
+            int len = mDigits.length();
+            digits.replace(len, len, newDigits);
+        }
+    }
+
+    /**
+     * This function return true if Wait menu item can be shown
+     * otherwise returns false. Assumes the passed string is non-empty
+     * and the 0th index check is not required.
+     */
+    private boolean showWait(int start, int end, String digits) {
+        if (start == end) {
+            // visible false in this case
+            if (start > digits.length()) return false;
+
+            // preceding char is ';', so visible should be false
+            if (digits.charAt(start-1) == ';') return false;
+
+            // next char is ';', so visible should be false
+            if ((digits.length() > start) && (digits.charAt(start) == ';')) return false;
+        } else {
+            // visible false in this case
+            if (start > digits.length() || end > digits.length()) return false;
+
+            // In this case we need to just check for ';' preceding to start
+            // or next to end
+            if (digits.charAt(start-1) == ';') return false;
+        }
+        return true;
+    }
 }
diff --git a/src/com/android/contacts/VCardExporter.java b/src/com/android/contacts/VCardExporter.java
new file mode 100644
index 0000000..2b3c4eb
--- /dev/null
+++ b/src/com/android/contacts/VCardExporter.java
@@ -0,0 +1,1674 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.contacts;
+
+import android.app.AlertDialog;
+import android.app.ProgressDialog;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteException;
+import android.os.Handler;
+import android.os.PowerManager;
+import android.provider.Contacts;
+import android.provider.Contacts.People;
+import android.syncml.pim.PropertyNode;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.CharsetUtils;
+import android.util.Log;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+public class VCardExporter {
+    private static final String LOG_TAG = "VCardExporter";
+
+    // If true, VCardExporter is able to emits files longer than 8.3 format.
+    private static final boolean ALLOW_LONG_FILE_NAME = false;
+    private final String mTargetDirectory;
+    private final String mFileNamePrefix;
+    private final String mFileNameSuffix;
+    private final int mFileIndexMinimum;
+    private final int mFileIndexMaximum;
+    private final String mFileNameExtension;
+    private final String mVCardType;
+    private final Set<String> mExtensionsToConsider;
+
+    private Context mParentContext;
+    private Handler mParentHandler;
+    private ProgressDialog mProgressDialog;
+
+    private class ErrorMessageDisplayRunnable implements Runnable {
+        private String mReason;
+        public ErrorMessageDisplayRunnable(String reason) {
+            mReason = reason;
+        }
+
+        public void run() {
+            new AlertDialog.Builder(mParentContext)
+                .setTitle(getString(R.string.exporting_contact_failed_title))
+                .setMessage(getString(R.string.exporting_contact_failed_message, mReason))
+                .setPositiveButton(android.R.string.ok, null)
+                .show();
+        }
+    }
+
+    private class ConfirmListener implements DialogInterface.OnClickListener {
+        private String mFileName;
+
+        public ConfirmListener(String fileName) {
+            mFileName = fileName;
+        }
+
+        public void onClick(DialogInterface dialog, int which) {
+            if (which == DialogInterface.BUTTON_POSITIVE) {
+                startExport(mFileName);
+            } else if (which == DialogInterface.BUTTON_NEGATIVE) {
+            }
+        }
+    }
+
+    private class ActualExportThread extends Thread
+            implements DialogInterface.OnCancelListener {
+        private PowerManager.WakeLock mWakeLock;
+        private String mFileName;
+        private boolean mCanceled = false;
+
+        public ActualExportThread(String fileName) {
+            mFileName = fileName;
+            PowerManager powerManager = (PowerManager)mParentContext.getSystemService(
+                    Context.POWER_SERVICE);
+            mWakeLock = powerManager.newWakeLock(
+                    PowerManager.SCREEN_DIM_WAKE_LOCK |
+                    PowerManager.ON_AFTER_RELEASE, LOG_TAG);
+        }
+
+        @Override
+        public void run() {
+            mWakeLock.acquire();
+            VCardExporterImpl exporterImpl = null;
+            try {
+                OutputStream outputStream = null;
+                try {
+                    outputStream = new FileOutputStream(mFileName);
+                } catch (FileNotFoundException e) {
+                    String reason = getString(R.string.fail_reason_could_not_open_file,
+                            mFileName, e.getMessage());
+                    mParentHandler.post(new ErrorMessageDisplayRunnable(reason));
+                    return;
+                }
+
+                TelephonyManager telephonyManager =
+                    (TelephonyManager)mParentContext.getSystemService(
+                            Context.TELEPHONY_SERVICE);
+
+                exporterImpl = new VCardExporterImpl(mParentContext.getContentResolver(),
+                        outputStream, mVCardType);
+
+                if (!exporterImpl.init()) {
+                    String reason = getString(R.string.fail_reason_could_not_initialize_exporter,
+                            exporterImpl.getErrorReason());
+                    mParentHandler.post(new ErrorMessageDisplayRunnable(reason));
+                    return;
+                }
+
+                int size = exporterImpl.getCount();
+
+                mProgressDialog.setProgressNumberFormat(
+                        getString(R.string.exporting_contact_list_progress));
+                mProgressDialog.setMax(size);
+                mProgressDialog.setProgress(0);
+
+                while (!exporterImpl.isAfterLast()) {
+                    if (mCanceled) {
+                        return;
+                    }
+                    if (!exporterImpl.exportOneContactData()) {
+                        Log.e(LOG_TAG, "Failed to read a contact.");
+                        String reason = getString(R.string.fail_reason_error_occurred_during_export,
+                                exporterImpl.getErrorReason());
+                        mParentHandler.post(new ErrorMessageDisplayRunnable(reason));
+                        return;
+                    }
+                    mProgressDialog.incrementProgressBy(1);
+                }
+            } finally {
+                if (exporterImpl != null) {
+                    exporterImpl.terminate();
+                }
+                mWakeLock.release();
+                mProgressDialog.dismiss();
+            }
+        }
+
+        @Override
+        public void finalize() {
+            if (mWakeLock != null && mWakeLock.isHeld()) {
+                mWakeLock.release();
+            }
+        }
+
+        public void onCancel(DialogInterface dialog) {
+            mCanceled = true;
+        }
+    }
+
+    /**
+     * @param parentContext must not be null
+     * @param parentHandler must not be null
+     */
+    public VCardExporter(Context parentContext, Handler parentHandler) {
+        mParentContext = parentContext;
+        mParentHandler = parentHandler;
+        mTargetDirectory = getString(R.string.config_export_dir);
+        mFileNamePrefix = getString(R.string.config_export_file_prefix);
+        mFileNameSuffix = getString(R.string.config_export_file_suffix);
+        mFileNameExtension = getString(R.string.config_export_file_extension);
+        mVCardType = getString(R.string.config_export_vcard_type);
+
+        mExtensionsToConsider = new HashSet<String>();
+        mExtensionsToConsider.add(mFileNameExtension);
+
+        final String additionalExtensions =
+            getString(R.string.config_export_extensions_to_consider);
+        if (!TextUtils.isEmpty(additionalExtensions)) {
+            for (String extension : additionalExtensions.split(",")) {
+                String trimed = extension.trim();
+                if (trimed.length() > 0) {
+                    mExtensionsToConsider.add(trimed);
+                }
+            }
+        }
+
+        Resources resources = parentContext.getResources();
+        mFileIndexMinimum = resources.getInteger(R.integer.config_export_file_min_index);
+        mFileIndexMaximum = resources.getInteger(R.integer.config_export_file_max_index);
+    }
+
+    /**
+     * Tries to start exporting VCard. If there's no SDCard available,
+     * an error dialog is shown.
+     */
+    public void startExportVCardToSdCard() {
+        File targetDirectory = new File(mTargetDirectory);
+
+        if (!(targetDirectory.exists() &&
+                targetDirectory.isDirectory() &&
+                targetDirectory.canRead()) &&
+                !targetDirectory.mkdirs()) {
+            new AlertDialog.Builder(mParentContext)
+                    .setTitle(R.string.no_sdcard_title)
+                    .setIcon(android.R.drawable.ic_dialog_alert)
+                    .setMessage(R.string.no_sdcard_message)
+                    .setPositiveButton(android.R.string.ok, null)
+                    .show();
+        } else {
+            String fileName = getAppropriateFileName(mTargetDirectory);
+            if (TextUtils.isEmpty(fileName)) {
+                return;
+            }
+
+            new AlertDialog.Builder(mParentContext)
+                .setTitle(R.string.confirm_export_title)
+                .setMessage(getString(R.string.confirm_export_message, fileName))
+                .setPositiveButton(android.R.string.ok, new ConfirmListener(fileName))
+                .setNegativeButton(android.R.string.cancel, null)
+                .show();
+        }
+    }
+
+    /**
+     * Tries to get an appropriate filename. Returns null if it fails.
+     */
+    private String getAppropriateFileName(final String destDirectory) {
+        int fileNumberStringLength = 0;
+        {
+            // Calling Math.Log10() is costly.
+            int tmp;
+            for (fileNumberStringLength = 0, tmp = mFileIndexMaximum; tmp > 0;
+                fileNumberStringLength++, tmp /= 10) {
+            }
+        }
+        String bodyFormat = "%s%0" + fileNumberStringLength + "d%s";
+
+        if (!ALLOW_LONG_FILE_NAME) {
+            String possibleBody = String.format(bodyFormat,mFileNamePrefix, 1, mFileNameSuffix);
+            if (possibleBody.length() > 8 || mFileNameExtension.length() > 3) {
+                Log.e(LOG_TAG, "This code does not allow any long file name.");
+                displayErrorMessage(getString(R.string.fail_reason_too_long_filename,
+                        String.format("%s.%s", possibleBody, mFileNameExtension)));
+                return null;
+            }
+        }
+
+        // Note that this logic assumes that the target directory is case insensitive.
+        // As of 2009-07-16, it is true since the external storage is only sdcard, and
+        // it is formated as FAT/VFAT.
+        // TODO: fix this.
+        for (int i = mFileIndexMinimum; i <= mFileIndexMaximum; i++) {
+            boolean numberIsAvailable = true;
+            // SD Association's specification seems to require this feature, though we cannot
+            // have the specification since it is proprietary...
+            String body = null;
+            for (String possibleExtension : mExtensionsToConsider) {
+                body = String.format(bodyFormat, mFileNamePrefix, i, mFileNameSuffix);
+                File file = new File(String.format("%s/%s.%s",
+                        destDirectory, body, possibleExtension));
+                if (file.exists()) {
+                    numberIsAvailable = false;
+                    break;
+                }
+            }
+            if (numberIsAvailable) {
+                return String.format("%s/%s.%s", destDirectory, body, mFileNameExtension);
+            }
+        }
+        displayErrorMessage(getString(R.string.fail_reason_too_many_vcard));
+        return null;
+    }
+
+    private void startExport(String fileName) {
+        ActualExportThread thread = new ActualExportThread(fileName);
+        displayReadingVCardDialog(thread, fileName);
+        thread.start();
+    }
+
+    private void displayReadingVCardDialog(DialogInterface.OnCancelListener listener,
+            String fileName) {
+        String title = getString(R.string.exporting_contact_list_title);
+        String message = getString(R.string.exporting_contact_list_message, fileName);
+        mProgressDialog = new ProgressDialog(mParentContext);
+        mProgressDialog.setTitle(title);
+        mProgressDialog.setMessage(message);
+        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+        mProgressDialog.setOnCancelListener(listener);
+        mProgressDialog.show();
+    }
+
+    private void displayErrorMessage(String failureReason) {
+        new AlertDialog.Builder(mParentContext)
+            .setTitle(R.string.exporting_contact_failed_title)
+            .setMessage(getString(R.string.exporting_contact_failed_message,
+                    failureReason))
+            .setPositiveButton(android.R.string.ok, null)
+            .show();
+    }
+
+    private String getString(int resId, Object... formatArgs) {
+        return mParentContext.getString(resId, formatArgs);
+    }
+
+    private String getString(int resId) {
+        return mParentContext.getString(resId);
+    }
+}
+
+// TODO: This class should be splitted into two parts; exporter part and composer part.
+class VCardExporterImpl {
+    private static final String LOG_TAG = "VCardExporterImpl";
+
+    /* Type of exporting VCard. */
+    // General VCard. Use UTF-8 and do not care vendor specific things.
+    public static int VCARD_TYPE_GENERIC = 0;
+    // VCard format used in DoCoMo. Shift_Jis is used as charset.
+    public static int VCARD_TYPE_DOCOMO = 1;
+    public static final String VCARD_TYPE_STRING_DOCOMO = "docomo";
+
+    private static final String VCARD_PROPERTY_ADR = "ADR";
+    private static final String VCARD_PROPERTY_BEGIN = "BEGIN";
+    private static final String VCARD_PROPERTY_EMAIL = "EMAIL";
+    private static final String VCARD_PROPERTY_END = "END";
+    private static final String VCARD_PROPERTY_NAME = "N";
+    private static final String VCARD_PROPERTY_NOTE = "NOTE";
+    private static final String VCARD_PROPERTY_ORG = "ORG";
+    private static final String VCARD_PROPERTY_SOUND = "SOUND";
+    private static final String VCARD_PROPERTY_TEL = "TEL";
+    private static final String VCARD_PROPERTY_TITLE = "TITLE";
+    private static final String VCARD_PROPERTY_PHOTO = "PHOTO";
+    private static final String VCARD_PROPERTY_VERSION = "VERSION";
+    private static final String VCARD_PROPERTY_BDAY = "BDAY";
+    private static final String VCARD_PROPERTY_URL = "URL";
+
+    // Properties for DoCoMo vCard.
+    private static final String VCARD_PROPERTY_X_CLASS = "X-CLASS";
+    private static final String VCARD_PROPERTY_X_REDUCTION = "X-REDUCTION";
+    private static final String VCARD_PROPERTY_X_NO = "X-NO";
+    private static final String VCARD_PROPERTY_X_DCM_HMN_MODE = "X-DCM-HMN-MODE";
+
+    private static final String VCARD_DATA_VCARD = "VCARD";
+    private static final String VCARD_DATA_VERSION_V21 = "2.1";
+    private static final String VCARD_DATA_PUBLIC = "PUBLIC";
+
+    private static final String VCARD_ATTR_SEPARATOR = ";";
+    private static final String VCARD_COL_SEPARATOR = "\r\n";
+    private static final String VCARD_DATA_SEPARATOR = ":";
+    private static final String VCARD_ITEM_SEPARATOR = ";";
+    private static final String VCARD_WS = " ";
+
+    private static final String VCARD_ATTR_VOICE = "VOICE";
+    private static final String VCARD_ATTR_CELL = "CELL";
+    private static final String VCARD_ATTR_WORK = "WORK";
+    private static final String VCARD_ATTR_HOME = "HOME";
+    private static final String VCARD_ATTR_FAX = "FAX";
+    private static final String VCARD_ATTR_INTERNET = "INTERNET";
+    private static final String VCARD_ATTR_ENCODING_QP = "ENCODING=QUOTED-PRINTABLE";
+    private static final String VCARD_ATTR_ENCODING_BASE64_V21 = "ENCODING=BASE64";
+    // This is just a reminder: in VCard 3.0, do not use the string "BASE64"
+    @SuppressWarnings("unused")
+    private static final String VCARD_ATTR_ENCODING_BASE64_V30 = "ENCODING=b";
+
+    // DoCoMo specific attribute.Used with "SOUND" property.
+    private static final String VCARD_ATTR_X_IRMC_N = "X-IRMC-N";
+
+    private static final String SHIFT_JIS = "SHIFT_JIS";
+
+    private Cursor mCursor;
+    private int mIdColumn;
+    private int mNameColumn;
+    private int mNotesColumn;
+    private int mPhoneticNameColumn;
+    private ContentResolver mContentResolver;
+
+    private int mVCardType;
+    private String mCharsetString;
+    private static String mVCardAttributeCharset;
+    private OutputStream mOutputStream;  // mWriter will close this.
+    private Writer mWriter;
+    private boolean mTerminateIsCalled;
+
+    private String mErrorReason = "No error";
+
+    /**
+     * @param resolver
+     * @param outputStream close() must not be called outside.
+     * @param vcardType
+     */
+    public VCardExporterImpl(ContentResolver resolver, OutputStream outputStream, int vcardType) {
+        mContentResolver = resolver;
+        mOutputStream = outputStream;
+
+        mVCardType = vcardType;
+        if (vcardType == VCARD_TYPE_DOCOMO) {
+            mCharsetString = CharsetUtils.charsetForVendor(SHIFT_JIS, "docomo").name();
+            mVCardAttributeCharset = "CHARSET=" + SHIFT_JIS;
+        } else {
+            mCharsetString = "UTF-8";
+            mVCardAttributeCharset = "CHARSET=UTF-8";
+        }
+    }
+
+    public VCardExporterImpl(ContentResolver resolver, OutputStream outputStream, String vcardType) {
+        this(resolver, outputStream,
+                (vcardType.equalsIgnoreCase(VCARD_TYPE_STRING_DOCOMO) ?
+                        VCARD_TYPE_DOCOMO : VCARD_TYPE_GENERIC));
+    }
+
+    /**
+     * @return Returns true when initialization is successful and all the other methods are
+     * available. Returns false otherwise.
+     */
+    public boolean init() {
+        try {
+            mWriter = new BufferedWriter(
+                    new OutputStreamWriter(mOutputStream, mCharsetString));
+        } catch (UnsupportedEncodingException e1) {
+            Log.e(LOG_TAG, "Unsupported charset: " + mCharsetString);
+            mErrorReason = "Encoding is not supported (usually this does not happen!): " +
+                mCharsetString;
+            return false;
+        }
+
+        final String[] projection = new String[] {
+                People._ID,
+                People.NAME,
+                People.NOTES,
+                People.PHONETIC_NAME,
+        };
+
+        mCursor = mContentResolver.query(People.CONTENT_URI, projection, null, null, null);
+        if (mCursor == null || !mCursor.moveToFirst()) {
+            if (mCursor != null) {
+                try {
+                    mCursor.close();
+                } catch (SQLiteException e) {
+                }
+                mCursor = null;
+            }
+            mErrorReason = "Getting database information failed.";
+            return false;
+        }
+
+        mIdColumn = mCursor.getColumnIndex(People._ID);
+        mNameColumn = mCursor.getColumnIndex(People.NAME);
+        mNotesColumn = mCursor.getColumnIndex(People.NOTES);
+        mPhoneticNameColumn = mCursor.getColumnIndex(People.PHONETIC_NAME);
+
+        if (mVCardType == VCARD_TYPE_DOCOMO) {
+            try {
+                mWriter.write(convertContactToVCard(new ContactData()));
+            } catch (IOException e) {
+                Log.e(LOG_TAG, "IOException occurred during exportOneContactData: " +
+                        e.getMessage());
+                mErrorReason = "IOException occurred: " + e.getMessage();
+            }
+        }
+
+        return true;
+    }
+
+    @Override
+    public void finalize() {
+        if (!mTerminateIsCalled) {
+            terminate();
+        }
+    }
+
+    public void terminate() {
+        if (mWriter != null) {
+            try {
+                // Flush and sync the data so that a user is able to pull the SDCard just after the
+                // export.
+                mWriter.flush();
+                if (mOutputStream != null && mOutputStream instanceof FileOutputStream) {
+                    try {
+                        ((FileOutputStream)mOutputStream).getFD().sync();
+                    } catch (IOException e) {
+                    }
+                }
+                mWriter.close();
+            } catch (IOException e) {
+            }
+        }
+        if (mCursor != null) {
+            try {
+                mCursor.close();
+            } catch (SQLiteException e) {
+            }
+            mCursor = null;
+        }
+    }
+
+    public int getCount() {
+        if (mCursor == null) {
+            return 0;
+        }
+        return mCursor.getCount();
+    }
+
+    public boolean isAfterLast() {
+        if (mCursor == null) {
+            return false;
+        }
+        return mCursor.isAfterLast();
+    }
+
+    public boolean exportOneContactData() {
+        if (mCursor == null || mCursor.isAfterLast()) {
+            mErrorReason = "Not initialized or database has some problem.";
+            return false;
+        }
+        String name = null;
+        try {
+            ContactData contactData = new ContactData();
+            int personId = mCursor.getInt(mIdColumn);
+            name = contactData.mName = mCursor.getString(mNameColumn);
+            contactData.mNote = mCursor.getString(mNotesColumn);
+            contactData.mPhoneticName = mCursor.getString(mPhoneticNameColumn);
+
+            readAllPhones(contactData, personId);
+            readAllAddresses(contactData, personId);
+            readAllOrgs(contactData, personId);
+            readAllPhotos(contactData, personId);
+            readAllExtensions(contactData, personId);
+
+            mCursor.moveToNext();
+
+            String vcardString = convertContactToVCard(contactData);
+            try {
+                mWriter.write(vcardString);
+            } catch (IOException e) {
+                Log.e(LOG_TAG, "IOException occurred during exportOneContactData: " +
+                        e.getMessage());
+                mErrorReason = "IOException occurred: " + e.getMessage();
+                return false;
+            }
+        } catch (OutOfMemoryError error) {
+            // Maybe some data (e.g. photo) is too big to have in memory. But it should be rare.
+            Log.e(LOG_TAG, "OutOfMemoryError occured. Ignore the entry: " + name);
+            System.gc();
+        }
+
+        return true;
+    }
+
+    /**
+     * @return Return the error reason if possible.
+     */
+    public String getErrorReason() {
+        return mErrorReason;
+    }
+
+    private void readAllPhones(ContactData contact, int personId) {
+        final String[] projection = new String[] {
+                Contacts.Phones.TYPE,
+                Contacts.Phones.LABEL,
+                Contacts.Phones.NUMBER,
+                Contacts.Phones.LABEL,
+        };
+        String selection = String.format("%s=%d", Contacts.Phones.PERSON_ID, personId);
+        Cursor cursor = null;
+        try {
+            cursor = mContentResolver.query(Contacts.Phones.CONTENT_URI,
+                    projection, selection, null, null);
+            if ((cursor != null) && (cursor.moveToFirst())) {
+                int typeColumn = cursor.getColumnIndex(Contacts.Phones.TYPE);
+                int labelColumn = cursor.getColumnIndex(Contacts.Phones.LABEL);
+                int numberColumn = cursor.getColumnIndex(Contacts.Phones.NUMBER);
+                do {
+                    TelData telData = new TelData(cursor.getInt(typeColumn),
+                            cursor.getString(labelColumn), cursor.getString(numberColumn));
+                    contact.mTel.add(telData);
+                } while (cursor.moveToNext());
+            }
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+    }
+
+    private void readAllPhotos(ContactData contact, int personId) {
+        final String[] projection = new String[] {
+                Contacts.Photos.DATA,
+        };
+        String selection = String.format("%s=%d", Contacts.Photos.PERSON_ID, personId);
+        Cursor cursor = null;
+        try {
+            cursor = mContentResolver.query(Contacts.Photos.CONTENT_URI,
+                    projection, selection, null, null);
+            if ((cursor != null) && (cursor.moveToFirst())) {
+                int dataColumn = cursor.getColumnIndex(Contacts.Photos.DATA);
+
+                byte[] data;
+                do {
+                    data = cursor.getBlob(dataColumn);
+                    // Use some heuristics for guessing the format of the image.
+                    if (data != null && data.length > 0) {
+                        if (data.length >= 3 &&
+                                data[0] == 'G' && data[1] == 'I' && data[2] == 'F') {
+                            contact.mPhotoType = "GIF";
+                        } else if (data.length >= 4 &&
+                                data[0] == (byte)0x89 && data[1] == 'P' && data[2] == 'N' &&
+                                data[3] == 'G') {
+                            // Note: vCard 2.1 officially does not support PNG, but we may have it
+                            // and using X- word like "X-PNG" may not let importers know it is
+                            // PNG. So we use the String "PNG" as is...
+                            contact.mPhotoType = "PNG";
+                        } else if (data.length >= 2 &&
+                                data[0] == (byte)0xff && data[1] == (byte)0xd8) {
+                            contact.mPhotoType = "JPEG";
+                        } else {
+                            // TODO: vCard specification requires the other formats like TIFF...
+                            Log.d(LOG_TAG, "Unknown photo type. Ignore.");
+                            continue;
+                        }
+                    }
+                    String photoData = encodeBase64(data);
+                    if (photoData.length() > 0) {
+                        contact.mPhoto = photoData;
+                    }
+                } while (cursor.moveToNext());
+            }
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+    }
+
+    private void readAllAddresses(ContactData contact, int personId) {
+        final String[] projection = new String[] {
+                Contacts.ContactMethods.TYPE,
+                Contacts.ContactMethods.LABEL,
+                Contacts.ContactMethods.DATA,
+                Contacts.ContactMethods.KIND,
+        };
+        String selection = String.format("%s=%d AND %s IN (1,2)",
+                Contacts.ContactMethods.PERSON_ID, personId, Contacts.ContactMethods.KIND);
+        Cursor cursor = null;
+        try {
+            cursor = mContentResolver.query(Contacts.ContactMethods.CONTENT_URI,
+                    projection, selection, null, null);
+            if ((cursor != null) && (cursor.moveToFirst())) {
+                int typeColumn = cursor.getColumnIndex(Contacts.ContactMethods.TYPE);
+                int labelColumn = cursor.getColumnIndex(Contacts.ContactMethods.LABEL);
+                int dataColumn = cursor.getColumnIndex(Contacts.ContactMethods.DATA);
+                int kindColumn = cursor.getColumnIndex(Contacts.ContactMethods.KIND);
+                do {
+                    int kind = cursor.getInt(kindColumn);
+
+                    switch(kind) {
+                    case Contacts.KIND_EMAIL:
+                        EmailData emailData = new EmailData(cursor.getInt(typeColumn),
+                                cursor.getString(labelColumn), cursor.getString(dataColumn));
+                        contact.mEmail.add(emailData);
+                        break;
+                    case Contacts.KIND_POSTAL:
+                        AddressData addr = new AddressData(cursor.getInt(typeColumn),
+                                cursor.getString(labelColumn), cursor.getString(dataColumn));
+                        contact.mAddr.add(addr);
+                        break;
+                    default:
+                        break;
+                    }
+                } while (cursor.moveToNext());
+            }
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+    }
+
+    private void readAllOrgs(ContactData contactData, int personId) {
+        final String[] projection = new String[] {
+                Contacts.Organizations.COMPANY,
+                Contacts.Organizations.TITLE,
+        };
+        String selection = String.format("%s=%d", Contacts.ContactMethods.PERSON_ID, personId);
+        Cursor cursor = null;
+        try {
+            cursor = mContentResolver.query(Contacts.Organizations.CONTENT_URI,
+                    projection, selection, null, null);
+            if ((cursor != null) && (cursor.moveToFirst())) {
+                int companyColumn = cursor.getColumnIndex(Contacts.Organizations.COMPANY);
+                int titleColumn = cursor.getColumnIndex(Contacts.Organizations.TITLE);
+                do {
+                    contactData.mOrg =  cursor.getString(companyColumn);
+                    contactData.mTitle = cursor.getString(titleColumn);
+                } while (cursor.moveToNext());
+            }
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+    }
+
+    private void readAllExtensions(ContactData contactData, int personId) {
+        final String[] projection = new String[] {
+                Contacts.Extensions.NAME,
+                Contacts.Extensions.VALUE,
+        };
+        String selection = String.format("%s=%d", Contacts.Extensions.PERSON_ID, personId);
+        Cursor cursor = null;
+        try {
+            cursor = mContentResolver.query(Contacts.Extensions.CONTENT_URI,
+                    projection, selection, null, null);
+            if ((cursor != null) && (cursor.moveToFirst())) {
+                int nameColumn = cursor.getColumnIndex(Contacts.Extensions.NAME);
+                int valueColumn = cursor.getColumnIndex(Contacts.Extensions.VALUE);
+                do {
+                    contactData.mExtensions.put(
+                            cursor.getString(nameColumn),
+                            cursor.getString(valueColumn));
+                } while (cursor.moveToNext());
+            }
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+    }
+
+    private String toHalfWidthString(String orgString) {
+        StringBuilder builder = new StringBuilder();
+        int length = orgString.length();
+        for (int i = 0; i < length; i++) {
+            // All Japanese character is able to be expressed by char.
+            // Do not need to use String#codepPointAt().
+            char ch = orgString.charAt(i);
+            CharSequence halfWidthText = JapaneseUtils.tryGetHalfWidthText(ch);
+            if (halfWidthText != null) {
+                builder.append(halfWidthText);
+            } else {
+                builder.append(ch);
+            }
+        }
+        return builder.toString();
+    }
+
+    private String encodeSomeCharacters(String str) {
+        char[] strArray = str.toCharArray();
+        StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < strArray.length; i++) {
+            char ch = strArray[i];
+            switch (ch) {
+            case ';':
+                builder.append('\\');
+                builder.append(';');
+                break;
+            case '\r':
+            case '\n':
+                // ignore
+                break;
+            case '\\':
+            case '<':
+            case '>':
+                if (mVCardType == VCARD_TYPE_DOCOMO) {
+                    builder.append('\\');
+                    builder.append(ch);
+                }
+                break;
+            default:
+                builder.append(ch);
+                break;
+            }
+        }
+        return builder.toString();
+    }
+
+    private String convertContactToVCard(ContactData contactData) {
+        // Some DoCoMo mobile devices cannot parse a VCard data which does not have empty field.
+        final boolean isDoCoMo = (mVCardType == VCARD_TYPE_DOCOMO);
+        StringBuilder builder = new StringBuilder();
+        appendVCardLine(builder, VCARD_PROPERTY_BEGIN, VCARD_DATA_VCARD);
+        appendVCardLine(builder, VCARD_PROPERTY_VERSION, VCARD_DATA_VERSION_V21);
+
+        if (!TextUtils.isEmpty(contactData.mName)) {
+            builder.append(VCARD_PROPERTY_NAME);
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(mVCardAttributeCharset);
+            builder.append(VCARD_DATA_SEPARATOR);
+            builder.append(encodeSomeCharacters(contactData.mName));
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_COL_SEPARATOR);
+        } else if (isDoCoMo) {
+            appendVCardLine(builder, VCARD_PROPERTY_NAME, "");
+        }
+
+        if (!TextUtils.isEmpty(contactData.mPhoneticName)) {
+            // Note: There is no appropriate property for expressing phonetic name in VCard 2.1,
+            //       while there is in VCard 3.0 (SORT-STRING).
+            //       We choose to use DoCoMo's way since it is supported by Japanese mobile phones.
+            builder.append(VCARD_PROPERTY_SOUND);
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(VCARD_ATTR_X_IRMC_N);
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(mVCardAttributeCharset);
+            builder.append(VCARD_DATA_SEPARATOR);
+            // TODO: Not only DoCoMo but also other Japanese mobile careers requires this.
+            String phoneticName =
+                (isDoCoMo ? toHalfWidthString(contactData.mPhoneticName) :
+                    contactData.mPhoneticName);
+            builder.append(encodeSomeCharacters(phoneticName));
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_COL_SEPARATOR);
+        } else if (isDoCoMo) {
+            // VCARD_ITEM_SEPARATOR should be inserted for DoCoMo devices.
+            builder.append(VCARD_PROPERTY_SOUND);
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(VCARD_ATTR_X_IRMC_N);
+            builder.append(VCARD_DATA_SEPARATOR);
+            // Empty data.
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_COL_SEPARATOR);
+        }
+
+        if (contactData.mTel.size() > 0) {
+            for (TelData telData : contactData.mTel) {
+                appendVCardTelephoneLine(builder, telData.mType,
+                        telData.mLabel, telData.mValue);
+            }
+        } else if (isDoCoMo) {
+            appendVCardTelephoneLine(builder, Contacts.Phones.TYPE_HOME, "", "");
+        }
+
+        if (contactData.mEmail.size() > 0) {
+            for (EmailData emailData : contactData.mEmail) {
+                appendVCardEmailLine(builder, emailData.mType,
+                        emailData.mLabel, emailData.mValue);
+            }
+        } else if (isDoCoMo) {
+            appendVCardEmailLine(builder, Contacts.ContactMethods.TYPE_HOME, "", "");
+        }
+
+        if (isDoCoMo) {
+            appendVCardAddressLinesForDoCoMo(builder, contactData);
+        } else {
+            appendVCardAddressLinesForGeneric(builder, contactData);
+        }
+
+        if (!TextUtils.isEmpty(contactData.mOrg)) {
+            appendVCardLine(builder, VCARD_PROPERTY_ORG, contactData.mOrg, true, true);
+        }
+
+        if (!TextUtils.isEmpty(contactData.mTitle)) {
+            appendVCardLine(builder, VCARD_PROPERTY_TITLE, contactData.mTitle, true, true);
+        }
+
+        if (!TextUtils.isEmpty(contactData.mNote)) {
+            appendVCardLine(builder, VCARD_PROPERTY_NOTE, contactData.mNote, true, true);
+        }
+
+        if ((contactData.mPhoto != null) && (contactData.mPhoto.length() > 0)) {
+            // Note that contactData.mPhoto is already BASE64-encoded.
+            appendVCardPhotoLine(builder, contactData.mPhoto, contactData.mPhotoType);
+        }
+
+        appendVCardExtension(builder, contactData, VCARD_PROPERTY_BDAY, isDoCoMo);
+
+        // XXX: URL may have non-ascii chars. Should we add charset?
+        appendVCardExtension(builder, contactData, VCARD_PROPERTY_URL, isDoCoMo);
+
+        if (isDoCoMo) {
+            if (contactData.mExtensions.containsKey(VCARD_PROPERTY_X_CLASS)) {
+                appendVCardExtension(builder, contactData, VCARD_PROPERTY_X_CLASS, true);
+            } else {
+                appendVCardLine(builder, VCARD_PROPERTY_X_CLASS, VCARD_DATA_PUBLIC);
+            }
+            appendVCardExtension(builder, contactData, VCARD_PROPERTY_X_REDUCTION, true);
+            appendVCardExtension(builder, contactData, VCARD_PROPERTY_X_NO, true);
+            appendVCardExtension(builder, contactData, VCARD_PROPERTY_X_DCM_HMN_MODE, true);
+        }
+
+        appendVCardLine(builder, VCARD_PROPERTY_END, VCARD_DATA_VCARD);
+
+        return builder.toString();
+    }
+
+    private void appendVCardAddressLinesForGeneric(StringBuilder builder, ContactData contactData) {
+        for (AddressData addr : contactData.mAddr) {
+            appendVCardAddressLine(builder, addr.mType, addr.mLabel, addr.mValue);
+        }
+    }
+
+    private void appendVCardAddressLinesForDoCoMo(StringBuilder builder, ContactData contactData) {
+        boolean isAddrSet = false;
+        for (AddressData addr : contactData.mAddr) {
+            if ((!isAddrSet) && (addr.mType == Contacts.ContactMethods.TYPE_HOME)) {
+                appendVCardAddressLine(builder, addr.mType, addr.mLabel,
+                        addr.mValue);
+                isAddrSet = true;
+                break;
+            }
+        }
+        if (!isAddrSet) {
+            for (AddressData addr : contactData.mAddr) {
+                if ((!isAddrSet) && (addr.mType == Contacts.ContactMethods.TYPE_WORK)) {
+                    appendVCardAddressLine(builder, addr.mType, addr.mLabel,
+                            addr.mValue);
+                    isAddrSet = true;
+                    break;
+                }
+            }
+        }
+        if (!isAddrSet) {
+            for (AddressData addr : contactData.mAddr) {
+                if ((!isAddrSet)  && (addr.mType == Contacts.ContactMethods.TYPE_OTHER)) {
+                    appendVCardAddressLine(builder, addr.mType, addr.mLabel,
+                            addr.mValue);
+                    isAddrSet = true;
+                    break;
+                }
+            }
+        }
+        if (!isAddrSet) {
+            for (AddressData addr : contactData.mAddr) {
+                if ((!isAddrSet) && (addr.mType == Contacts.ContactMethods.TYPE_CUSTOM)) {
+                    appendVCardAddressLine(builder, addr.mType, addr.mLabel,
+                            addr.mValue);
+                    isAddrSet = true;
+                    break;
+                }
+            }
+        }
+        if (!isAddrSet) {
+            appendVCardAddressLine(builder, Contacts.ContactMethods.TYPE_HOME, "", "");
+        }
+    }
+
+    private void appendVCardPhotoLine(StringBuilder builder, String encodedData, String type) {
+        StringBuilder tmpBuilder = new StringBuilder();
+        tmpBuilder.append(VCARD_PROPERTY_PHOTO);
+        tmpBuilder.append(VCARD_ATTR_SEPARATOR);
+        tmpBuilder.append(VCARD_ATTR_ENCODING_BASE64_V21);
+        tmpBuilder.append(VCARD_ATTR_SEPARATOR);
+        tmpBuilder.append("TYPE=");
+        tmpBuilder.append(type);
+        tmpBuilder.append(VCARD_DATA_SEPARATOR);
+        tmpBuilder.append(encodedData);
+
+        String tmpStr = tmpBuilder.toString();
+        tmpBuilder = new StringBuilder();
+        int lineCount = 0;
+        for (int i = 0; i < tmpStr.length(); i++) {
+            tmpBuilder.append(tmpStr.charAt(i));
+            lineCount++;
+            if (lineCount > 72) {
+                tmpBuilder.append(VCARD_COL_SEPARATOR);
+                tmpBuilder.append(VCARD_WS);
+                lineCount = 0;
+            }
+        }
+        builder.append(tmpBuilder.toString());
+        builder.append(VCARD_COL_SEPARATOR);
+        builder.append(VCARD_COL_SEPARATOR);
+    }
+
+    private void appendVCardAddressLine(StringBuilder builder,
+            int type, String label, String rawData) {
+        builder.append(VCARD_PROPERTY_ADR);
+        builder.append(VCARD_ATTR_SEPARATOR);
+
+        boolean dataExists = !TextUtils.isEmpty(rawData);
+
+        switch(type) {
+        case Contacts.ContactMethods.TYPE_HOME:
+            builder.append(VCARD_ATTR_HOME);
+            if (dataExists) {
+                builder.append(VCARD_ATTR_SEPARATOR);
+            }
+            break;
+        case Contacts.ContactMethods.TYPE_WORK:
+            builder.append(VCARD_ATTR_WORK);
+            if (dataExists) {
+                builder.append(VCARD_ATTR_SEPARATOR);
+            }
+            break;
+        case Contacts.ContactMethods.TYPE_CUSTOM:
+            // Ignore custom value since
+            // - it may violate vCard spec
+            // - it may contain non-ASCII characters
+            // TODO: fix this.
+            //
+            // builder.append(label);
+            // builder.append(VCARD_DATA_SEPARATOR);
+            // break;
+        case Contacts.ContactMethods.TYPE_OTHER:
+        default:
+            // Ignore other methods.
+            // TODO: fix this.
+            break;
+        }
+
+        if (dataExists) {
+            builder.append(mVCardAttributeCharset);
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(VCARD_ATTR_ENCODING_QP);
+        }
+        builder.append(VCARD_DATA_SEPARATOR);
+        if (dataExists) {
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(encodeQuotedPrintable(rawData));
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+            builder.append(VCARD_ITEM_SEPARATOR);
+        }
+        builder.append(VCARD_COL_SEPARATOR);
+    }
+
+    private void appendVCardEmailLine(StringBuilder builder, int type, String label, String data) {
+        builder.append(VCARD_PROPERTY_EMAIL);
+        builder.append(VCARD_ATTR_SEPARATOR);
+
+        switch(type) {
+        case Contacts.ContactMethods.TYPE_CUSTOM:
+            if (label.equals(Contacts.ContactMethodsColumns.MOBILE_EMAIL_TYPE_NAME)) {
+                builder.append(VCARD_ATTR_CELL);
+            } else {
+                // Ignore custom value.
+                builder.append(VCARD_ATTR_INTERNET);
+            }
+            break;
+        case Contacts.ContactMethods.TYPE_HOME:
+            builder.append(VCARD_ATTR_HOME);
+            break;
+        case Contacts.ContactMethods.TYPE_WORK:
+            builder.append(VCARD_ATTR_WORK);
+            break;
+        case Contacts.ContactMethods.TYPE_OTHER:
+        default:
+            builder.append(VCARD_ATTR_INTERNET);
+            break;
+        }
+
+        builder.append(VCARD_DATA_SEPARATOR);
+        builder.append(data);
+        builder.append(VCARD_COL_SEPARATOR);
+    }
+
+    private void appendVCardTelephoneLine(StringBuilder builder,
+            int type, String label, String data) {
+        builder.append(VCARD_PROPERTY_TEL);
+        builder.append(VCARD_ATTR_SEPARATOR);
+
+        switch(type) {
+        case Contacts.Phones.TYPE_CUSTOM:
+            // Ignore custom label.
+            builder.append(VCARD_ATTR_VOICE);
+            break;
+        case Contacts.Phones.TYPE_HOME:
+            builder.append(VCARD_ATTR_HOME);
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(VCARD_ATTR_VOICE);
+            break;
+        case Contacts.Phones.TYPE_MOBILE:
+            builder.append(VCARD_ATTR_CELL);
+            break;
+        case Contacts.Phones.TYPE_WORK:
+            builder.append(VCARD_ATTR_WORK);
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(VCARD_ATTR_VOICE);
+            break;
+        case Contacts.Phones.TYPE_FAX_WORK:
+            builder.append(VCARD_ATTR_WORK);
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(VCARD_ATTR_FAX);
+            break;
+        case Contacts.Phones.TYPE_FAX_HOME:
+            builder.append(VCARD_ATTR_HOME);
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(VCARD_ATTR_FAX);
+            break;
+        case Contacts.Phones.TYPE_PAGER:
+            builder.append(VCARD_ATTR_VOICE);
+            break;
+        case Contacts.Phones.TYPE_OTHER:
+            builder.append(VCARD_ATTR_VOICE);
+            break;
+        default:
+            builder.append(VCARD_ATTR_VOICE);
+            break;
+        }
+
+        builder.append(VCARD_DATA_SEPARATOR);
+        builder.append(data);
+        builder.append(VCARD_COL_SEPARATOR);
+    }
+
+    private void appendVCardExtension(StringBuilder builder, ContactData contactData,
+            String propertyName, boolean mustEmitSomething) {
+        if (contactData.mExtensions.containsKey(propertyName)) {
+            PropertyNode propertyNode =
+                PropertyNode.decode(contactData.mExtensions.get(propertyName));
+            appendVCardLine(builder, propertyName, propertyNode.propValue);
+        } else if (mustEmitSomething) {
+            appendVCardLine(builder, propertyName, "");
+        }
+    }
+
+    private void appendVCardLine(StringBuilder builder, String propertyName, String data) {
+        appendVCardLine(builder, propertyName, data, false, false);
+    }
+
+    private void appendVCardLine(StringBuilder builder, String field, String data,
+            boolean needCharset, boolean needQuotedPrintable) {
+        builder.append(field);
+        if (needCharset) {
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(mVCardAttributeCharset);
+        }
+
+        if (needQuotedPrintable) {
+            builder.append(VCARD_ATTR_SEPARATOR);
+            builder.append(VCARD_ATTR_ENCODING_QP);
+            data = encodeQuotedPrintable(data);
+        }
+
+        builder.append(VCARD_DATA_SEPARATOR);
+        builder.append(data);
+        builder.append(VCARD_COL_SEPARATOR);
+    }
+
+    // TODO: Replace with the method in Base64 class.
+    private static char PAD = '=';
+    private static final char[] ENCODE64 = {
+        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
+        'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f',
+        'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
+        'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/'
+    };
+
+    private String encodeBase64(byte[] data) {
+        if (data == null) {
+            return "";
+        }
+
+        char[] charBuffer = new char[(data.length + 2) / 3 * 4];
+        int position = 0;
+        int _3byte = 0;
+        for (int i=0; i<data.length-2; i+=3) {
+            _3byte = ((data[i] & 0xFF) << 16) + ((data[i+1] & 0xFF) << 8) + (data[i+2] & 0xFF);
+            charBuffer[position++] = ENCODE64[_3byte >> 18];
+            charBuffer[position++] = ENCODE64[(_3byte >> 12) & 0x3F];
+            charBuffer[position++] = ENCODE64[(_3byte >>  6) & 0x3F];
+            charBuffer[position++] = ENCODE64[_3byte & 0x3F];
+        }
+        switch(data.length % 3) {
+        case 1: // [111111][11 0000][0000 00][000000]
+            _3byte = ((data[data.length-1] & 0xFF) << 16);
+            charBuffer[position++] = ENCODE64[_3byte >> 18];
+            charBuffer[position++] = ENCODE64[(_3byte >> 12) & 0x3F];
+            charBuffer[position++] = PAD;
+            charBuffer[position++] = PAD;
+            break;
+        case 2: // [111111][11 1111][1111 00][000000]
+            _3byte = ((data[data.length-2] & 0xFF) << 16) + ((data[data.length-1] & 0xFF) << 8);
+            charBuffer[position++] = ENCODE64[_3byte >> 18];
+            charBuffer[position++] = ENCODE64[(_3byte >> 12) & 0x3F];
+            charBuffer[position++] = ENCODE64[(_3byte >>  6) & 0x3F];
+            charBuffer[position++] = PAD;
+            break;
+        }
+
+        return new String(charBuffer);
+    }
+
+    private String encodeQuotedPrintable(String str) {
+        {
+            // Replace "\n" and "\r" with "\r\n".
+            StringBuilder tmpBuilder = new StringBuilder();
+            int length = str.length();
+            for (int i = 0; i < length; i++) {
+                char ch = str.charAt(i);
+                if (ch == '\r') {
+                    if (i + 1 < length && str.charAt(i + 1) == '\n') {
+                        i++;
+                    }
+                    tmpBuilder.append("\r\n");
+                } else if (ch == '\n') {
+                    tmpBuilder.append("\r\n");
+                } else {
+                    tmpBuilder.append(str.charAt(i));
+                }
+            }
+            str = tmpBuilder.toString();
+        }
+
+        StringBuilder builder = new StringBuilder();
+        int index = 0;
+        int lineCount = 0;
+        byte[] strArray = null;
+
+        try {
+            strArray = str.getBytes(mCharsetString);
+        } catch (UnsupportedEncodingException e) {
+            Log.e(LOG_TAG, "Charset " + mCharsetString + " cannot be used. " +
+                    "Try default charset");
+            strArray = str.getBytes();
+        }
+        while (index < strArray.length) {
+            builder.append(String.format("=%02X", strArray[index]));
+            index += 1;
+            lineCount += 3;
+
+            if (lineCount >= 67) {
+                // Specification requires CRLF must be inserted before the length of the line
+                // becomes more than 76.
+                // Assuming that the next character is a multi-byte character, it will become
+                // 6 bytes.
+                // 76 - 6 - 3 = 67
+                builder.append("=\r\n");
+                lineCount = 0;
+            }
+        }
+
+        return builder.toString();
+    }
+
+    // TODO: replace this with ContactStruct
+    public class ContactData {
+        private String mName = "";
+        private String mPhoneticName = "";
+        private ArrayList<TelData> mTel = new ArrayList<TelData>();
+        private ArrayList<EmailData> mEmail = new ArrayList<EmailData>();
+        private ArrayList<AddressData> mAddr = new ArrayList<AddressData>();
+        private String mOrg = "";
+        private String mTitle = "";
+        private String mNote = "";
+        private String mPhoto = "";
+        private String mPhotoType = "JPG"; // Default
+        private Map<String, String> mExtensions = new HashMap<String, String>();
+
+        public boolean isEmptyName() {
+            return TextUtils.isEmpty(mName);
+        }
+    }
+
+    private class AddressData {
+        private int mType;
+        private String mLabel;
+        private String mValue;
+
+        public AddressData(int type, String label, String value) {
+            mType = type;
+            mLabel = label;
+            mValue = value;
+        }
+    }
+
+    private class EmailData {
+        private int mType;
+        private String mLabel;
+        private String mValue;
+
+        public EmailData(int type, String label, String value) {
+            mType = type;
+            mLabel = label;
+            mValue = value;
+        }
+    }
+
+    private class TelData {
+        private int mType;
+        private String mLabel;
+        private String mValue;
+
+        public TelData(int type, String label, String value) {
+            mType = type;
+            mLabel = label;
+            mValue = value;
+        }
+    }
+}
+
+/**
+ * TextUtils especially for Japanese.
+ * TODO: make this in android.text in the future
+ */
+class JapaneseUtils {
+    static private final Map<Character, String> sHalfWidthMap =
+        new HashMap<Character, String>();
+
+    static {
+        // There's no logical mapping rule in Unicode. Sigh.
+        sHalfWidthMap.put('\u3001', "\uFF64");
+        sHalfWidthMap.put('\u3002', "\uFF61");
+        sHalfWidthMap.put('\u300C', "\uFF62");
+        sHalfWidthMap.put('\u300D', "\uFF63");
+        sHalfWidthMap.put('\u301C', "~");
+        sHalfWidthMap.put('\u3041', "\uFF67");
+        sHalfWidthMap.put('\u3042', "\uFF71");
+        sHalfWidthMap.put('\u3043', "\uFF68");
+        sHalfWidthMap.put('\u3044', "\uFF72");
+        sHalfWidthMap.put('\u3045', "\uFF69");
+        sHalfWidthMap.put('\u3046', "\uFF73");
+        sHalfWidthMap.put('\u3047', "\uFF6A");
+        sHalfWidthMap.put('\u3048', "\uFF74");
+        sHalfWidthMap.put('\u3049', "\uFF6B");
+        sHalfWidthMap.put('\u304A', "\uFF75");
+        sHalfWidthMap.put('\u304B', "\uFF76");
+        sHalfWidthMap.put('\u304C', "\uFF76\uFF9E");
+        sHalfWidthMap.put('\u304D', "\uFF77");
+        sHalfWidthMap.put('\u304E', "\uFF77\uFF9E");
+        sHalfWidthMap.put('\u304F', "\uFF78");
+        sHalfWidthMap.put('\u3050', "\uFF78\uFF9E");
+        sHalfWidthMap.put('\u3051', "\uFF79");
+        sHalfWidthMap.put('\u3052', "\uFF79\uFF9E");
+        sHalfWidthMap.put('\u3053', "\uFF7A");
+        sHalfWidthMap.put('\u3054', "\uFF7A\uFF9E");
+        sHalfWidthMap.put('\u3055', "\uFF7B");
+        sHalfWidthMap.put('\u3056', "\uFF7B\uFF9E");
+        sHalfWidthMap.put('\u3057', "\uFF7C");
+        sHalfWidthMap.put('\u3058', "\uFF7C\uFF9E");
+        sHalfWidthMap.put('\u3059', "\uFF7D");
+        sHalfWidthMap.put('\u305A', "\uFF7D\uFF9E");
+        sHalfWidthMap.put('\u305B', "\uFF7E");
+        sHalfWidthMap.put('\u305C', "\uFF7E\uFF9E");
+        sHalfWidthMap.put('\u305D', "\uFF7F");
+        sHalfWidthMap.put('\u305E', "\uFF7F\uFF9E");
+        sHalfWidthMap.put('\u305F', "\uFF80");
+        sHalfWidthMap.put('\u3060', "\uFF80\uFF9E");
+        sHalfWidthMap.put('\u3061', "\uFF81");
+        sHalfWidthMap.put('\u3062', "\uFF81\uFF9E");
+        sHalfWidthMap.put('\u3063', "\uFF6F");
+        sHalfWidthMap.put('\u3064', "\uFF82");
+        sHalfWidthMap.put('\u3065', "\uFF82\uFF9E");
+        sHalfWidthMap.put('\u3066', "\uFF83");
+        sHalfWidthMap.put('\u3067', "\uFF83\uFF9E");
+        sHalfWidthMap.put('\u3068', "\uFF84");
+        sHalfWidthMap.put('\u3069', "\uFF84\uFF9E");
+        sHalfWidthMap.put('\u306A', "\uFF85");
+        sHalfWidthMap.put('\u306B', "\uFF86");
+        sHalfWidthMap.put('\u306C', "\uFF87");
+        sHalfWidthMap.put('\u306D', "\uFF88");
+        sHalfWidthMap.put('\u306E', "\uFF89");
+        sHalfWidthMap.put('\u306F', "\uFF8A");
+        sHalfWidthMap.put('\u3070', "\uFF8A\uFF9E");
+        sHalfWidthMap.put('\u3071', "\uFF8A\uFF9F");
+        sHalfWidthMap.put('\u3072', "\uFF8B");
+        sHalfWidthMap.put('\u3073', "\uFF8B\uFF9E");
+        sHalfWidthMap.put('\u3074', "\uFF8B\uFF9F");
+        sHalfWidthMap.put('\u3075', "\uFF8C");
+        sHalfWidthMap.put('\u3076', "\uFF8C\uFF9E");
+        sHalfWidthMap.put('\u3077', "\uFF8C\uFF9F");
+        sHalfWidthMap.put('\u3078', "\uFF8D");
+        sHalfWidthMap.put('\u3079', "\uFF8D\uFF9E");
+        sHalfWidthMap.put('\u307A', "\uFF8D\uFF9F");
+        sHalfWidthMap.put('\u307B', "\uFF8E");
+        sHalfWidthMap.put('\u307C', "\uFF8E\uFF9E");
+        sHalfWidthMap.put('\u307D', "\uFF8E\uFF9F");
+        sHalfWidthMap.put('\u307E', "\uFF8F");
+        sHalfWidthMap.put('\u307F', "\uFF90");
+        sHalfWidthMap.put('\u3080', "\uFF91");
+        sHalfWidthMap.put('\u3081', "\uFF92");
+        sHalfWidthMap.put('\u3082', "\uFF93");
+        sHalfWidthMap.put('\u3083', "\uFF6C");
+        sHalfWidthMap.put('\u3084', "\uFF94");
+        sHalfWidthMap.put('\u3085', "\uFF6D");
+        sHalfWidthMap.put('\u3086', "\uFF95");
+        sHalfWidthMap.put('\u3087', "\uFF6E");
+        sHalfWidthMap.put('\u3088', "\uFF96");
+        sHalfWidthMap.put('\u3089', "\uFF97");
+        sHalfWidthMap.put('\u308A', "\uFF98");
+        sHalfWidthMap.put('\u308B', "\uFF99");
+        sHalfWidthMap.put('\u308C', "\uFF9A");
+        sHalfWidthMap.put('\u308D', "\uFF9B");
+        sHalfWidthMap.put('\u308E', "\uFF9C");
+        sHalfWidthMap.put('\u308F', "\uFF9C");
+        sHalfWidthMap.put('\u3090', "\uFF72");
+        sHalfWidthMap.put('\u3091', "\uFF74");
+        sHalfWidthMap.put('\u3092', "\uFF66");
+        sHalfWidthMap.put('\u3093', "\uFF9D");
+        sHalfWidthMap.put('\u309B', "\uFF9E");
+        sHalfWidthMap.put('\u309C', "\uFF9F");
+        sHalfWidthMap.put('\u30A1', "\uFF67");
+        sHalfWidthMap.put('\u30A2', "\uFF71");
+        sHalfWidthMap.put('\u30A3', "\uFF68");
+        sHalfWidthMap.put('\u30A4', "\uFF72");
+        sHalfWidthMap.put('\u30A5', "\uFF69");
+        sHalfWidthMap.put('\u30A6', "\uFF73");
+        sHalfWidthMap.put('\u30A7', "\uFF6A");
+        sHalfWidthMap.put('\u30A8', "\uFF74");
+        sHalfWidthMap.put('\u30A9', "\uFF6B");
+        sHalfWidthMap.put('\u30AA', "\uFF75");
+        sHalfWidthMap.put('\u30AB', "\uFF76");
+        sHalfWidthMap.put('\u30AC', "\uFF76\uFF9E");
+        sHalfWidthMap.put('\u30AD', "\uFF77");
+        sHalfWidthMap.put('\u30AE', "\uFF77\uFF9E");
+        sHalfWidthMap.put('\u30AF', "\uFF78");
+        sHalfWidthMap.put('\u30B0', "\uFF78\uFF9E");
+        sHalfWidthMap.put('\u30B1', "\uFF79");
+        sHalfWidthMap.put('\u30B2', "\uFF79\uFF9E");
+        sHalfWidthMap.put('\u30B3', "\uFF7A");
+        sHalfWidthMap.put('\u30B4', "\uFF7A\uFF9E");
+        sHalfWidthMap.put('\u30B5', "\uFF7B");
+        sHalfWidthMap.put('\u30B6', "\uFF7B\uFF9E");
+        sHalfWidthMap.put('\u30B7', "\uFF7C");
+        sHalfWidthMap.put('\u30B8', "\uFF7C\uFF9E");
+        sHalfWidthMap.put('\u30B9', "\uFF7D");
+        sHalfWidthMap.put('\u30BA', "\uFF7D\uFF9E");
+        sHalfWidthMap.put('\u30BB', "\uFF7E");
+        sHalfWidthMap.put('\u30BC', "\uFF7E\uFF9E");
+        sHalfWidthMap.put('\u30BD', "\uFF7F");
+        sHalfWidthMap.put('\u30BE', "\uFF7F\uFF9E");
+        sHalfWidthMap.put('\u30BF', "\uFF80");
+        sHalfWidthMap.put('\u30C0', "\uFF80\uFF9E");
+        sHalfWidthMap.put('\u30C1', "\uFF81");
+        sHalfWidthMap.put('\u30C2', "\uFF81\uFF9E");
+        sHalfWidthMap.put('\u30C3', "\uFF6F");
+        sHalfWidthMap.put('\u30C4', "\uFF82");
+        sHalfWidthMap.put('\u30C5', "\uFF82\uFF9E");
+        sHalfWidthMap.put('\u30C6', "\uFF83");
+        sHalfWidthMap.put('\u30C7', "\uFF83\uFF9E");
+        sHalfWidthMap.put('\u30C8', "\uFF84");
+        sHalfWidthMap.put('\u30C9', "\uFF84\uFF9E");
+        sHalfWidthMap.put('\u30CA', "\uFF85");
+        sHalfWidthMap.put('\u30CB', "\uFF86");
+        sHalfWidthMap.put('\u30CC', "\uFF87");
+        sHalfWidthMap.put('\u30CD', "\uFF88");
+        sHalfWidthMap.put('\u30CE', "\uFF89");
+        sHalfWidthMap.put('\u30CF', "\uFF8A");
+        sHalfWidthMap.put('\u30D0', "\uFF8A\uFF9E");
+        sHalfWidthMap.put('\u30D1', "\uFF8A\uFF9F");
+        sHalfWidthMap.put('\u30D2', "\uFF8B");
+        sHalfWidthMap.put('\u30D3', "\uFF8B\uFF9E");
+        sHalfWidthMap.put('\u30D4', "\uFF8B\uFF9F");
+        sHalfWidthMap.put('\u30D5', "\uFF8C");
+        sHalfWidthMap.put('\u30D6', "\uFF8C\uFF9E");
+        sHalfWidthMap.put('\u30D7', "\uFF8C\uFF9F");
+        sHalfWidthMap.put('\u30D8', "\uFF8D");
+        sHalfWidthMap.put('\u30D9', "\uFF8D\uFF9E");
+        sHalfWidthMap.put('\u30DA', "\uFF8D\uFF9F");
+        sHalfWidthMap.put('\u30DB', "\uFF8E");
+        sHalfWidthMap.put('\u30DC', "\uFF8E\uFF9E");
+        sHalfWidthMap.put('\u30DD', "\uFF8E\uFF9F");
+        sHalfWidthMap.put('\u30DE', "\uFF8F");
+        sHalfWidthMap.put('\u30DF', "\uFF90");
+        sHalfWidthMap.put('\u30E0', "\uFF91");
+        sHalfWidthMap.put('\u30E1', "\uFF92");
+        sHalfWidthMap.put('\u30E2', "\uFF93");
+        sHalfWidthMap.put('\u30E3', "\uFF6C");
+        sHalfWidthMap.put('\u30E4', "\uFF94");
+        sHalfWidthMap.put('\u30E5', "\uFF6D");
+        sHalfWidthMap.put('\u30E6', "\uFF95");
+        sHalfWidthMap.put('\u30E7', "\uFF6E");
+        sHalfWidthMap.put('\u30E8', "\uFF96");
+        sHalfWidthMap.put('\u30E9', "\uFF97");
+        sHalfWidthMap.put('\u30EA', "\uFF98");
+        sHalfWidthMap.put('\u30EB', "\uFF99");
+        sHalfWidthMap.put('\u30EC', "\uFF9A");
+        sHalfWidthMap.put('\u30ED', "\uFF9B");
+        sHalfWidthMap.put('\u30EE', "\uFF9C");
+        sHalfWidthMap.put('\u30EF', "\uFF9C");
+        sHalfWidthMap.put('\u30F0', "\uFF72");
+        sHalfWidthMap.put('\u30F1', "\uFF74");
+        sHalfWidthMap.put('\u30F2', "\uFF66");
+        sHalfWidthMap.put('\u30F3', "\uFF9D");
+        sHalfWidthMap.put('\u30F4', "\uFF73\uFF9E");
+        sHalfWidthMap.put('\u30F5', "\uFF76");
+        sHalfWidthMap.put('\u30F6', "\uFF79");
+        sHalfWidthMap.put('\u30FB', "\uFF65");
+        sHalfWidthMap.put('\u30FC', "\uFF70");
+        sHalfWidthMap.put('\uFF01', "!");
+        sHalfWidthMap.put('\uFF02', "\"");
+        sHalfWidthMap.put('\uFF03', "#");
+        sHalfWidthMap.put('\uFF04', "$");
+        sHalfWidthMap.put('\uFF05', "%");
+        sHalfWidthMap.put('\uFF06', "&");
+        sHalfWidthMap.put('\uFF07', "'");
+        sHalfWidthMap.put('\uFF08', "(");
+        sHalfWidthMap.put('\uFF09', ")");
+        sHalfWidthMap.put('\uFF0A', "*");
+        sHalfWidthMap.put('\uFF0B', "+");
+        sHalfWidthMap.put('\uFF0C', ",");
+        sHalfWidthMap.put('\uFF0D', "-");
+        sHalfWidthMap.put('\uFF0E', ".");
+        sHalfWidthMap.put('\uFF0F', "/");
+        sHalfWidthMap.put('\uFF10', "0");
+        sHalfWidthMap.put('\uFF11', "1");
+        sHalfWidthMap.put('\uFF12', "2");
+        sHalfWidthMap.put('\uFF13', "3");
+        sHalfWidthMap.put('\uFF14', "4");
+        sHalfWidthMap.put('\uFF15', "5");
+        sHalfWidthMap.put('\uFF16', "6");
+        sHalfWidthMap.put('\uFF17', "7");
+        sHalfWidthMap.put('\uFF18', "8");
+        sHalfWidthMap.put('\uFF19', "9");
+        sHalfWidthMap.put('\uFF1A', ":");
+        sHalfWidthMap.put('\uFF1B', ";");
+        sHalfWidthMap.put('\uFF1C', "<");
+        sHalfWidthMap.put('\uFF1D', "=");
+        sHalfWidthMap.put('\uFF1E', ">");
+        sHalfWidthMap.put('\uFF1F', "?");
+        sHalfWidthMap.put('\uFF20', "@");
+        sHalfWidthMap.put('\uFF21', "A");
+        sHalfWidthMap.put('\uFF22', "B");
+        sHalfWidthMap.put('\uFF23', "C");
+        sHalfWidthMap.put('\uFF24', "D");
+        sHalfWidthMap.put('\uFF25', "E");
+        sHalfWidthMap.put('\uFF26', "F");
+        sHalfWidthMap.put('\uFF27', "G");
+        sHalfWidthMap.put('\uFF28', "H");
+        sHalfWidthMap.put('\uFF29', "I");
+        sHalfWidthMap.put('\uFF2A', "J");
+        sHalfWidthMap.put('\uFF2B', "K");
+        sHalfWidthMap.put('\uFF2C', "L");
+        sHalfWidthMap.put('\uFF2D', "M");
+        sHalfWidthMap.put('\uFF2E', "N");
+        sHalfWidthMap.put('\uFF2F', "O");
+        sHalfWidthMap.put('\uFF30', "P");
+        sHalfWidthMap.put('\uFF31', "Q");
+        sHalfWidthMap.put('\uFF32', "R");
+        sHalfWidthMap.put('\uFF33', "S");
+        sHalfWidthMap.put('\uFF34', "T");
+        sHalfWidthMap.put('\uFF35', "U");
+        sHalfWidthMap.put('\uFF36', "V");
+        sHalfWidthMap.put('\uFF37', "W");
+        sHalfWidthMap.put('\uFF38', "X");
+        sHalfWidthMap.put('\uFF39', "Y");
+        sHalfWidthMap.put('\uFF3A', "Z");
+        sHalfWidthMap.put('\uFF3B', "[");
+        sHalfWidthMap.put('\uFF3C', "\\");
+        sHalfWidthMap.put('\uFF3D', "]");
+        sHalfWidthMap.put('\uFF3E', "^");
+        sHalfWidthMap.put('\uFF3F', "_");
+        sHalfWidthMap.put('\uFF41', "a");
+        sHalfWidthMap.put('\uFF42', "b");
+        sHalfWidthMap.put('\uFF43', "c");
+        sHalfWidthMap.put('\uFF44', "d");
+        sHalfWidthMap.put('\uFF45', "e");
+        sHalfWidthMap.put('\uFF46', "f");
+        sHalfWidthMap.put('\uFF47', "g");
+        sHalfWidthMap.put('\uFF48', "h");
+        sHalfWidthMap.put('\uFF49', "i");
+        sHalfWidthMap.put('\uFF4A', "j");
+        sHalfWidthMap.put('\uFF4B', "k");
+        sHalfWidthMap.put('\uFF4C', "l");
+        sHalfWidthMap.put('\uFF4D', "m");
+        sHalfWidthMap.put('\uFF4E', "n");
+        sHalfWidthMap.put('\uFF4F', "o");
+        sHalfWidthMap.put('\uFF50', "p");
+        sHalfWidthMap.put('\uFF51', "q");
+        sHalfWidthMap.put('\uFF52', "r");
+        sHalfWidthMap.put('\uFF53', "s");
+        sHalfWidthMap.put('\uFF54', "t");
+        sHalfWidthMap.put('\uFF55', "u");
+        sHalfWidthMap.put('\uFF56', "v");
+        sHalfWidthMap.put('\uFF57', "w");
+        sHalfWidthMap.put('\uFF58', "x");
+        sHalfWidthMap.put('\uFF59', "y");
+        sHalfWidthMap.put('\uFF5A', "z");
+        sHalfWidthMap.put('\uFF5B', "{");
+        sHalfWidthMap.put('\uFF5C', "|");
+        sHalfWidthMap.put('\uFF5D', "}");
+        sHalfWidthMap.put('\uFF5E', "~");
+        sHalfWidthMap.put('\uFF61', "\uFF61");
+        sHalfWidthMap.put('\uFF62', "\uFF62");
+        sHalfWidthMap.put('\uFF63', "\uFF63");
+        sHalfWidthMap.put('\uFF64', "\uFF64");
+        sHalfWidthMap.put('\uFF65', "\uFF65");
+        sHalfWidthMap.put('\uFF66', "\uFF66");
+        sHalfWidthMap.put('\uFF67', "\uFF67");
+        sHalfWidthMap.put('\uFF68', "\uFF68");
+        sHalfWidthMap.put('\uFF69', "\uFF69");
+        sHalfWidthMap.put('\uFF6A', "\uFF6A");
+        sHalfWidthMap.put('\uFF6B', "\uFF6B");
+        sHalfWidthMap.put('\uFF6C', "\uFF6C");
+        sHalfWidthMap.put('\uFF6D', "\uFF6D");
+        sHalfWidthMap.put('\uFF6E', "\uFF6E");
+        sHalfWidthMap.put('\uFF6F', "\uFF6F");
+        sHalfWidthMap.put('\uFF70', "\uFF70");
+        sHalfWidthMap.put('\uFF71', "\uFF71");
+        sHalfWidthMap.put('\uFF72', "\uFF72");
+        sHalfWidthMap.put('\uFF73', "\uFF73");
+        sHalfWidthMap.put('\uFF74', "\uFF74");
+        sHalfWidthMap.put('\uFF75', "\uFF75");
+        sHalfWidthMap.put('\uFF76', "\uFF76");
+        sHalfWidthMap.put('\uFF77', "\uFF77");
+        sHalfWidthMap.put('\uFF78', "\uFF78");
+        sHalfWidthMap.put('\uFF79', "\uFF79");
+        sHalfWidthMap.put('\uFF7A', "\uFF7A");
+        sHalfWidthMap.put('\uFF7B', "\uFF7B");
+        sHalfWidthMap.put('\uFF7C', "\uFF7C");
+        sHalfWidthMap.put('\uFF7D', "\uFF7D");
+        sHalfWidthMap.put('\uFF7E', "\uFF7E");
+        sHalfWidthMap.put('\uFF7F', "\uFF7F");
+        sHalfWidthMap.put('\uFF80', "\uFF80");
+        sHalfWidthMap.put('\uFF81', "\uFF81");
+        sHalfWidthMap.put('\uFF82', "\uFF82");
+        sHalfWidthMap.put('\uFF83', "\uFF83");
+        sHalfWidthMap.put('\uFF84', "\uFF84");
+        sHalfWidthMap.put('\uFF85', "\uFF85");
+        sHalfWidthMap.put('\uFF86', "\uFF86");
+        sHalfWidthMap.put('\uFF87', "\uFF87");
+        sHalfWidthMap.put('\uFF88', "\uFF88");
+        sHalfWidthMap.put('\uFF89', "\uFF89");
+        sHalfWidthMap.put('\uFF8A', "\uFF8A");
+        sHalfWidthMap.put('\uFF8B', "\uFF8B");
+        sHalfWidthMap.put('\uFF8C', "\uFF8C");
+        sHalfWidthMap.put('\uFF8D', "\uFF8D");
+        sHalfWidthMap.put('\uFF8E', "\uFF8E");
+        sHalfWidthMap.put('\uFF8F', "\uFF8F");
+        sHalfWidthMap.put('\uFF90', "\uFF90");
+        sHalfWidthMap.put('\uFF91', "\uFF91");
+        sHalfWidthMap.put('\uFF92', "\uFF92");
+        sHalfWidthMap.put('\uFF93', "\uFF93");
+        sHalfWidthMap.put('\uFF94', "\uFF94");
+        sHalfWidthMap.put('\uFF95', "\uFF95");
+        sHalfWidthMap.put('\uFF96', "\uFF96");
+        sHalfWidthMap.put('\uFF97', "\uFF97");
+        sHalfWidthMap.put('\uFF98', "\uFF98");
+        sHalfWidthMap.put('\uFF99', "\uFF99");
+        sHalfWidthMap.put('\uFF9A', "\uFF9A");
+        sHalfWidthMap.put('\uFF9B', "\uFF9B");
+        sHalfWidthMap.put('\uFF9C', "\uFF9C");
+        sHalfWidthMap.put('\uFF9D', "\uFF9D");
+        sHalfWidthMap.put('\uFF9E', "\uFF9E");
+        sHalfWidthMap.put('\uFF9F', "\uFF9F");
+        sHalfWidthMap.put('\uFFE5', "\u005C\u005C");
+    }
+
+    /**
+     * Return half-width version of that character if possible. Return null if not possible
+     * @param ch input character
+     * @return CharSequence object if the mapping for ch exists. Return null otherwise.
+     */
+    public static CharSequence tryGetHalfWidthText(char ch) {
+        if (sHalfWidthMap.containsKey(ch)) {
+            return sHalfWidthMap.get(ch);
+        } else {
+            return null;
+        }
+    }
+}