am 994b896e: (-s ours) am 4000887f: (-s ours) am 0308361b: Import translations. DO NOT MERGE

* commit '994b896ef15187b8e7abef679e76540d57f4b144':
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d06fe1d..43fd693 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -545,7 +545,13 @@
                 <data android:mimeType="image/*" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-            />
+        </activity>
+
+        <!-- Internal photo selection activity -->
+        <activity android:name=".activities.PhotoSelectionActivity"
+            android:theme="@style/Theme.PhotoSelector"
+            android:launchMode="singleTop"
+            android:windowSoftInputMode="stateUnchanged">
         </activity>
 
         <!-- Interstitial activity that shows a phone disambig dialog -->
@@ -562,7 +568,6 @@
                 <data android:mimeType="text/directory" />
                 <data android:mimeType="text/vcard" />
                 <data android:mimeType="text/x-vcard" />
-                <data android:mimeType="text/x-vCard" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
@@ -574,7 +579,6 @@
                 <action android:name="android.nfc.action.NDEF_DISCOVERED" />
                 <data android:mimeType="text/vcard" />
                 <data android:mimeType="text/x-vcard" />
-                <data android:mimeType="text/x-vCard" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
diff --git a/proguard.flags b/proguard.flags
index f4ec4b2..79378e6 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -9,24 +9,10 @@
   public void *(android.view.MenuItem);
 }
 
-# TODO: Instead of keeping the following two functions we could as well just remove them completely
-# as they are only used in test code
-
--keep class com.android.contacts.model.EntityDelta {
-  public com.android.contacts.model.EntityDelta$ValuesDelta getSuperPrimaryEntry(java.lang.String,boolean);
-}
-
--keep class com.android.contacts.model.EntityDelta$ValuesDelta {
-  public android.content.ContentValues getAfter();
-}
-
-# Any methods whose name is '*ForTest' are preserved.
--keep class ** {
-  *** *ForTest(...);
-}
-
 # Any class or method annotated with NeededForTesting.
 -keep @com.android.contacts.test.NeededForTesting class *
 -keepclassmembers class * {
 @com.android.contacts.test.NeededForTesting *;
 }
+
+-verbose
diff --git a/res/drawable-hdpi/ic_menu_2sec_pause.png b/res/drawable-hdpi/ic_menu_2sec_pause.png
deleted file mode 100644
index 3951948..0000000
--- a/res/drawable-hdpi/ic_menu_2sec_pause.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_accounts_holo_light.png b/res/drawable-hdpi/ic_menu_accounts_holo_light.png
deleted file mode 100644
index 59496c9..0000000
--- a/res/drawable-hdpi/ic_menu_accounts_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_display_all_holo_light.png b/res/drawable-hdpi/ic_menu_display_all_holo_light.png
deleted file mode 100644
index 59631f0..0000000
--- a/res/drawable-hdpi/ic_menu_display_all_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_import_export_holo_light.png b/res/drawable-hdpi/ic_menu_import_export_holo_light.png
deleted file mode 100644
index a67386f..0000000
--- a/res/drawable-hdpi/ic_menu_import_export_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_mark.png b/res/drawable-hdpi/ic_menu_mark.png
deleted file mode 100755
index 1c09175..0000000
--- a/res/drawable-hdpi/ic_menu_mark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_merge_holo_light.png b/res/drawable-hdpi/ic_menu_merge_holo_light.png
deleted file mode 100644
index eaf32d2..0000000
--- a/res/drawable-hdpi/ic_menu_merge_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_share_holo_light.png b/res/drawable-hdpi/ic_menu_share_holo_light.png
deleted file mode 100644
index 2ba6fb7..0000000
--- a/res/drawable-hdpi/ic_menu_share_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_split_holo_light.png b/res/drawable-hdpi/ic_menu_split_holo_light.png
deleted file mode 100644
index 3784544..0000000
--- a/res/drawable-hdpi/ic_menu_split_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_trash_holo_light.png b/res/drawable-hdpi/ic_menu_trash_holo_light.png
deleted file mode 100644
index 481eb65..0000000
--- a/res/drawable-hdpi/ic_menu_trash_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_wait.png b/res/drawable-hdpi/ic_menu_wait.png
deleted file mode 100644
index 6886e5d..0000000
--- a/res/drawable-hdpi/ic_menu_wait.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_2sec_pause.png b/res/drawable-mdpi/ic_menu_2sec_pause.png
deleted file mode 100644
index dcaa5ff..0000000
--- a/res/drawable-mdpi/ic_menu_2sec_pause.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_accounts_holo_light.png b/res/drawable-mdpi/ic_menu_accounts_holo_light.png
deleted file mode 100644
index ae291d8..0000000
--- a/res/drawable-mdpi/ic_menu_accounts_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_display_all_holo_light.png b/res/drawable-mdpi/ic_menu_display_all_holo_light.png
deleted file mode 100644
index 9781312..0000000
--- a/res/drawable-mdpi/ic_menu_display_all_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_import_export_holo_light.png b/res/drawable-mdpi/ic_menu_import_export_holo_light.png
deleted file mode 100644
index e31ec6b..0000000
--- a/res/drawable-mdpi/ic_menu_import_export_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_mark.png b/res/drawable-mdpi/ic_menu_mark.png
deleted file mode 100644
index 41ccddf..0000000
--- a/res/drawable-mdpi/ic_menu_mark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_merge_holo_light.png b/res/drawable-mdpi/ic_menu_merge_holo_light.png
deleted file mode 100644
index a650c4d..0000000
--- a/res/drawable-mdpi/ic_menu_merge_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_share_holo_light.png b/res/drawable-mdpi/ic_menu_share_holo_light.png
deleted file mode 100644
index 6b42585..0000000
--- a/res/drawable-mdpi/ic_menu_share_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_split_holo_light.png b/res/drawable-mdpi/ic_menu_split_holo_light.png
deleted file mode 100644
index 56afbc9..0000000
--- a/res/drawable-mdpi/ic_menu_split_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_trash_holo_light.png b/res/drawable-mdpi/ic_menu_trash_holo_light.png
deleted file mode 100644
index 29801b4..0000000
--- a/res/drawable-mdpi/ic_menu_trash_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_wait.png b/res/drawable-mdpi/ic_menu_wait.png
deleted file mode 100644
index c20457a..0000000
--- a/res/drawable-mdpi/ic_menu_wait.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_2sec_pause.png b/res/drawable-xhdpi/ic_menu_2sec_pause.png
deleted file mode 100644
index 56f68b3..0000000
--- a/res/drawable-xhdpi/ic_menu_2sec_pause.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_accounts_holo_light.png b/res/drawable-xhdpi/ic_menu_accounts_holo_light.png
deleted file mode 100644
index e58c7c8..0000000
--- a/res/drawable-xhdpi/ic_menu_accounts_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_display_all_holo_light.png b/res/drawable-xhdpi/ic_menu_display_all_holo_light.png
deleted file mode 100644
index 0aa4cad..0000000
--- a/res/drawable-xhdpi/ic_menu_display_all_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_import_export_holo_light.png b/res/drawable-xhdpi/ic_menu_import_export_holo_light.png
deleted file mode 100644
index 7b7d9da..0000000
--- a/res/drawable-xhdpi/ic_menu_import_export_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_mark.png b/res/drawable-xhdpi/ic_menu_mark.png
deleted file mode 100644
index a24adc5..0000000
--- a/res/drawable-xhdpi/ic_menu_mark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_merge_holo_light.png b/res/drawable-xhdpi/ic_menu_merge_holo_light.png
deleted file mode 100644
index 31bc346..0000000
--- a/res/drawable-xhdpi/ic_menu_merge_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_share_holo_light.png b/res/drawable-xhdpi/ic_menu_share_holo_light.png
deleted file mode 100644
index 1c88e0e..0000000
--- a/res/drawable-xhdpi/ic_menu_share_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_split_holo_light.png b/res/drawable-xhdpi/ic_menu_split_holo_light.png
deleted file mode 100644
index 16c6ade..0000000
--- a/res/drawable-xhdpi/ic_menu_split_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_trash_holo_light.png b/res/drawable-xhdpi/ic_menu_trash_holo_light.png
deleted file mode 100644
index d234d73..0000000
--- a/res/drawable-xhdpi/ic_menu_trash_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_wait.png b/res/drawable-xhdpi/ic_menu_wait.png
deleted file mode 100644
index ee5ee68..0000000
--- a/res/drawable-xhdpi/ic_menu_wait.png
+++ /dev/null
Binary files differ
diff --git a/res/layout-sw580dp-w1000dp/contact_editor_activity.xml b/res/layout-sw580dp-w1000dp/contact_editor_activity.xml
index d2e0d22..cb4067e 100644
--- a/res/layout-sw580dp-w1000dp/contact_editor_activity.xml
+++ b/res/layout-sw580dp-w1000dp/contact_editor_activity.xml
@@ -23,7 +23,8 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:orientation="horizontal">
+        android:orientation="horizontal"
+        android:baselineAligned="false">
 
         <!-- Empty view to represent the left margin -->
         <View
diff --git a/res/layout-sw580dp/detail_header_contact_without_updates.xml b/res/layout-sw580dp/detail_header_contact_without_updates.xml
index 9261f11..0f0e3c2 100644
--- a/res/layout-sw580dp/detail_header_contact_without_updates.xml
+++ b/res/layout-sw580dp/detail_header_contact_without_updates.xml
@@ -40,9 +40,7 @@
             android:layout_height="match_parent"
             android:orientation="horizontal">
 
-            <ImageView
-                android:id="@+id/photo"
-                android:scaleType="centerCrop"
+            <include layout="@layout/photo_selector_view"
                 android:layout_width="0dip"
                 android:layout_height="match_parent"
                 android:layout_weight="2" />
diff --git a/res/layout-sw580dp/join_contact_picker.xml b/res/layout-sw580dp/join_contact_picker.xml
new file mode 100644
index 0000000..3d9127b
--- /dev/null
+++ b/res/layout-sw580dp/join_contact_picker.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 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.
+-->
+
+<view xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.contacts.widget.FullHeightLinearLayout"
+    style="@style/ContactPickerLayout"
+    android:orientation="vertical">
+    <!-- See also comments in contact_picker.xml -->
+    <view
+        class="android.widget.SearchView"
+        android:id="@+id/search_view"
+        android:layout_width="match_parent"
+        android:maxWidth="@dimen/contact_picker_search_view_max_width"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="0dip"
+        android:layout_marginRight="@dimen/list_visible_scrollbar_padding"
+        android:paddingRight="0dip"
+        android:iconifiedByDefault="false" />
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:id="@+id/list_container" />
+</view>
diff --git a/res/layout-sw580dp/people_activity.xml b/res/layout-sw580dp/people_activity.xml
index 59a218d..9cf695d 100644
--- a/res/layout-sw580dp/people_activity.xml
+++ b/res/layout-sw580dp/people_activity.xml
@@ -25,14 +25,14 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="horizontal"
-        android:splitMotionEvents="true">
+        android:splitMotionEvents="true"
+        android:baselineAligned="false">
 
-        <LinearLayout
+        <FrameLayout
             android:id="@+id/browse_view"
             android:layout_width="0dip"
             android:layout_height="match_parent"
             android:layout_weight="1"
-            android:orientation="vertical"
             android:background="@drawable/list_background_holo"
             android:visibility="gone">
 
@@ -40,9 +40,8 @@
             <fragment
                 android:id="@+id/all_fragment"
                 class="com.android.contacts.list.DefaultContactBrowseListFragment"
-                android:layout_height="0dip"
-                android:layout_width="match_parent"
-                android:layout_weight="1" />
+                android:layout_height="match_parent"
+                android:layout_width="match_parent" />
 
             <!-- Groups -->
             <fragment
@@ -50,7 +49,7 @@
                 class="com.android.contacts.group.GroupBrowseListFragment"
                 android:layout_height="match_parent"
                 android:layout_width="match_parent" />
-        </LinearLayout>
+        </FrameLayout>
 
         <view
             class="com.android.contacts.widget.TransitionAnimationView"
@@ -111,7 +110,8 @@
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:background="@drawable/list_background_holo">
+                android:background="@drawable/list_background_holo"
+                android:baselineAligned="false">
 
                 <!-- Starred -->
                 <FrameLayout
diff --git a/res/layout-sw680dp-w1000dp/contact_detail_container.xml b/res/layout-sw680dp-w1000dp/contact_detail_container.xml
index 6b1d094..9e1eb33 100644
--- a/res/layout-sw680dp-w1000dp/contact_detail_container.xml
+++ b/res/layout-sw680dp-w1000dp/contact_detail_container.xml
@@ -24,7 +24,8 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:scrollbars="none"
-    android:orientation="horizontal">
+    android:orientation="horizontal"
+    android:baselineAligned="false">
 
     <!--
       Container for the "About" fragment on the contact card for a contact
diff --git a/res/layout-sw680dp-w1000dp/contact_detail_fragment.xml b/res/layout-sw680dp-w1000dp/contact_detail_fragment.xml
index ecf8130..890a81c 100644
--- a/res/layout-sw680dp-w1000dp/contact_detail_fragment.xml
+++ b/res/layout-sw680dp-w1000dp/contact_detail_fragment.xml
@@ -36,14 +36,15 @@
         android:orientation="horizontal"
         android:layout_weight="1"
         android:layout_width="match_parent"
-        android:layout_height="0dip">
+        android:layout_height="0dip"
+        android:baselineAligned="false">
 
-        <ImageView android:id="@+id/photo"
-            android:scaleType="centerCrop"
+        <include android:id="@+id/static_photo_container"
+            layout="@layout/photo_selector_view"
             android:layout_width="@dimen/detail_contact_photo_size"
             android:layout_height="@dimen/detail_contact_photo_size"
             android:layout_marginTop="@dimen/detail_contact_photo_margin"
-            android:layout_marginRight="@dimen/detail_contact_photo_margin"/>
+            android:layout_marginRight="@dimen/detail_contact_photo_margin" />
 
         <ListView android:id="@android:id/list"
             android:layout_width="0dip"
diff --git a/res/layout-sw680dp-w1000dp/contact_detail_list_item.xml b/res/layout-sw680dp-w1000dp/contact_detail_list_item.xml
index 98ffce6..2016131 100644
--- a/res/layout-sw680dp-w1000dp/contact_detail_list_item.xml
+++ b/res/layout-sw680dp-w1000dp/contact_detail_list_item.xml
@@ -50,15 +50,6 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:textAppearance="?android:attr/textAppearanceMedium" />
-
-            <TextView
-                android:id="@+id/footer"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:textColor="?android:attr/textColorSecondary"
-                android:visibility="gone" />
-
         </LinearLayout>
 
         <ImageView
diff --git a/res/layout-sw680dp-w1000dp/detail_header_contact_with_updates.xml b/res/layout-sw680dp-w1000dp/detail_header_contact_with_updates.xml
index dfba659..7758a21 100644
--- a/res/layout-sw680dp-w1000dp/detail_header_contact_with_updates.xml
+++ b/res/layout-sw680dp-w1000dp/detail_header_contact_with_updates.xml
@@ -27,9 +27,7 @@
     android:paddingBottom="8dip"
     android:orientation="horizontal">
 
-    <ImageView
-        android:id="@+id/photo"
-        android:scaleType="centerCrop"
+    <include layout="@layout/photo_selector_view"
         android:layout_width="@dimen/detail_contact_photo_size"
         android:layout_height="@dimen/detail_contact_photo_size" />
 
diff --git a/res/layout-sw680dp-w1000dp/detail_header_contact_without_updates.xml b/res/layout-sw680dp-w1000dp/detail_header_contact_without_updates.xml
index f9dcf3d..9e53df0 100644
--- a/res/layout-sw680dp-w1000dp/detail_header_contact_without_updates.xml
+++ b/res/layout-sw680dp-w1000dp/detail_header_contact_without_updates.xml
@@ -50,7 +50,6 @@
         android:id="@+id/company"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:paddingTop="16dip"
         android:textAppearance="?android:attr/textAppearanceMedium"
         android:textColor="?android:attr/textColorSecondary" />
 
diff --git a/res/layout-sw680dp-w1000dp/people_activity.xml b/res/layout-sw680dp-w1000dp/people_activity.xml
index a288ff0..e34ec21 100644
--- a/res/layout-sw680dp-w1000dp/people_activity.xml
+++ b/res/layout-sw680dp-w1000dp/people_activity.xml
@@ -26,11 +26,10 @@
         android:layout_height="match_parent"
         android:splitMotionEvents="true">
 
-        <LinearLayout
+        <FrameLayout
             android:id="@+id/browse_view"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:orientation="vertical"
             android:minWidth="100dip"
             ex:layout_narrowParentWidth="1000dip"
             ex:layout_narrowWidth="276dip"
@@ -43,9 +42,8 @@
             <fragment
                 android:id="@+id/all_fragment"
                 class="com.android.contacts.list.DefaultContactBrowseListFragment"
-                android:layout_height="0dip"
-                android:layout_width="match_parent"
-                android:layout_weight="1" />
+                android:layout_height="match_parent"
+                android:layout_width="match_parent" />
 
             <!-- Groups -->
             <fragment
@@ -53,7 +51,7 @@
                 class="com.android.contacts.group.GroupBrowseListFragment"
                 android:layout_height="match_parent"
                 android:layout_width="match_parent" />
-        </LinearLayout>
+        </FrameLayout>
 
         <view
             class="com.android.contacts.widget.TransitionAnimationView"
@@ -115,7 +113,8 @@
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:background="@drawable/list_background_holo">
+                android:background="@drawable/list_background_holo"
+                android:baselineAligned="false">
 
                 <!-- Starred -->
                 <FrameLayout
diff --git a/res/layout-w470dp/contact_detail_fragment.xml b/res/layout-w470dp/contact_detail_fragment.xml
index 415bb56..5de063f 100644
--- a/res/layout-w470dp/contact_detail_fragment.xml
+++ b/res/layout-w470dp/contact_detail_fragment.xml
@@ -35,14 +35,15 @@
         android:orientation="horizontal"
         android:layout_width="match_parent"
         android:layout_above="@id/contact_quick_fix"
-        android:layout_height="match_parent" >
+        android:layout_height="match_parent"
+        android:baselineAligned="false" >
 
-        <ImageView android:id="@+id/photo"
-            android:scaleType="centerCrop"
+        <include android:id="@+id/static_photo_container"
+            layout="@layout/photo_selector_view"
             android:layout_width="128dip"
             android:layout_height="128dip"
             android:layout_marginLeft="@dimen/detail_contact_photo_margin"
-            android:layout_marginTop="@dimen/detail_contact_photo_margin"/>
+            android:layout_marginTop="@dimen/detail_contact_photo_margin" />
 
         <ListView android:id="@android:id/list"
             android:layout_width="0dip"
diff --git a/res/layout/account_filter_header.xml b/res/layout/account_filter_header.xml
index ef0a9c2..0ffb7e1 100644
--- a/res/layout/account_filter_header.xml
+++ b/res/layout/account_filter_header.xml
@@ -23,7 +23,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical"
-    android:paddingTop="@dimen/account_filter_header_top_padding"
+    android:paddingTop="@dimen/list_header_extra_top_padding"
     android:layout_marginLeft="@dimen/contact_browser_list_header_left_margin"
     android:layout_marginRight="@dimen/contact_browser_list_header_right_margin"
     android:background="?android:attr/selectableItemBackground"
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
index 13124f2..7498f5a 100644
--- a/res/layout/call_detail.xml
+++ b/res/layout/call_detail.xml
@@ -162,16 +162,22 @@
                     <TextView android:id="@+id/call_and_sms_text"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
+                        android:paddingRight="@dimen/call_log_icon_margin"
                         android:textAppearance="?android:attr/textAppearanceMedium"
                         android:textColor="?attr/call_log_primary_text_color"
+                        android:singleLine="true"
+                        android:ellipsize="end"
                     />
 
                     <TextView android:id="@+id/call_and_sms_label"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
+                        android:paddingRight="@dimen/call_log_icon_margin"
                         android:textAppearance="?android:attr/textAppearanceSmall"
                         android:textColor="?attr/call_log_primary_text_color"
                         android:textAllCaps="true"
+                        android:singleLine="true"
+                        android:ellipsize="end"
                     />
 
                 </LinearLayout>
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
index 777c7af..4040c28 100644
--- a/res/layout/call_log_list_item.xml
+++ b/res/layout/call_log_list_item.xml
@@ -69,18 +69,38 @@
                     android:id="@+id/name"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:layout_marginRight="@dimen/call_log_icon_margin"
                     android:textColor="?attr/call_log_primary_text_color"
                     android:textSize="18sp"
                     android:singleLine="true"
                 />
-                <TextView
-                    android:id="@+id/number"
+                <LinearLayout
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:textColor="?attr/call_log_secondary_text_color"
-                    android:textSize="14sp"
-                    android:singleLine="true"
-                />
+                    android:orientation="horizontal"
+                >
+                    <TextView
+                        android:id="@+id/number"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginRight="@dimen/call_log_icon_margin"
+                        android:textColor="?attr/call_log_secondary_text_color"
+                        android:textSize="14sp"
+                        android:singleLine="true"
+                        android:ellipsize="marquee"
+                        />
+                    <TextView
+                        android:id="@+id/label"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginRight="@dimen/call_log_icon_margin"
+                        android:textColor="?attr/call_log_secondary_text_color"
+                        android:textStyle="bold"
+                        android:textSize="14sp"
+                        android:singleLine="true"
+                        android:ellipsize="marquee"
+                        />
+                    </LinearLayout>
                 <LinearLayout
                     android:id="@+id/call_type"
                     android:layout_width="wrap_content"
@@ -99,6 +119,7 @@
                         android:id="@+id/call_count_and_date"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
+                        android:layout_marginRight="@dimen/call_log_icon_margin"
                         android:layout_gravity="center_vertical"
                         android:textColor="?attr/call_log_secondary_text_color"
                         android:textSize="14sp"
diff --git a/res/layout/contact_detail_fragment_carousel.xml b/res/layout/contact_detail_fragment_carousel.xml
index 2572cc4..d01a18e 100644
--- a/res/layout/contact_detail_fragment_carousel.xml
+++ b/res/layout/contact_detail_fragment_carousel.xml
@@ -19,7 +19,8 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:scrollbars="none"
-    android:orientation="horizontal">
+    android:orientation="horizontal"
+    android:baselineAligned="false">
 
     <!--
       Container for the "About" page fragment on the contact card for a contact
diff --git a/res/layout/contact_detail_list_item.xml b/res/layout/contact_detail_list_item.xml
index 44f5a53..666b67c 100644
--- a/res/layout/contact_detail_list_item.xml
+++ b/res/layout/contact_detail_list_item.xml
@@ -82,15 +82,6 @@
 
             </LinearLayout>
 
-            <TextView
-                android:id="@+id/footer"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_vertical"
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:textColor="?android:attr/textColorSecondary"
-                android:visibility="gone" />
-
         </LinearLayout>
 
         <View
diff --git a/res/layout/contact_detail_list_padding.xml b/res/layout/contact_detail_list_padding.xml
index 8095731..c5dbd06 100644
--- a/res/layout/contact_detail_list_padding.xml
+++ b/res/layout/contact_detail_list_padding.xml
@@ -23,6 +23,5 @@
     <View
         android:id="@+id/contact_detail_list_padding"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/contact_browser_list_top_margin" />
+        android:layout_height="@dimen/list_header_extra_top_padding" />
 </FrameLayout>
-
diff --git a/res/layout/contact_detail_tab_carousel.xml b/res/layout/contact_detail_tab_carousel.xml
index 28463a2..efd0164 100644
--- a/res/layout/contact_detail_tab_carousel.xml
+++ b/res/layout/contact_detail_tab_carousel.xml
@@ -23,26 +23,45 @@
     android:fadingEdge="none">
 
     <LinearLayout
-        android:id="@+id/tab_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:orientation="horizontal">
+        android:orientation="vertical">
 
-        <!-- "About" tab -->
-        <include
-            android:id="@+id/tab_about"
-            layout="@layout/carousel_about_tab" />
+        <LinearLayout
+            android:id="@+id/tab_container"
+            android:layout_width="match_parent"
+            android:layout_height="0dip"
+            android:layout_weight="1"
+            android:orientation="horizontal"
+            android:baselineAligned="false">
 
-        <!-- Vertical divider -->
+            <!-- "About" tab -->
+            <include
+                android:id="@+id/tab_about"
+                layout="@layout/carousel_about_tab" />
+
+            <!-- Vertical divider -->
+            <View
+                android:layout_width="1dip"
+                android:layout_height="match_parent"
+                android:background="@android:color/white"/>
+
+            <!-- "Updates" tab -->
+            <include
+                android:id="@+id/tab_update"
+                layout="@layout/carousel_updates_tab" />
+
+        </LinearLayout>
+
+        <!--
+          Shadow below the carousel. The ContactDetailTabCarousel increases its height to
+          account for this shadow, and the class assumes the height of this shadow to be
+          @dimen/detail_contact_photo_shadow_height.
+        -->
         <View
-            android:layout_width="1dip"
-            android:layout_height="match_parent"
-            android:background="@android:color/white"/>
-
-        <!-- "Updates" tab -->
-        <include
-            android:id="@+id/tab_update"
-            layout="@layout/carousel_updates_tab" />
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/detail_contact_photo_shadow_height"
+            android:background="?android:attr/windowContentOverlay"/>
 
     </LinearLayout>
 
diff --git a/res/layout/contact_list_filter_item.xml b/res/layout/contact_list_filter_item.xml
index b27cab8..7c09976 100644
--- a/res/layout/contact_list_filter_item.xml
+++ b/res/layout/contact_list_filter_item.xml
@@ -19,27 +19,38 @@
     class="com.android.contacts.list.ContactListFilterView"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="@dimen/contact_filter_item_min_height">
-
-    <View
-        android:id="@+id/indent"
-        android:layout_width="32dip"
-        android:layout_height="fill_parent" />
+    android:minHeight="@dimen/contact_filter_item_min_height"
+    android:gravity="center_vertical">
 
     <ImageView
         android:id="@+id/icon"
         android:scaleType="fitCenter"
         android:layout_width="@dimen/contact_filter_icon_size"
-        android:layout_height="@dimen/contact_filter_icon_size"
-        android:layout_gravity="center_vertical" />
+        android:layout_height="@dimen/contact_filter_icon_size"/>
 
-    <TextView
-        android:id="@+id/label"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_marginLeft="8dip"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        android:gravity="center_vertical"
-        android:ellipsize="end" />
+    <LinearLayout
+        android:layout_width="0dip"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:layout_marginLeft="8dip">
+
+        <TextView
+            android:id="@+id/accountType"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:singleLine="true"
+            android:ellipsize="end"/>
+
+        <TextView
+            android:id="@+id/accountUserName"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="?android:attr/textColorSecondary"
+            android:singleLine="true"
+            android:ellipsize="end"/>
+    </LinearLayout>
 </view>
 
diff --git a/res/layout/contact_tile_frequent_phone.xml b/res/layout/contact_tile_frequent_phone.xml
index aa2d9a8..5c7b7e2 100644
--- a/res/layout/contact_tile_frequent_phone.xml
+++ b/res/layout/contact_tile_frequent_phone.xml
@@ -18,7 +18,7 @@
 <view
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/contact_tile_frequent_phone"
-    class="com.android.contacts.list.ContactTileDarkFrequentView"
+    class="com.android.contacts.list.ContactTilePhoneFrequentView"
     android:focusable="true"
     android:background="?android:attr/selectableItemBackground"
     android:nextFocusLeft="@+id/contact_tile_quick">
diff --git a/res/layout/contact_tile_starred.xml b/res/layout/contact_tile_starred.xml
index 4116157..91438e9 100644
--- a/res/layout/contact_tile_starred.xml
+++ b/res/layout/contact_tile_starred.xml
@@ -73,7 +73,7 @@
 
         </LinearLayout>
 
-       <View
+        <View
             android:id="@+id/contact_tile_push_state"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
diff --git a/res/layout/contacts_unavailable_fragment.xml b/res/layout/contacts_unavailable_fragment.xml
index 9f28a55..1abc020 100644
--- a/res/layout/contacts_unavailable_fragment.xml
+++ b/res/layout/contacts_unavailable_fragment.xml
@@ -62,13 +62,12 @@
                 android:layout_marginBottom="15dip"
                 android:text="@string/contacts_unavailable_add_account" />
 
-            <!-- TODO: Use a string that says "Import" instead of "Import/export contacts"-->
             <Button
                 android:id="@+id/import_contacts_button"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginBottom="15dip"
-                android:text="@string/dialog_import_export" />
+                android:text="@string/contacts_unavailable_import_contacts" />
 
             <Button
                 android:id="@+id/import_failure_uninstall_button"
diff --git a/res/layout/detail_header_contact_without_updates.xml b/res/layout/detail_header_contact_without_updates.xml
index 2de7711..7e5037e 100644
--- a/res/layout/detail_header_contact_without_updates.xml
+++ b/res/layout/detail_header_contact_without_updates.xml
@@ -18,17 +18,29 @@
   This is a header entry in the contact details list for when the contact does not have social
   updates, which means that the contact's photo will scroll with the list of details.
 -->
-<view
+<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
-    class="com.android.contacts.widget.ProportionalLayout"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    ex:ratio="0.5"
-    ex:direction="widthToHeight">
-    <ImageView
-        android:id="@+id/photo"
-        android:scaleType="centerCrop"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <!-- Contact photo -->
+    <view
+        class="com.android.contacts.widget.ProportionalLayout"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-</view>
\ No newline at end of file
+        android:layout_height="wrap_content"
+        ex:ratio="0.5"
+        ex:direction="widthToHeight">
+
+        <include layout="@layout/photo_selector_view" />
+
+    </view>
+
+    <!-- Shadow -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/detail_contact_photo_shadow_height"
+        android:background="?android:attr/windowContentOverlay"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/dialpad.xml b/res/layout/dialpad.xml
index 45f40f6..247bd5a 100644
--- a/res/layout/dialpad.xml
+++ b/res/layout/dialpad.xml
@@ -31,13 +31,16 @@
     <TableRow
          android:layout_height="0px"
          android:layout_weight="1">
-        <ImageButton android:id="@+id/one" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/one" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_1"
             android:contentDescription="@string/description_image_button_one" />
-        <ImageButton android:id="@+id/two" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/two" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_2"
             android:contentDescription="@string/description_image_button_two" />
-        <ImageButton android:id="@+id/three" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/three" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_3"
             android:contentDescription="@string/description_image_button_three" />
     </TableRow>
@@ -45,13 +48,16 @@
     <TableRow
          android:layout_height="0px"
          android:layout_weight="1">
-        <ImageButton android:id="@+id/four" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/four" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_4"
             android:contentDescription="@string/description_image_button_four" />
-        <ImageButton android:id="@+id/five" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/five" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_5"
             android:contentDescription="@string/description_image_button_five" />
-        <ImageButton android:id="@+id/six" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/six" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_6"
             android:contentDescription="@string/description_image_button_six" />
     </TableRow>
@@ -59,13 +65,16 @@
     <TableRow
          android:layout_height="0px"
          android:layout_weight="1">
-        <ImageButton android:id="@+id/seven" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/seven" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_7"
             android:contentDescription="@string/description_image_button_seven" />
-        <ImageButton android:id="@+id/eight" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/eight" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_8"
             android:contentDescription="@string/description_image_button_eight" />
-        <ImageButton android:id="@+id/nine" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/nine" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_9"
             android:contentDescription="@string/description_image_button_nine" />
     </TableRow>
@@ -73,13 +82,16 @@
     <TableRow
          android:layout_height="0px"
          android:layout_weight="1">
-        <ImageButton android:id="@+id/star" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/star" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_star"
             android:contentDescription="@string/description_image_button_star" />
-        <ImageButton android:id="@+id/zero" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/zero" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_0"
             android:contentDescription="@string/description_image_button_zero" />
-        <ImageButton android:id="@+id/pound" style="@style/DialtactsDialpadButtonStyle"
+        <com.android.contacts.dialpad.DialpadImageButton
+            android:id="@+id/pound" style="@style/DialtactsDialpadButtonStyle"
             android:src="@drawable/dial_num_pound"
             android:contentDescription="@string/description_image_button_pound" />
     </TableRow>
diff --git a/res/layout/directory_header.xml b/res/layout/directory_header.xml
index a2adf48..8e845e0 100644
--- a/res/layout/directory_header.xml
+++ b/res/layout/directory_header.xml
@@ -15,23 +15,21 @@
 -->
 
 <!-- Layout used for list section separators. -->
-<RelativeLayout
+<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     style="@style/DirectoryHeader"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:gravity="center_vertical"
     android:minHeight="@dimen/list_section_divider_min_height"
     android:background="@drawable/list_section_divider_holo_custom"
-    android:paddingTop="@dimen/contact_browser_list_top_margin"
+    android:layout_marginTop="@dimen/list_header_extra_top_padding"
     android:paddingLeft="?attr/list_item_padding_left"
     android:paddingRight="?attr/list_item_padding_right">
     <TextView
         android:id="@+id/label"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_alignParentTop="true"
-        android:layout_alignParentLeft="true"
-        android:layout_centerVertical="true"
         android:layout_marginLeft="8dip"
         android:textAppearance="?android:attr/textAppearanceSmall"
         android:textColor="@color/people_app_theme_color"
@@ -39,21 +37,9 @@
         android:textStyle="bold"
         android:textAllCaps="true" />
     <TextView
-        android:id="@+id/count"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentRight="true"
-        android:layout_alignBaseline="@id/label"
-        android:singleLine="true"
-        android:textSize="12sp"
-        android:textColor="@color/contact_count_text_color" />
-    <TextView
         android:id="@+id/display_name"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_toRightOf="@id/label"
-        android:layout_toLeftOf="@id/count"
-        android:layout_alignBaseline="@id/label"
         android:layout_marginLeft="8dip"
         android:layout_marginRight="8dip"
         android:textAppearance="?android:attr/textAppearanceSmall"
@@ -61,4 +47,14 @@
         android:singleLine="true"
         android:textStyle="bold"
         android:textAllCaps="true" />
-</RelativeLayout>
+    <TextView
+        android:id="@+id/count"
+        android:paddingTop="1dip"
+        android:layout_width="0dip"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:gravity="right"
+        android:singleLine="true"
+        android:textSize="12sp"
+        android:textColor="@color/contact_count_text_color" />
+</LinearLayout>
diff --git a/res/layout/group_browse_list_account_header.xml b/res/layout/group_browse_list_account_header.xml
index 709c276..78e0639 100644
--- a/res/layout/group_browse_list_account_header.xml
+++ b/res/layout/group_browse_list_account_header.xml
@@ -24,7 +24,7 @@
     <View
         android:id="@+id/header_extra_top_padding"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/contact_browser_list_top_margin" />
+        android:layout_height="@dimen/list_header_extra_top_padding" />
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/res/layout/join_contact_picker.xml b/res/layout/join_contact_picker.xml
index ea0deaf..ee30525 100644
--- a/res/layout/join_contact_picker.xml
+++ b/res/layout/join_contact_picker.xml
@@ -14,23 +14,13 @@
      limitations under the License.
 -->
 
-<view
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<view xmlns:android="http://schemas.android.com/apk/res/android"
     class="com.android.contacts.widget.FullHeightLinearLayout"
     style="@style/ContactPickerLayout"
     android:orientation="vertical">
-
     <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="0dip"
         android:layout_weight="1"
         android:id="@+id/list_container" />
-
-    <View
-        android:id="@+id/divider"
-        android:layout_width="match_parent"
-        android:layout_height="1dip"
-        android:layout_marginLeft="?attr/contact_browser_list_padding_left"
-        android:layout_marginRight="?attr/contact_browser_list_padding_right"
-        android:background="?android:attr/dividerHorizontal" />
 </view>
diff --git a/res/layout/photo_selector_view.xml b/res/layout/photo_selector_view.xml
new file mode 100644
index 0000000..0006559
--- /dev/null
+++ b/res/layout/photo_selector_view.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<!--
+  View for displaying photos that show a photo selector when clicked.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ImageView
+        android:id="@+id/photo"
+        android:scaleType="centerCrop"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <View
+        android:id="@+id/photo_touch_intercept_overlay"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="?android:attr/selectableItemBackground"
+        android:visibility="gone" />
+
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/photoselection_activity.xml b/res/layout/photoselection_activity.xml
new file mode 100644
index 0000000..75f729b
--- /dev/null
+++ b/res/layout/photoselection_activity.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <View
+        android:id="@+id/backdrop"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#000000" />
+    <view
+        android:id="@+id/photo"
+        class="com.android.contacts.detail.TransformableImageView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:scaleType="centerCrop" />
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/quickcontact_list_fragment.xml b/res/layout/quickcontact_list_fragment.xml
index 5ade104..e542f7a 100755
--- a/res/layout/quickcontact_list_fragment.xml
+++ b/res/layout/quickcontact_list_fragment.xml
@@ -14,28 +14,19 @@
      limitations under the License.
 -->
 
-<LinearLayout
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
-    <!-- Line that looks like a list divider -->
-    <View
+    <ListView
+        android:id="@+id/list"
         android:layout_width="match_parent"
-        android:layout_height="1dip"
-        android:background="@color/quickcontact_list_divider" />
-    <RelativeLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-        <ListView
-            android:id="@+id/list"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:divider="@drawable/quickcontact_list_item_divider"
-            android:dividerHeight="1dip"
-            android:background="@color/quickcontact_list_background"
-            android:cacheColorHint="@null"
-            android:layout_alignParentTop="true" />
-        <include layout="@layout/quickcontact_list_fragment_bottom"/>
-    </RelativeLayout>
-</LinearLayout>
+        android:layout_height="wrap_content"
+        android:divider="@drawable/quickcontact_list_item_divider"
+        android:dividerHeight="1dip"
+        android:background="@color/quickcontact_list_background"
+        android:cacheColorHint="@null"
+        android:layout_alignParentTop="true"
+    />
+    <include layout="@layout/quickcontact_list_fragment_bottom"/>
+</RelativeLayout>
diff --git a/res/layout/quickcontact_list_item.xml b/res/layout/quickcontact_list_item.xml
index ee3a89f..1b66ec3 100755
--- a/res/layout/quickcontact_list_item.xml
+++ b/res/layout/quickcontact_list_item.xml
@@ -27,13 +27,27 @@
             android:textAppearance="?android:attr/textAppearanceMedium"
             android:singleLine="true"
             android:ellipsize="end" />
-        <TextView
-            android:id="@android:id/text2"
+        <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@color/secondary_text_color"
-            android:textAllCaps="true"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
+            android:orientation="horizontal">
+            <ImageView
+                android:id="@+id/presence_icon"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="1dip"
+                android:layout_marginRight="4dip"
+                android:layout_gravity="center_vertical"
+                android:gravity="center"
+                android:scaleType="centerInside" />
+            <TextView
+                android:id="@android:id/text2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/secondary_text_color"
+                android:textAllCaps="true"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+        </LinearLayout>
     </LinearLayout>
     <include layout="@layout/quickcontact_list_item_base"/>
 </LinearLayout>
diff --git a/res/layout/quickcontact_list_item_address.xml b/res/layout/quickcontact_list_item_address.xml
index 9773b10..cb99673 100755
--- a/res/layout/quickcontact_list_item_address.xml
+++ b/res/layout/quickcontact_list_item_address.xml
@@ -28,13 +28,27 @@
             android:layout_height="wrap_content"
             android:textColor="@color/primary_text_color"
             android:textAppearance="?android:attr/textAppearanceMedium" />
-        <TextView
-            android:id="@android:id/text2"
+        <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@color/secondary_text_color"
-            android:textAllCaps="true"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
+            android:orientation="horizontal">
+            <ImageView
+                android:id="@+id/presence_icon"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="1dip"
+                android:layout_marginRight="4dip"
+                android:layout_gravity="center_vertical"
+                android:gravity="center"
+                android:scaleType="centerInside" />
+            <TextView
+                android:id="@android:id/text2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/secondary_text_color"
+                android:textAllCaps="true"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+        </LinearLayout>
     </LinearLayout>
     <include layout="@layout/quickcontact_list_item_base"/>
 </LinearLayout>
diff --git a/res/layout/raw_contact_editor_view.xml b/res/layout/raw_contact_editor_view.xml
index 5180557..1ea781e 100644
--- a/res/layout/raw_contact_editor_view.xml
+++ b/res/layout/raw_contact_editor_view.xml
@@ -77,7 +77,8 @@
             android:id="@+id/sect_fields"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:orientation="vertical"/>
+            android:orientation="vertical"
+            android:layout_marginBottom="16dip"/>
 
         <Button
             android:id="@+id/button_add_field"
@@ -85,7 +86,6 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
-            android:layout_marginTop="16dip"
             android:layout_marginBottom="32dip"/>
 
     </LinearLayout>
diff --git a/res/layout/user_profile_header.xml b/res/layout/user_profile_header.xml
index 6867dea..67b64d5 100644
--- a/res/layout/user_profile_header.xml
+++ b/res/layout/user_profile_header.xml
@@ -17,49 +17,42 @@
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/user_profile_header"
-    android:orientation="vertical"
+    android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="?attr/list_item_header_height"
-    android:paddingTop="@dimen/contact_browser_list_top_margin"
+    android:paddingTop="@dimen/list_header_extra_top_padding"
     android:paddingLeft="?attr/list_item_padding_left"
-    android:paddingRight="?attr/list_item_padding_right" >
+    android:paddingRight="?attr/list_item_padding_right" 
+    android:background="@drawable/list_section_divider_holo_custom"
+    android:minHeight="?attr/list_item_header_height"
+    >
 
-    <LinearLayout
-        android:orientation="horizontal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+    <TextView
+        android:id="@+id/profile_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:text="@string/user_profile_contacts_list_header"
+        android:textStyle="bold"
+        android:ellipsize="end"
+        android:layout_gravity="left|bottom"
+        android:layout_marginBottom="2dip"
+        android:layout_weight="1"
+        android:textAllCaps="true"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:paddingLeft="?attr/list_item_text_indent"
+        android:textColor="@color/people_app_theme_color" />
 
-        <TextView
-            android:id="@+id/profile_title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:text="@string/user_profile_contacts_list_header"
-            android:textStyle="bold"
-            android:ellipsize="end"
-            android:gravity="left|center_vertical"
-            android:layout_weight="1"
-            android:textAllCaps="true"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:paddingLeft="?attr/list_item_text_indent"
-            android:textColor="@color/people_app_theme_color" />
-
-        <TextView
-            android:id="@+id/contacts_count"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:ellipsize="end"
-            android:layout_gravity="right|center_vertical"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:textSize="12sp"
-            android:textColor="@color/contact_count_text_color" />
-    </LinearLayout>
-
-    <View
-        android:background="@color/people_app_theme_color"
-        android:layout_width="match_parent"
-        android:layout_height="?attr/list_item_header_underline_height" />
+    <TextView
+        android:id="@+id/contacts_count"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:ellipsize="end"
+        android:layout_gravity="right|bottom"
+        android:layout_marginBottom="2dip"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textSize="12sp"
+        android:textColor="@color/contact_count_text_color" />
 
 </LinearLayout>
diff --git a/res/menu-sw580dp-w720dp/actions.xml b/res/menu-sw580dp-w720dp/people_options.xml
similarity index 88%
rename from res/menu-sw580dp-w720dp/actions.xml
rename to res/menu-sw580dp-w720dp/people_options.xml
index 8735d89..5f939cc 100644
--- a/res/menu-sw580dp-w720dp/actions.xml
+++ b/res/menu-sw580dp-w720dp/people_options.xml
@@ -34,25 +34,21 @@
 
     <item
         android:id="@+id/menu_contacts_filter"
-        android:icon="@drawable/ic_menu_settings_holo_light"
         android:orderInCategory="1"
         android:title="@string/menu_contacts_filter" />
 
     <item
         android:id="@+id/menu_import_export"
-        android:icon="@drawable/ic_menu_import_export_holo_light"
         android:orderInCategory="2"
         android:title="@string/menu_import_export" />
 
     <item
         android:id="@+id/menu_accounts"
-        android:icon="@drawable/ic_menu_accounts_holo_light"
         android:orderInCategory="3"
         android:title="@string/menu_accounts" />
 
     <item
         android:id="@+id/menu_settings"
-        android:icon="@drawable/ic_menu_settings_holo_light"
         android:orderInCategory="4"
         android:title="@string/menu_settings" />
 </menu>
diff --git a/res/menu-sw580dp-w720dp/view_contact.xml b/res/menu-sw580dp-w720dp/view_contact.xml
index 734e6b2..c1f99a8 100644
--- a/res/menu-sw580dp-w720dp/view_contact.xml
+++ b/res/menu-sw580dp-w720dp/view_contact.xml
@@ -24,13 +24,11 @@
 
     <item
         android:id="@+id/menu_share"
-        android:icon="@drawable/ic_menu_share_holo_light"
         android:title="@string/menu_share"
         android:alphabeticShortcut="s" />
 
     <item
         android:id="@+id/menu_delete"
-        android:icon="@drawable/ic_menu_trash_holo_light"
         android:title="@string/menu_deleteContact" />
 
 </menu>
diff --git a/res/menu-sw580dp-w720dp/view_group.xml b/res/menu-sw580dp-w720dp/view_group.xml
index 1348d84..3836c0f 100644
--- a/res/menu-sw580dp-w720dp/view_group.xml
+++ b/res/menu-sw580dp-w720dp/view_group.xml
@@ -24,6 +24,5 @@
 
     <item
         android:id="@+id/menu_delete_group"
-        android:icon="@drawable/ic_menu_trash_holo_light"
         android:title="@string/menu_deleteGroup" />
 </menu>
diff --git a/res/menu-sw580dp/actions.xml b/res/menu-sw580dp/people_options.xml
similarity index 89%
rename from res/menu-sw580dp/actions.xml
rename to res/menu-sw580dp/people_options.xml
index 35a9c0a..c8c114a 100644
--- a/res/menu-sw580dp/actions.xml
+++ b/res/menu-sw580dp/people_options.xml
@@ -37,25 +37,21 @@
     -->
     <item
         android:id="@+id/menu_contacts_filter"
-        android:icon="@drawable/ic_menu_settings_holo_light"
         android:orderInCategory="1"
         android:title="@string/menu_contacts_filter" />
 
     <item
         android:id="@+id/menu_import_export"
-        android:icon="@drawable/ic_menu_import_export_holo_light"
         android:orderInCategory="2"
         android:title="@string/menu_import_export" />
 
     <item
         android:id="@+id/menu_accounts"
-        android:icon="@drawable/ic_menu_accounts_holo_light"
         android:orderInCategory="3"
         android:title="@string/menu_accounts" />
 
     <item
         android:id="@+id/menu_settings"
-        android:icon="@drawable/ic_menu_settings_holo_light"
         android:orderInCategory="4"
         android:title="@string/menu_settings" />
 </menu>
diff --git a/res/menu-sw580dp/view_contact.xml b/res/menu-sw580dp/view_contact.xml
index 1279601..0f285db 100644
--- a/res/menu-sw580dp/view_contact.xml
+++ b/res/menu-sw580dp/view_contact.xml
@@ -23,13 +23,11 @@
 
     <item
         android:id="@+id/menu_share"
-        android:icon="@drawable/ic_menu_share_holo_light"
         android:title="@string/menu_share"
         android:alphabeticShortcut="s" />
 
     <item
         android:id="@+id/menu_delete"
-        android:icon="@drawable/ic_menu_trash_holo_light"
         android:title="@string/menu_deleteContact" />
 
 </menu>
diff --git a/res/menu-sw580dp/view_group.xml b/res/menu-sw580dp/view_group.xml
index cd52030..d01c167 100644
--- a/res/menu-sw580dp/view_group.xml
+++ b/res/menu-sw580dp/view_group.xml
@@ -23,6 +23,5 @@
 
     <item
         android:id="@+id/menu_delete_group"
-        android:icon="@drawable/ic_menu_trash_holo_light"
         android:title="@string/menu_deleteGroup" />
 </menu>
diff --git a/res/menu/call_details_options.xml b/res/menu/call_details_options.xml
index ed0111b..63ce8f5 100644
--- a/res/menu/call_details_options.xml
+++ b/res/menu/call_details_options.xml
@@ -23,7 +23,6 @@
     />
     <item
         android:id="@+id/menu_remove_from_call_log"
-        android:icon="@android:drawable/ic_menu_close_clear_cancel"
         android:title="@string/recentCalls_removeFromRecentList"
         android:onClick="onMenuRemoveFromCallLog"
     />
diff --git a/res/menu/call_log_options.xml b/res/menu/call_log_options.xml
index 3d0fb6a..c41f9da 100644
--- a/res/menu/call_log_options.xml
+++ b/res/menu/call_log_options.xml
@@ -29,7 +29,6 @@
 
     <item
         android:id="@+id/delete_all"
-        android:icon="@android:drawable/ic_menu_close_clear_cancel"
         android:title="@string/recentCalls_deleteAll"
         android:showAsAction="withText"
         android:orderInCategory="1" />
diff --git a/res/menu/dialpad_options.xml b/res/menu/dialpad_options.xml
index 02b1f7f..6dda8fc 100644
--- a/res/menu/dialpad_options.xml
+++ b/res/menu/dialpad_options.xml
@@ -16,20 +16,17 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:id="@+id/menu_add_contacts"
-        android:icon="@android:drawable/ic_menu_add"
         android:title="@string/recentCalls_addToContact"
         android:showAsAction="withText"
         android:orderInCategory="1" />
     <item
         android:id="@+id/menu_2s_pause"
-        android:icon="@drawable/ic_menu_2sec_pause"
         android:title="@string/add_2sec_pause"
         android:showAsAction="withText"
         android:orderInCategory="1" />
 
     <item
         android:id="@+id/menu_add_wait"
-        android:icon="@drawable/ic_menu_wait"
         android:title="@string/add_wait"
         android:showAsAction="withText"
         android:orderInCategory="1" />
@@ -37,7 +34,6 @@
     <item
         android:id="@+id/menu_call_settings_dialpad"
         android:title="@string/call_settings"
-        android:icon="@drawable/ic_menu_settings_holo_light"
         android:showAsAction="withText"
         android:orderInCategory="1" />
 </menu>
diff --git a/res/menu/dialtacts_options.xml b/res/menu/dialtacts_options.xml
index 54ca086..21161b1 100644
--- a/res/menu/dialtacts_options.xml
+++ b/res/menu/dialtacts_options.xml
@@ -16,7 +16,7 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:id="@+id/search_on_action_bar"
-        android:title="@string/menu_all_contacts"
+        android:title="@string/menu_search"
         android:icon="@drawable/ic_dial_action_search"
         android:showAsAction="ifRoom" />
 
@@ -24,7 +24,6 @@
     <item
         android:id="@+id/menu_call_settings"
         android:title="@string/call_settings"
-        android:icon="@drawable/ic_menu_settings_holo_light"
         android:showAsAction="withText"
         android:orderInCategory="2" />
 
@@ -35,6 +34,7 @@
 
     <item
         android:id="@+id/add_contact"
+        android:icon="@drawable/ic_add_contact_holo_dark"
         android:title="@string/menu_newContact"
-        android:showAsAction="withText" />
+        android:showAsAction="ifRoom" />
 </menu>
diff --git a/res/menu/edit_contact.xml b/res/menu/edit_contact.xml
index 26b89df..93c19dc 100644
--- a/res/menu/edit_contact.xml
+++ b/res/menu/edit_contact.xml
@@ -22,12 +22,10 @@
 
     <item
         android:id="@+id/menu_split"
-        android:icon="@drawable/ic_menu_split_holo_light"
         android:title="@string/menu_splitAggregate" />
 
     <item
         android:id="@+id/menu_join"
-        android:icon="@drawable/ic_menu_merge_holo_light"
         android:title="@string/menu_joinAggregate" />
 
     <item
diff --git a/res/menu/list.xml b/res/menu/list.xml
index 56d92f8..f4a8751 100644
--- a/res/menu/list.xml
+++ b/res/menu/list.xml
@@ -28,17 +28,14 @@
 
     <item
         android:id="@+id/menu_settings"
-        android:icon="@drawable/ic_menu_settings_holo_light"
         android:title="@string/menu_settings" />
 
     <item
         android:id="@+id/menu_accounts"
-        android:icon="@drawable/ic_menu_accounts_holo_light"
         android:title="@string/menu_accounts" />
 
     <item
         android:id="@+id/menu_import_export"
-        android:icon="@drawable/ic_menu_import_export_holo_light"
         android:title="@string/menu_import_export" />
 
 </menu>
diff --git a/res/menu/actions.xml b/res/menu/people_options.xml
similarity index 87%
rename from res/menu/actions.xml
rename to res/menu/people_options.xml
index 9067a46..0c82f99 100644
--- a/res/menu/actions.xml
+++ b/res/menu/people_options.xml
@@ -34,21 +34,17 @@
 
     <item
         android:id="@+id/menu_contacts_filter"
-        android:icon="@drawable/ic_menu_settings_holo_light"
         android:title="@string/menu_contacts_filter" />
 
     <item
         android:id="@+id/menu_import_export"
-        android:icon="@drawable/ic_menu_import_export_holo_light"
         android:title="@string/menu_import_export" />
 
     <item
         android:id="@+id/menu_accounts"
-        android:icon="@drawable/ic_menu_accounts_holo_light"
         android:title="@string/menu_accounts" />
 
     <item
         android:id="@+id/menu_settings"
-        android:icon="@drawable/ic_menu_settings_holo_light"
         android:title="@string/menu_settings" />
 </menu>
diff --git a/res/menu/phone_favorite_options.xml b/res/menu/phone_favorite_options.xml
new file mode 100644
index 0000000..ac67d6e
--- /dev/null
+++ b/res/menu/phone_favorite_options.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/menu_import_export"
+        android:title="@string/menu_import_export" />
+
+    <item
+        android:id="@+id/menu_accounts"
+        android:title="@string/menu_accounts" />
+</menu>
diff --git a/res/menu/view_contact.xml b/res/menu/view_contact.xml
index 2ae4806..6712cb6 100644
--- a/res/menu/view_contact.xml
+++ b/res/menu/view_contact.xml
@@ -17,24 +17,20 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:id="@+id/menu_edit"
-        android:icon="@drawable/ic_menu_compose_holo_dark"
         android:title="@string/menu_editContact"
         android:alphabeticShortcut="e" />
 
     <item
         android:id="@+id/menu_share"
-        android:icon="@drawable/ic_menu_share_holo_light"
         android:title="@string/menu_share"
         android:alphabeticShortcut="s" />
 
     <item
         android:id="@+id/menu_delete"
-        android:icon="@drawable/ic_menu_trash_holo_light"
         android:title="@string/menu_deleteContact" />
 
     <item
         android:id="@+id/menu_set_ringtone"
-        android:icon="@drawable/ic_menu_mark"
         android:title="@string/menu_set_ring_tone" />
 
     <item
diff --git a/res/menu/view_group.xml b/res/menu/view_group.xml
index cd52030..669f401 100644
--- a/res/menu/view_group.xml
+++ b/res/menu/view_group.xml
@@ -17,12 +17,10 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:id="@+id/menu_edit_group"
-        android:icon="@drawable/ic_menu_compose_holo_dark"
         android:title="@string/menu_editGroup"
         android:alphabeticShortcut="e" />
 
     <item
         android:id="@+id/menu_delete_group"
-        android:icon="@drawable/ic_menu_trash_holo_light"
         android:title="@string/menu_deleteGroup" />
 </menu>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 428fed8..123421b 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Soek"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nuwe kontak"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Bekyk kontak"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Bel <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Voeg by gunstelinge"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Verwyder van gunstelinge"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Redigeer"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Voorgestelde kontakte"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Alle kontakte"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontakte saamgevoeg"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Vee kontak uit?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Stel luitoon op"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Alle oproepe na stempos"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Jy kan nie kontakte uit leesalleen-rekeninge uitvee nie, maar jy kan hulle wel in jou kontaklyste versteek."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Gereeld gekontak"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Gereeld gebel"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Voeg kontak by"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Voeg \"<xliff:g id="EMAIL">%s</xliff:g>\" by kontakte?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"een"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"twee"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Bekyk kontak"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Berging nie beskikbaar nie"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Geen SD-kaart nie"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Geen berging gevind nie."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Geen SD-kaart gevind nie."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Soek vir vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Voer in van SIM-kaart"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Voer in uit berging"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Voer uit na berging"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Voer alle vCard-lêers in"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Soek  tans vir vCard-data in berging..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Soek tans vir vCard-data op SD-kaart..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Kon berging nie skandeer nie."</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Kon nie SD-kaart skandeer nie"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Die berging kon nie geskandeer word nie. (Rede: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Die SD-kaart kon nie geskandeer word nie. (Rede: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"T/A-fout"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Die vCard-opsteller het nie behoorlik begin nie."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Kon nie \"<xliff:g id="FILE_NAME">%s</xliff:g>\" open nie: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> van <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakte"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Kanselleer vCard-invoer"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Kanselleer invoer van <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Kanselleer vCard-uitvoer"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Kanselleer uitvoer van <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Kon nie vCard invoer/uitvoer kanselleer nie"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Name van jou kontakte"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakte om te wys"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Voer in/uit"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Voer kontakte in/uit"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Voer kontakte in"</string>
     <string name="menu_share" msgid="943789700636542260">"Deel"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Alle kontakte"</string>
     <string name="share_via" msgid="563121028023030093">"Deel kontak met"</string>
     <string name="share_error" msgid="948429331673358107">"Hierdie kontak kan nie gedeel word nie."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Naam"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"saamgevoeg uit <xliff:g id="COUNT">%0$d</xliff:g> bronne"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Ander"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Voeg kontakte saam"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Voeg die huidige kontak by die gekose kontak saam?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Redigeer gekose kontakte"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Wissel na redigering van die gekose kontak? Inligting wat jy tot dusver ingevoer het, sal gekopieer word."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopieer na My kontakte"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Voeg by My kontakte"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Laai tans…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Skep \'n nuwe kontak"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Meld aan by \'n rekening"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Voer kontakte van \'n lêer in"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Voer kontakte in"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Skep nuwe groep"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Skep nuwe groep]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Vee groep uit"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 groep"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> groepe"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Stel verstek op"</string>
     <string name="clear_default" msgid="7193185801596678067">"Vee verstek uit"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Teks gekopieer"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Ontdoen wysigings"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Verwerp jou veranderings?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Stel my profiel op"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Hou plaaslik"</string>
     <string name="add_account" msgid="8201790677994503186">"Voeg rekening by"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Voeg nuwe rekening by"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Oproep nie gestuur nie."</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Stemboodskapnommer nie beskikbaar nie"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Oproep nie gestuur nie"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Om stemboodskapdiens op te stel, gaan na Kieslys &gt; Instellings."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Om stemboodskapdiens te bel, skakel eers vliegtuigmodus af."</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index c338395..3967bd2 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"ፍለጋ"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"አዲስ ዕውቅያ"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"ዕውቂያ ዕይ"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"ጥሪ <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"ደውል<xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"ወደ ተወዳጅ አክል"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"ከተወዳጆች አስወግድ"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"አርትዕ"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"አስተያየት የተሰጠባቸው እውቅያዎች"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"ሁሉም እውቅያዎች"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"ዕውቂያዎች ተገናኝተዋል"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"ዕውቅያ  ሰርዝ?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"የጥሪ ድምፅ አዘጋጅ"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"ሁሉንም ጥሪዎች ወደ ድምፅ መልዕክት"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"ዕውቂያዎችን ከንባብ-ብቻ መለያዎች መሰረዝ አትችልም፤ ነገር ግን በዕውቂያ ዝርዝሮች ውስጥ መደበቅ ትችላለህ።"</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g>ደቂቃዎች <xliff:g id="SECONDS">%s</xliff:g> ሰከንዶች"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"በተደጋጋሚ የሚገናኙ"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"በተደጋጋሚ የተደወለ"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"እውቅያዎች አክል"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"<xliff:g id="EMAIL">%s</xliff:g> ወደ እውቅያዎች ዝርዝር ይታከል"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"አንድ"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"ሁለት"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"ሲቀነስ"</string>
     <string name="description_plus_button" msgid="515164827856229880">"ተጨማሪ"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"ዕውቂያ ዕይ"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"ማከማቻ አልተገኘም"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"ምንምSD ካርድ የለም"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"ምንም ማከማቻ አልተገኘም፡፡"</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"ምንም SD ካርድ አልተገኘም፡፡"</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"vCard ፍለጋ"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"ከSIM ካርድ አስመጣ"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"ከማከማቻ አስገባ"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"ወደማከማቻ ላክ"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"ሁሉም vCard ፋይሎችን አስገባ"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"በማከማቻ ውስጥ የvCard ውሂብ በመፈለግ ላይ"</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"በSD ካርድ ላይ vCard ፍለጋ"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"ማከማቻን መቃኘት አልተቻለም"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SD ካርድን መቃኘት አልተቻለም"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"ማከማቻው  ሊቀረጽ አልተቻለም:: (ምክንያት: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD ካርዱ ሊቀረጽ አልተቻለም:: (ምክንያት: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O ስህተት"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"የ vCard  አቀናባሪው በትክክል አልጀመረም::"</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" ፡<xliff:g id="EXACT_REASON">%s</xliff:g> መክፈት አልተቻለም"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> ከ <xliff:g id="TOTAL_NUMBER">%s</xliff:g> እውቂያዎች"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"vCard አስመጣ በመሰረዝ ላይ"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"የ<xliff:g id="FILENAME">%s</xliff:g>ወደ ውስጥ ማስገባት ይተው?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"vCard ላክበመሰረዝላይ"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"የ<xliff:g id="FILENAME">%s</xliff:g> ወደ ውጭ መላክ ይተው?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard ማስመጣት/ወደ ውጪ መላክ መተው አልተቻለም"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"የዕውቂያዎችዎ ስሞች"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"ዕውቂያዎች አሳይ"</string>
     <string name="menu_import_export" msgid="26217871113229507">"አስመጣ/ላክ"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"ዕውቂያዎች አስመጣ/ላክ"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"እውቅያዎችን ከውጭ አስመጣ"</string>
     <string name="menu_share" msgid="943789700636542260">"መጋሪያ"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"ሁሉም እውቅያዎች"</string>
     <string name="share_via" msgid="563121028023030093">"ዕውቂያበ በኩል አጋራ"</string>
     <string name="share_error" msgid="948429331673358107">"ይህ ዕውቂያ መጋራት አይችልም።"</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"ስም"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"ከ<xliff:g id="COUNT">%0$d</xliff:g> ምንጮች የተዋሃደ"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"ሌላ"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"ዕውቂያዎችን አገናኝ"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"የአሁኑ ዕውቂያ ከተመረጠው ዕውቂያ ጋር ይገናኝ?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"የተመረጡ  ዕውቂያዎችን አርትዕ"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"የተመረጠው ዕውቂያ ወደ አርትዕ ይቀየር? እስከ አሁን ያስገቡት መረጃ ይገለበጣል።"</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"ወደ ዕውቂያዎቼ ቅዳ"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"ወደ እኔ ዕውቂያዎች አክል"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"በመስቀል ላይ…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"አዲስ ዕውቂያ ፍጠር"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ወደ መለያ ግባ"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"ከፋይል ዕውቂያዎች አስመጣ"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"እውቅያዎችን ከውጭ አስመጣ"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"አዲስ ቡድን ፍጠር"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[አዲስ ቡድን ፍጠር]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"ቡድን ሰርዝ"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 ቡድን"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g>ቡድኖች"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"ነባሪ አዘጋጅ"</string>
     <string name="clear_default" msgid="7193185801596678067">"ነባሪ አጥራ"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"ፅሁፍ ገልብጧል"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"ለውጦች አስወግድ"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">" ለውጦችህ ይወገዱ?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g><xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"መገለጫዬን አዘጋጅ"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"በአካባቢው አቆይ"</string>
     <string name="add_account" msgid="8201790677994503186">"መለያ አክል"</string>
     <string name="add_new_account" msgid="5748627740680940264">"አዲስ መለያ አክል"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"ጥሪ አልተላከም።"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"የድምጽ መልዕክት ቁጥር አይገኝም::"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"ጥሪ አልተላከም"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ድምጽ መልዕክትን ለማደራጀት ወደ ምናሌ &gt; ቅንጅቶች ሂድ::"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"የድምጽ መልዕክት ጥሪ ለማድረግ፣ በመጀመሪያ የአውሮፕላን ሁነታን አጥፋ።"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 7e9db74..bad2d27 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"بحث"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"جهة اتصال جديدة"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"عرض جهة الاتصال"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"الاتصال بـ <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"الاتصال بالرقم <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"إضافة إلى المفضلة"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"إزالة من المفضلة"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"تعديل"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"جهات الاتصال المقترحة"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"جميع جهات الاتصال"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"جهات الاتصال المنضمة"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"حذف جهة الاتصال؟"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"تعيين نغمة رنين"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"جميع المكالمات إلى البريد الصوتي"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"لا يمكنك حذف جهات الاتصال من حسابات للقراءة فقط، ولكن يمكنك إخفاؤها في قوائم جهات الاتصال."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"عدد الدقائق:<xliff:g id="MINUTES">%s</xliff:g>، عددالثواني: <xliff:g id="SECONDS">%s</xliff:g>"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"يتم الاتصال بهم بشكل متكرر"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"الأكثر اتصالاً"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"إضافة جهة اتصال"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"هل ترغب في إضافة \"<xliff:g id="EMAIL">%s</xliff:g>\" إلى جهات الاتصال؟"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"واحد"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"اثنان"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"علامة الطرح"</string>
     <string name="description_plus_button" msgid="515164827856229880">"علامة زائد"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"عرض جهة الاتصال"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"وحدة التخزين غير متوفرة."</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"لا بطاقة SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"لم يتم العثور على وحدة تخزين."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"لم يتم العثور على بطاقة SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"البحث عن vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"استيراد من بطاقة SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"استيراد من وحدة التخزين"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"تصدير إلى وحدة التخزين"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"استيراد جميع ملفات vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"جارٍ البحث عن بيانات vCard في وحدة التخزين..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"جارٍ البحث عن بيانات vCard على بطاقة SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"تعذر فحص وحدة التخزين"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"تعذر فحص بطاقة SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"تعذر فحص وحدة التخزين. (السبب: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"تعذر فحص بطاقة SD. (السبب: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"خطأ I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"لم يبدأ مؤلف vCard بشكل صحيح."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"تعذر فتح \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> من <xliff:g id="TOTAL_NUMBER">%s</xliff:g> من جهات الاتصال"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"إلغاء استيراد ملف vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"هل تريد إلغاء استيراد <xliff:g id="FILENAME">%s</xliff:g>؟"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"إلغاء تصدير ملف vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"هل تريد إلغاء تصدير <xliff:g id="FILENAME">%s</xliff:g>؟"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"تعذر إلغاء استيراد/تصدير vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"أسماء جهات الاتصال"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"جهات الاتصال التي يتم عرضها"</string>
     <string name="menu_import_export" msgid="26217871113229507">"استيراد/تصدير"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"استيراد/تصدير جهات اتصال"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"استيراد جهات الاتصال"</string>
     <string name="menu_share" msgid="943789700636542260">"مشاركة"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"جميع جهات الاتصال"</string>
     <string name="share_via" msgid="563121028023030093">"مشاركة جهة الاتصال عبر"</string>
     <string name="share_error" msgid="948429331673358107">"لا يمكن مشاركة جهة الاتصال هذه."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"الاسم"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"تم دمجها من <xliff:g id="COUNT">%0$d</xliff:g> من المصادر"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"غير ذلك"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"ضم جهات الاتصال"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"هل تريد ضم جهة الاتصال الحالية إلى جهة الاتصال المحددة؟"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"تعديل جهات الاتصال المحددة"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"هل تريد التبديل إلى تعديل جهة الاتصال المحددة؟ سيتم نسخ المعلومات التي أدخلتها حتى الآن."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"نسخ إلى جهات الاتصال الخاصة بي"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"إضافة إلى \"جهات الاتصال الخاصة بي\""</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"جارٍ التحميل…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"إنشاء جهة اتصال جديدة"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"تسجيل الدخول إلى حساب"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"استيراد جهات الاتصال من ملف"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"استيراد جهات الاتصال"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"إنشاء مجموعة جديدة"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[إنشاء مجموعة جديدة]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"حذف المجموعة"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"مجموعة واحدة"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> من المجموعات"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"تعيين كافتراضي"</string>
     <string name="clear_default" msgid="7193185801596678067">"محو الإعدادات الافتراضية"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"تم نسخ النص"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"إلغاء التغييرات"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"هل تريد تجاهل التغييرات؟"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"إعداد الملف الشخصي"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"الاحتفاظ بها محليًا"</string>
     <string name="add_account" msgid="8201790677994503186">"إضافة حساب"</string>
     <string name="add_new_account" msgid="5748627740680940264">"إضافة حساب جديد"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"لم يتم إرسال المكالمة"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"رقم البريد الصوتي غير متاح"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"لم يتم إرسال المكالمة"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"لإعداد البريد الصوتي، انتقل إلى القائمة &gt; الإعدادات."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"للاتصال بالبريد الصوتي، يجب أولاً إيقاف وضع الطائرة."</string>
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 6441565..7d3c53c 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Пошук"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Новы кантакт"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Прагледзець кантакт"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Выклік карыст. <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Выклікаць <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Дадаць да любімых"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Выдаліць з Выбранага"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Рэдагаваць"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Прапанаваныя кантакты"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Усе кантакты"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Кантакты аб\'яднаныя"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Выдаліць кантакт?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Устал. рынгтон"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Усе выклікі на гал. пошту"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Вы не можаце выдаляць кантакты з улiковых запiсаў толькі для чытання, але вы можаце хаваць іх у спісах кантактаў."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> хв. <xliff:g id="SECONDS">%s</xliff:g> с."</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Частая сувязь"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Частыя званкi"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Дадаць кантакт"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Дадаць адрас \"<xliff:g id="EMAIL">%s</xliff:g>\" у кантакты?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"адзін"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"два"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"мінус"</string>
     <string name="description_plus_button" msgid="515164827856229880">"плюс"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Прагледзець кантакт"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Назапашвальнік недаступны"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Няма SD-карты"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Назапашвальнiк не знойдзены."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD-карта не знойдзена"</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Пошук файла vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Імпарт з SIM-карты"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Імпарт з назапашвальніка"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Экспарт на назапашвальнік"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Імпарт усіх файлаў vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Пошук дадзеных vCard на назапашвальніку..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Пошук дадзеных vCard на SD-карце..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Немагчыма сканаваць сховішча"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Немагчыма сканаваць SD-карту"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Не атрымалася праверыць назапашвальнiк. (Прычына: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Не атрымалася праверыць SD-карту. (Прычына: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Памылка ўводу/вываду"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Памылка запуску складальнiка файлаў vCard."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Немагчыма адкрыць файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> з <xliff:g id="TOTAL_NUMBER">%s</xliff:g> кантактаў"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Адмена імпарту vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Адмянiць iмпарт файла <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Адмена экспарту vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Адмянiць экспарт файла <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Немагчыма адмяніць імпарт/экспарт vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Імёны вашых кантактаў"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Паказаць кантакты"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Імпарт/экспарт"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Імпарт/экспарт кантактаў"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Імпартаваць кантакты"</string>
     <string name="menu_share" msgid="943789700636542260">"Апублікаваць"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Усе кантакты"</string>
     <string name="share_via" msgid="563121028023030093">"Апублікаваць кантакт з дапамогай"</string>
     <string name="share_error" msgid="948429331673358107">"Нельга падзялiцца гэтым кантактам."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Імя"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"аб\'яднаныя з розных крыніц (<xliff:g id="COUNT">%0$d</xliff:g>)"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Іншае"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Аб\'яднаць кантакты"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Аб\'яднаць бягучы кантакт з выбраным кантактам?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Рэдагаваць выбраныя кантакты"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Пераключыцца ў рэжым рэдагавання выбранага кантакту? Інфармацыя, якую вы ўвялі да гэтага часу, будзе скапіявана."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Капіяваць у мае кантакты"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Дадаць да Маіх кантактаў"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Загрузка..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Стварыць новы кантакт"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Увайсці ва ўліковы запіс"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Імпартаваць кантакты з файла?"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Імпартаваць кантакты"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Стварыць новую групу"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Стварыць новую групу]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Выдаліць групу"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 група"</item>
     <item quantity="other" msgid="1276758425904917367">"Груп: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Усталяваць па змаўчанні"</string>
     <string name="clear_default" msgid="7193185801596678067">"Скінуць налады па змаўчанні"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Тэкст скапіяваны"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Скасаваць змены"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Адмяніць змены?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g><xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Наладзіць мой профіль"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Захоўваць лакальна"</string>
     <string name="add_account" msgid="8201790677994503186">"Дадаць уліковы запіс"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Дадаць новы ўліковы запіс"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Выклік не зроблены"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Нумар галасавой пошты недаступны"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Выклік не зроблены"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Каб наладзіць галасавую пошту, націсніце \"Меню\" i перайдзiце ў налады."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Каб зрабiць выклік галасавой пошты, спачатку адключыце рэжым палёту."</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index ab14f83..42c71a8 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Търсене"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Нов контакт"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Преглед на контакт"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Обаждане на <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Обаждане на <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Добавяне към предпочитани"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Премахване от любими"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Редактиране"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Предлагани контакти"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Всички контакти"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Контактите са слети"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Да се изтрие ли контактът?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Мелодия: Задав."</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Всички обаждания до гл. поща"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Не можете да изтриете контакти от профили само за четене, но можете да ги скриете в списъците си с контакти."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Често търсени"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Чести обаждания"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Добавяне на контакт"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Да се добави ли „<xliff:g id="EMAIL">%s</xliff:g>“ към контакти?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"едно"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"две"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"минус"</string>
     <string name="description_plus_button" msgid="515164827856229880">"плюс"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Преглед на контакта"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Няма хранилище"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Няма SD карта"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Не бе намерено хранилище."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Не бе намерена SD карта."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Търсене на vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Импортиране от SIM карта"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Импорт. от хранилището"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Експорт. в хранилището"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Импортиране на всички vCard файлове"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Търсят се данни за vCard в хранилището..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Търсят се данни за vCard в SD картата..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Хранилището не можа да бъде сканирано"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SD картата не можа да бъде сканирана"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Хранилището не можа да бъде сканирано. (Причина: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD картата не можа да бъде сканирана. (Причина: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O грешка"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Създателят на vCard не се стартира правилно."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"„<xliff:g id="FILE_NAME">%s</xliff:g>“ не можа да се отвори: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> от <xliff:g id="TOTAL_NUMBER">%s</xliff:g> контакта"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Анулиране на импортирането на vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Да се анулира ли импортирането на <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Анулиране на експортирането на vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Да се анулира ли експортирането на <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Импорт./експорт. не можа да се анулира"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Имена на контактите ви"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Контакти за показване"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Импортиране/Експортиране"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Импортиране/Експортиране на контакти"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Импортиране на контактите"</string>
     <string name="menu_share" msgid="943789700636542260">"Споделяне"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Всички контакти"</string>
     <string name="share_via" msgid="563121028023030093">"Споделяне на контакт чрез"</string>
     <string name="share_error" msgid="948429331673358107">"Този контакт не може да бъде споделен."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Име"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"обединено от <xliff:g id="COUNT">%0$d</xliff:g> източник/а"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Други"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Сливане на контакти"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Да се слее ли текущият контакт с избрания?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Редактиране на избраните контакти"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Да се превключи ли към редактиране на избрания контакт? Въведената досега информация ще бъде копирана."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Копиране в моите контакти"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Добавяне в „Моите контакти“"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Зарежда се…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Създаване на нов контакт"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Вход в профил"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Импортиране на контакти от файл"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Импортиране на контактите"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Създаване на нова група"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Създаване на нова група]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Изтриване на групата"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 група"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> групи"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Задаване като стандартна настройка"</string>
     <string name="clear_default" msgid="7193185801596678067">"Изчистване на стандартната настройка"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Текстът бе копиран"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Отхвърляне на промените"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Да се отхвърлят ли направените от вас промени?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Настройка на потребителския ми профил"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Съхраняване локално"</string>
     <string name="add_account" msgid="8201790677994503186">"Добавяне на профил"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Добавяне на нов профил"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Обаждането не е извършено"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Номерът за гласова поща не е налице"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Обаждането не е извършено"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"За да настроите гласовата поща, отворете „Меню“ &gt; „Настройки“."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"За да чуете гласовата си поща, първо изключете самолетния режим."</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 59127b0..3fff01d 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Cerca"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Contacte nou"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Visualitza el contacte"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Truca a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Truca al <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Afegeix als preferits"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Elimina dels preferits"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edita"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contactes suggerits"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Tots els contactes"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contactes units"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Vols suprimir el contacte?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Est. to trucada"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Trucades a la bústia de veu"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"No pots suprimir cap contacte dels comptes de només lectura, però pots amagar-los a les llistes de contactes."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contactats sovint"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Trucats sovint"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Addició d\'un contacte"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Voleu afegir \"<xliff:g id="EMAIL">%s</xliff:g>\" als contactes?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"un"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dos"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"menys"</string>
     <string name="description_plus_button" msgid="515164827856229880">"més"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Mostra el contacte"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Emmagatzematge no dispon."</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"No hi ha cap targeta SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"No s\'ha trobat emmagatzematge."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"No s\'ha trobat cap targeta SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"S\'està cercant la vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importa des de la targeta SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importa de l\'emmagatzematge"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exporta a emmagatzematge"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importa tots els fitxers vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"S\'estan cercant dades de vCard a l\'emmagatzematge..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"S\'estan cercant les dades de vCard a la targeta SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"No s\'ha pogut explorar l\'emmagatzematge"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"No s\'ha pogut explorar la targeta SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"No s\'ha pogut explorar l\'emmagatzematge. (Motiu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"No s\'ha pogut explorar la targeta SD. (Motiu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Error d\'E/S"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"No s\'ha iniciat correctament el creador de vCard."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"No s\'ha pogut obrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactes"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Cancel·lació de la importació de la vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Vols cancel·lar la importació de: <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Cancel·lació de l\'exportació de la vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vols cancel·lar l\'exportació de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"No es pot cancel·lar la imp./exp. vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Noms dels contactes"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactes per mostrar"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importa/exporta"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importació/exportació de contactes"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importació de contactes"</string>
     <string name="menu_share" msgid="943789700636542260">"Comparteix"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Tots els contactes"</string>
     <string name="share_via" msgid="563121028023030093">"Comparteix el contacte mitjançant"</string>
     <string name="share_error" msgid="948429331673358107">"No es pot compartir aquest contacte."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nom"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"combinat de <xliff:g id="COUNT">%0$d</xliff:g> fonts"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Altres"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Ajunta els contactes"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Vols ajuntar el contacte actual amb el contacte seleccionat?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Edita els contactes seleccionats"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Vols canviar per editar el contacte seleccionat? Es copiarà la informació que hagis introduït fins ara."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Copia a Els meus contactes"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Afegeix a Els meus contactes"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"S\'està carregant…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crea un contacte nou"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Inicia la sessió a un compte"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importa contactes d\'un fitxer"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importa contactes"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Creació d\'un grup nou"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Crea un grup nou]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Supressió d\'un grup"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"Un grup"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grups"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Predeterminat"</string>
     <string name="clear_default" msgid="7193185801596678067">"Esborra els valors predeterminats"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Text copiat"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Descarta els canvis"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Vols descartar els canvis?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Configura el meu perfil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Conserva localment"</string>
     <string name="add_account" msgid="8201790677994503186">"Afegeix un compte"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Afegeix un compte nou"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"No s\'ha enviat la trucada"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Número de la bústia de veu no disponible"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"No s\'ha enviat la trucada"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Per configurar la bústia de veu, vés a Menú &gt; Configuració."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Per trucar al correu de veu, primer has de desactivar el mode d\'avió."</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 3846714..67ca859 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Hledat"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nový kontakt"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Zobrazit kontakt"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Volat kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Zavolat na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Přidat k oblíbeným položkám"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Odebrat z oblíbených položek"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Upravit"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Navrhované kontakty"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Všechny kontakty"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontakty byly spojeny"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Smazat kontakt?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Nast. vyzvánění"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Všechny hovory do hlas. schr."</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Z účtů pouze pro čtení není možné kontakty mazat, můžete je však ve svých seznamech kontaktů skrýt."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Často používané kontakty"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Často volané"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Přidat kontakt"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Chcete přidat „<xliff:g id="EMAIL">%s</xliff:g>“ do kontaktů?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"jedna"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dvě"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"mínus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Zobrazit kontakt"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Úložiště je nedostupné"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Žádná karta SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nebylo nalezeno žádné úložiště."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nebyla nalezena žádná karta SD"</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Vyhledávání karty vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importovat z karty SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importovat z úložiště"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportovat do úložiště"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importovat všechny soubory vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Vyhledávání dat souboru vCard v úložišti..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Vyhledávání dat souboru vCard na kartě SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Úložiště se nepodařilo prohledat"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Kartu SD se nepodařilo prohledat"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Nepodařilo se naskenovat úložiště. (Důvod: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Nepodařilo se naskenovat kartu SD. (Důvod: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Chyba I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Editor souboru vCard nebyl správně spuštěn."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"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" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktů"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Rušení importu souboru vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Zrušit import souboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Rušení exportu souboru vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Zrušit export souboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Import/export vizitky vCard nelze zrušit"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Jména vašich kontaktů"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakty k zobrazení"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importovat/Exportovat"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importovat nebo exportovat kontakty"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importovat kontakty"</string>
     <string name="menu_share" msgid="943789700636542260">"Sdílet"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Všechny kontakty"</string>
     <string name="share_via" msgid="563121028023030093">"Sdílet kontakt pomocí"</string>
     <string name="share_error" msgid="948429331673358107">"Tento kontakt nelze sdílet."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Jméno"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"sloučeno ze <xliff:g id="COUNT">%0$d</xliff:g> zdrojů"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Ostatní"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Spojit kontakty"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Spojit aktuální kontakt s vybraným kontaktem?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Upravit vybrané kontakty"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Přepnout do režimu úpravy vybraného kontaktu? Doposud zadané informace budou zkopírovány."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Zkopírovat do kontaktů"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Přidat do skupiny Moje kontakty"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Načítá se..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Vytvořit nový kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Přihlásit se do účtu"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importovat kontakty ze souboru"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importovat kontakty"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Vytvořit novou skupinu"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Vytvořit novou skupinu]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Smazat skupinu"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 skupina"</item>
     <item quantity="other" msgid="1276758425904917367">"Skupiny: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Výchozí nastavení"</string>
     <string name="clear_default" msgid="7193185801596678067">"Vymazat výchozí nastavení"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Text zkopírován"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Zrušit změny"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Zrušit změny?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Nastavit profil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Zachovat jako místní"</string>
     <string name="add_account" msgid="8201790677994503186">"Přidat účet"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Přidat nový účet"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Hovor nebyl odeslán"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Číslo hlasové schránky není dostupné"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Hovor nebyl odeslán"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Chcete-li nastavit hlasovou schránku, přejděte do části Menu &gt; Nastavení."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Chcete-li volat hlasovou schránku, nejdříve vypněte režim V letadle."</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 85bdd00..bf2b568 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Søg"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Ny kontakt"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Vis kontakt"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Ring til <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Ring til <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Føj til favoritter"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Fjern fra favoritter"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Rediger"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Foreslåede kontakter"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Alle kontakter"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Tilføjede kontakter"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Slet kontaktperson?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Indstil ringetone"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Alle opkald til telefonsvareren"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Du kan ikke slette kontaktpersoner fra skrivebeskyttede konti, men du kan skjule dem på listerne over dine kontaktpersoner."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Jævnligt kontaktet"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Ofte ringet til"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Tilføj kontakt"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Føj \"<xliff:g id="EMAIL">%s</xliff:g>\" til kontaktpersoner?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"et"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"to"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Vis kontaktperson"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Lager ikke tilgængeligt"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Der er intet SD-kort"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Intet lager blev fundet."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Ingen SD-kort fundet."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Søger efter vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importer fra SIM-kort"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importer fra lager"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksporter til lager"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importer alle VCard-filer"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Søger efter vCard-data på lager..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Søger efter vCard-data på SD-kortet..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Lagring kunne ikke scannes"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SD-kortet kunne ikke scannes"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Lageret kunne ikke scannes. (Årsag: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD-kortet kunne ikke scannes. (Årsag: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O-fejl"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Oprettelsen af vCard startede ikke korrekt."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" kunne ikke åbnes: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> af <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakter"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Annullerer import af vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Vil du annullere import af <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Annullerer eksport af vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vil du annullere eksport af <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Import/eksport af vCard kunne ikke annulleres"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Navne på dine kontakter"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakter, der skal vises"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importer og eksporter"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import/eksport kontakter"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importer kontaktpersoner"</string>
     <string name="menu_share" msgid="943789700636542260">"Del"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Alle kontaktpersoner"</string>
     <string name="share_via" msgid="563121028023030093">"Del kontakt via"</string>
     <string name="share_error" msgid="948429331673358107">"Denne kontaktperson kan ikke deles."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Navn"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"flettet fra <xliff:g id="COUNT">%0$d</xliff:g> kilder"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Andre"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Saml kontaktpersoner"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Forbind den aktuelle kontaktperson med den valgte kontaktperson?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Rediger valgte kontaktpersoner"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Vil du redigere den valgte kontaktperson? Dine indtastninger kopieres."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopier til Mine kontaktpersoner"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Føj til mine kontaktpersoner"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Indlæser…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Opret ny kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Log ind på en konto"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importer kontrakter fra en fil"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importer kontaktpersoner"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Opret en ny gruppe"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Opret en ny gruppe]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Slet gruppe"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 gruppe"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grupper"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Indstil standard"</string>
     <string name="clear_default" msgid="7193185801596678067">"Ryd standarder"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Kopieret tekst"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Kasser ændringer"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Skal ændringerne slettes?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Opret min profil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Gem lokalt"</string>
     <string name="add_account" msgid="8201790677994503186">"Tilføj konto"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Tilføj ny konto"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Opkaldet blev ikke sendt"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Nummer til telefonsvarer utilgængeligt"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Opkaldet blev ikke sendt"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Hvis du vil konfigurere telefonsvareren, skal du gå til Menu &gt; Indstillinger."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Hvis du vil ringe til telefonsvareren, skal du først slå Flytilstand fra."</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 704ccae..57a48bc 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Suche"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Neuer Kontakt"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Kontakt anzeigen"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"<xliff:g id="NAME">%s</xliff:g> anrufen"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> wählen"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Zu Favoriten hinzufügen"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Aus Favoriten entfernen"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Bearbeiten"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Vorgeschlagene Kontakte"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Alle Kontakte"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontakte wurden verknüpft."</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Kontakt löschen?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Klingeltonwahl"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Alle Anrufe an Mailbox"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Sie können keine Kontakte aus schreibgeschützten Konten löschen. Sie können sie aber in Ihren Kontaktlisten ausblenden."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> Minuten, <xliff:g id="SECONDS">%s</xliff:g> Sekunden"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Häufig kontaktiert"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Häufig angerufen"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Kontakt hinzufügen"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" zu den Kontakten hinzufügen?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"eins"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"zwei"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Kontakt anzeigen"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Kein Speicher verfügbar"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Keine SD-Karte"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Kein Speicher gefunden"</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Keine SD-Karte gefunden"</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"vCard wird gesucht."</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Von SIM-Karte importieren"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Aus Speicher importieren"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"In Speicher exportieren"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Alle vCard-Dateien importieren"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Suche nach vCard-Daten im Speicher..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Suche nach vCard-Daten auf der SD-Karte..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Scannen des Speichers nicht möglich"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Scannen der SD-Karte nicht möglich"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Der Speicher konnte nicht gelesen werden. (Grund: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Die SD-Karte konnte nicht gelesen werden. (Grund: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"E/A-Fehler"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Das Programm zum Erstellen der vCard wurde nicht richtig gestartet."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<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" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> von <xliff:g id="TOTAL_NUMBER">%s</xliff:g> Kontakten"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"vCard-Import wird abgebrochen."</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Import von <xliff:g id="FILENAME">%s</xliff:g> abbrechen?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"vCard-Export wird abgebrochen."</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Export von <xliff:g id="FILENAME">%s</xliff:g> abbrechen?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard-Import/-Export nicht abgebrochen"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Namen meiner Kontakte"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakte zum Anzeigen"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importieren/Exportieren"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import/Export von Kontakten"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Kontakte importieren"</string>
     <string name="menu_share" msgid="943789700636542260">"Teilen"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Alle Kontakte"</string>
     <string name="share_via" msgid="563121028023030093">"Kontakt teilen über"</string>
     <string name="share_error" msgid="948429331673358107">"Dieser Kontakt kann nicht geteilt werden."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Name"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"aus <xliff:g id="COUNT">%0$d</xliff:g> Quellen zusammengeführt"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Sonstige"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Kontakte zusammenführen"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Aktuellen Kontakt mit ausgewähltem Kontakt zusammenführen?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Ausgewählte Kontakte bearbeiten"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Zur Bearbeitung des ausgewählten Kontakts wechseln? Die bisher eingegebenen Informationen werden kopiert."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"In meine Kontakte kopieren"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Zu meinen Kontakten hinzufügen"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Wird geladen…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Neuen Kontakt erstellen"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"In einem Konto anmelden"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Kontakte aus einer Datei importieren"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Kontakte importieren"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Neue Gruppe erstellen"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Neue Gruppe erstellen]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Gruppe löschen"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 Gruppe"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> Gruppen"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Als Standard festlegen"</string>
     <string name="clear_default" msgid="7193185801596678067">"Als Standard löschen"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Text kopiert"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Änderungen verwerfen"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Sollen die Änderungen verworfen werden?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g><xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Mein Profil einrichten"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Lokal speichern"</string>
     <string name="add_account" msgid="8201790677994503186">"Konto hinzufügen"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Neues Konto hinzufügen"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Anruf nicht verbunden"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Mailbox-Nummer nicht verfügbar"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Anruf nicht verbunden"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Konfigurieren Sie Ihre Mailbox unter \"Menü\" &gt; \"Einstellungen\"."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Deaktivieren Sie zunächst den Flugmodus, um die Mailbox anzurufen."</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 15b7b91..b6c3dda 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Αναζήτηση"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Νέα επαφή"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Προβολή επαφής"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Κλήση <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Κλήση του αριθμού <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Προσθήκη στα αγαπημένα"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Κατάργηση από τα αγαπημένα"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Επεξεργασία"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Προτεινόμενες επαφές"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Όλες οι επαφές"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Οι επαφές συνδέθηκαν"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Διαγραφή επαφής;"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Ήχος κλήσης"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Κλήσεις στον τηλεφωνητή"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Δεν μπορείτε να διαγράψετε επαφές από λογαριασμούς οι οποίοι προορίζονται μόνο για ανάγνωση, αλλά μπορείτε να τις αποκρύψετε στις λίστες επαφών σας."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> λεπτά <xliff:g id="SECONDS">%s</xliff:g> δευτερόλεπτα"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Επαφές που έχετε συχνή επικοινωνία"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Συχνές κλήσεις"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Προσθήκη επαφής"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Προσθήκη του \"<xliff:g id="EMAIL">%s</xliff:g>\" στις επαφές?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"ένα"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"δύο"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"μείον"</string>
     <string name="description_plus_button" msgid="515164827856229880">"συν"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Προβολή επαφής"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Μη διαθέσιμος χώρος αποθ."</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Δεν υπάρχει κάρτα SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Δεν βρέθηκε χώρος αποθήκευσης."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Δεν βρέθηκε κάρτα SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Αναζήτηση κάρτας vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Εισαγωγή από κάρτα SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Εισαγωγή από τον χώρο αποθ."</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Εξαγωγή στον χώρο αποθ."</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Εισαγωγή όλων των αρχείων vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Αναζήτηση δεδομένων vCard στον χώρο αποθήκευσης..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Αναζήτηση για δεδομένα vCard στην κάρτα SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Δεν ήταν δυνατή η σάρωση του χώρου αποθήκευσης"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Δεν ήταν δυνατή η σάρωση της κάρτας SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Δεν ήταν δυνατή η σάρωση του χώρου αποθήκευσης. (Αιτία: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Δεν ήταν δυνατή η σάρωση της κάρτας SD. (Αιτία: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Σφάλμα I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Η έναρξη της vCard δεν ήταν σωστή."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Δεν ήταν δυνατό το άνοιγμα του αρχείου \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> από <xliff:g id="TOTAL_NUMBER">%s</xliff:g> επαφές"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Ακύρωση εισαγωγής της vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Να ακυρωθεί η εισαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g>;"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Ακύρωση εξαγωγής της vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Να ακυρωθεί η εξαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g>;"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Αδ.ακύρ.εισαγ./εξαγ.vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Ονόματα ων επαφών σας"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Επαφές για εμφάνιση"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Εισαγωγή/Εξαγωγή"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Εισαγωγή/Εξαγωγή επαφών"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Εισαγωγή επαφών"</string>
     <string name="menu_share" msgid="943789700636542260">"Κοινή χρήση"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Όλες οι επαφές"</string>
     <string name="share_via" msgid="563121028023030093">"Κοινή χρήση μέσω"</string>
     <string name="share_error" msgid="948429331673358107">"Δεν είναι δυνατή η κοινή χρήση αυτής της επαφής."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Όνομα"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"συγχώνευση από <xliff:g id="COUNT">%0$d</xliff:g> προελεύσεις"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Άλλο"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Ένωση επαφών"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Να γίνει ένωση της τρέχουσας επαφής με την επιλεγμένη επαφή;"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Επεξεργασία επιλεγμένων επαφών"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Να γίνει μετάβαση σε επεξεργασία της επιλεγμένης επαφής; Θα γίνει αντιγραφή των στοιχείων που έχετε εισαγάγει μέχρι τώρα."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Αντιγραφή στις Επαφές μου"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Προσθήκη στις Επαφές μου"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Φόρτωση…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Δημιουργία νέας επαφής"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Σύνδεση σε έναν λογαριασμό"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Εισαγωγή επαφών από ένα αρχείο"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Εισαγωγή επαφών"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Δημιουργία νέας ομάδας"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Δημιουργία νέας ομάδας]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Διαγραφή ομάδας"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 ομάδα"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> ομάδες"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Ορισμός ως προεπιλογή"</string>
     <string name="clear_default" msgid="7193185801596678067">"Εκκαθάριση προεπιλεγμένων"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Το κείμενο αντιγράφηκε"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Απόρριψη αλλαγών"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Να απορριφθούν οι αλλαγές σας;"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Ρύθμιση του προφίλ μου"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Αποθήκευση τοπικά"</string>
     <string name="add_account" msgid="8201790677994503186">"Προσθήκη λογαριασμού"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Προσθήκη νέου λογαριασμού"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Η κλήση δεν πραγματοποιήθηκε."</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Μη διαθέσιμος αριθμός αυτόμ. τηλεφωνητή"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Η κλήση δεν πραγματοποιήθηκε"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Για τη r;yumish του αυτόματου τηλεφωνητή, μεταβείτε στο στοιχείο Μενού &gt; Ρυθμίσεις."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Για κλήση αυτόματου τηλεφωνητή, πρώτα απενεργοποιήστε τη λειτουργία πτήσης."</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 72a67b3..ff97f51 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Search"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"New contact"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"View contact"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Call <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Add to favourites"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Remove from favourites"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edit"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Suggested Contacts"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"All contacts"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contacts joined"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Delete contact?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Set ringtone"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"All calls to voicemail"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"You can\'t delete contacts from read-only accounts, but you can hide them in your contacts lists."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> mins <xliff:g id="SECONDS">%s</xliff:g> secs"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Frequently contacted"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Frequently called"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Add contact"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Add \"<xliff:g id="EMAIL">%s</xliff:g>\" to contacts?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"one"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"two"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"View contact"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Storage unavailable"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"No SD card"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"No storage was found."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"No SD card was found."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Searching for vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Import from SIM card"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Import from storage"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Export to storage"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Import all vCard files"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Searching for vCard data in storage…"</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Searching for vCard data on SD card"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Couldn\'t scan storage"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Couldn\'t scan SD card"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"The storage couldn\'t be scanned. (Reason: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"The SD card couldn\'t be scanned. (Reason: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O error"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"The vCard composer didn\'t start properly."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Couldn\'t open \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> of <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Cancelling vCard import"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Cancel import of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Cancelling vCard export"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Cancel export of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Couldn\'t cancel vCard import/export"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Names of your contacts"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contacts to display"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Import/export"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import/export contacts"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Import contacts"</string>
     <string name="menu_share" msgid="943789700636542260">"Share"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"All contacts"</string>
     <string name="share_via" msgid="563121028023030093">"Share contact via"</string>
     <string name="share_error" msgid="948429331673358107">"This contact can\'t be shared."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Name"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"merged from <xliff:g id="COUNT">%0$d</xliff:g> sources"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Other"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Join contacts"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Join the current contact with the selected contact?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Edit selected contacts"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Switch to editing the selected contact? Information that you\'ve entered so far will be copied."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Copy to My Contacts"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Add to My Contacts"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Loading…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Create a new contact"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Sign in to an account"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Import contacts from a file"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Import contacts"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Create new group"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Create new group]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Delete group"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 group"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> groups"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Set default"</string>
     <string name="clear_default" msgid="7193185801596678067">"Clear default"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Text copied"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Discard changes"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Discard your changes?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Set up my profile"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Keep locally"</string>
     <string name="add_account" msgid="8201790677994503186">"Add account"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Add new account"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Call not sent."</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Voicemail number unavailable"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Call not sent"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"To set up voicemail, go to Menu &gt; Settings."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"To call voicemail, first turn off Airplane mode."</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index edb441d..35bee7f 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Buscar"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nuevo contacto"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Ver contacto"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Llamar al <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Agregar a favoritos"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Eliminar de favoritos"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contactos sugeridos"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Todos los contactos"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Unión de contactos"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"¿Eliminar contacto?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Establecer tono"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Llamadas al buzón de voz"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"No puedes eliminar contactos de cuentas de solo lectura, pero puedes ocultarlos en tus listas de contactos."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contactado con frecuencia"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Llamados con frecuencia"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Agregar contacto"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"¿Deseas agregar \"<xliff:g id="EMAIL">%s</xliff:g>\" a los contactos?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"uno"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dos"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"menos"</string>
     <string name="description_plus_button" msgid="515164827856229880">"más"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Ver contacto"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"No se dispone de espacio de almacenamiento."</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"No hay tarjeta SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"No se encontró almacenamiento."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"No se encontró una tarjeta SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Buscando vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importar de la tarjeta SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importar desde el almacenamiento"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportar al almacenamiento"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar todos los archivos de vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Buscando datos de vCard en el almacenamiento..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Buscando datos de vCard en la tarjeta SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"No se pudo explorar el almacenamiento."</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"No se pudo explorar la tarjeta SD."</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"No se pudo examinar el almacenamiento. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")."</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"No se pudo examinar la tarjeta SD. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Error de E/S"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"El compositor de la vCard no se inició correctamente."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"No se pudo abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Cancelación de importación de vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"¿Deseas cancelar la importación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Cancelación de exportación de vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"¿Deseas cancelar la exportación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"No se canceló la impor./expor. de vCard."</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Nombres de tus contactos"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactos para mostrar"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importar/Exportar"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Imp./exp. contactos"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importar contactos"</string>
     <string name="menu_share" msgid="943789700636542260">"Compartir"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Todos los contactos"</string>
     <string name="share_via" msgid="563121028023030093">"Compartir un contacto a través de"</string>
     <string name="share_error" msgid="948429331673358107">"No es posible compartir este contacto."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nombre"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"combinado a partir de fuentes <xliff:g id="COUNT">%0$d</xliff:g>"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Otro"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Agrupar contactos"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"¿Deseas agrupar el contacto actual con el contacto seleccionado?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Modificar contactos seleccionados"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"¿Optar por modificar contacto seleccionado? Se copiará la información que ingresaste hasta ahora."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Copiar en Mis contactos"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Agregar a Mis contactos"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Cargando..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crear un contacto nuevo"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Accede a una cuenta"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importar contactos desde un archivo"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importar contactos"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Crear grupo nuevo"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Crear grupo nuevo]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Eliminar grupo"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grupo"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grupos"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Establecer como predeterminado"</string>
     <string name="clear_default" msgid="7193185801596678067">"Eliminar predeterminado"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Texto copiado"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Descartar cambios"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"¿Deseas descartar los cambios?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g><xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Configurar mi perfil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Guardar localmente"</string>
     <string name="add_account" msgid="8201790677994503186">"Agregar una cuenta"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Agregar una cuenta nueva"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"No se realizó la llamada."</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Número de buzón de voz no disponible"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"No se realizó la llamada."</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar el buzón de voz, ve a a Menú &gt; Configuración."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para escuchar los mensajes de tu buzón de voz, desactiva primero el modo de avión."</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 0f06f92..5e0fd4d 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Buscar"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Contacto nuevo"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Ver contacto"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Llamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Añadir a \"Favoritos\""</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Eliminar de \"Favoritos\""</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contactos sugeridos"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Todos los contactos"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contactos agrupados"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"¿Eliminar contacto?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Establecer tono"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Llamadas al buzón de voz"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"No puedes eliminar los contactos procedentes de las cuentas de solo lectura, pero puedes ocultarlos en las listas de contactos."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. y <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contactos frecuentes"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Más llamados"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Añadir contacto"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"¿Quieres añadir \"<xliff:g id="EMAIL">%s</xliff:g>\" a Contactos?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"uno"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dos"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"menos"</string>
     <string name="description_plus_button" msgid="515164827856229880">"más"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Ver contacto"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Almacenamiento no disponible"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Falta la tarjeta SD."</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"No hay ningún almacenamiento."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"No se ha detectado ninguna tarjeta SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Buscando vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importar contactos desde la tarjeta SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importar de USB"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportar a almacenamiento"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar todos los archivos de vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Buscando datos de vCard en el almacenamiento..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Buscando datos de vCard en la tarjeta SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"No se ha podido analizar el almacenamiento."</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"No se ha podido analizar la tarjeta SD."</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"No se ha podido analizar el almacenamiento (motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")."</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"No se ha podido analizar la tarjeta SD (motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")."</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Error de E/S"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"El redactor de vCard no se ha iniciado correctamente."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"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" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Cancelando importación de vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"¿Seguro que quieres cancelar la importación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Cancelando exportación de vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"¿Seguro que quieres cancelar la exportación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Error al cancelar la importación/exportación de vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Nombres de tus contactos"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactos que mostrar"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importar/exportar"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importar/exportar contactos"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importar contactos"</string>
     <string name="menu_share" msgid="943789700636542260">"Compartir"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Todos los contactos"</string>
     <string name="share_via" msgid="563121028023030093">"Compartir contacto a través de"</string>
     <string name="share_error" msgid="948429331673358107">"No se puede compartir este contacto."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nombre"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"fusionados desde <xliff:g id="COUNT">%0$d</xliff:g> fuentes"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Otro"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Agrupar contactos"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"¿Quieres agrupar el contacto actual con el contacto seleccionado?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Editar contactos seleccionados"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"¿Quieres editar el contacto seleccionado? Se copiará la información que hayas introducido hasta el momento."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Copiar en mis contactos"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Añadir a Mis contactos"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Cargando..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crear contacto nuevo"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Acceder a una cuenta"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importar contactos de un archivo"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importar contactos"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Crear grupo nuevo"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Crear grupo nuevo]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Eliminar grupo"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"Un grupo"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grupos"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Establecer como predeterminado"</string>
     <string name="clear_default" msgid="7193185801596678067">"Borrar predeterminado"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Texto copiado"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Descartar cambios"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"¿Seguro que quieres descartar los cambios?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Configurar mi perfil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Guardar localmente"</string>
     <string name="add_account" msgid="8201790677994503186">"Añadir cuenta"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Añadir una cuenta nueva"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Llamada no enviada"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Número del buzón de voz no disponible"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Llamada no enviada"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar el buzón de voz, toca la tecla de menú y, a continuación, toca Ajustes."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para llamar al buzón de voz, debes desactivar el modo avión."</string>
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 087fb7a..566d9a3 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Otsing"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Uus kontakt"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Kuva kontakt"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Helista kasutajale <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Helistage: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Lisa lemmikutesse"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Eemalda lemmikutest"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Muuda"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Soovitatud kontaktid"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Kõik kontaktid"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontaktid ühendatud"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Kustutada kontakt?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Määrake helin"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Kõik kõned kõneposti"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Te ei saa kontakte kirjutuskaitstud kontodest kustutada, kuid saate need oma kontaktide loendis peita."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Sageli valitud kontaktid"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Sageli valitud üksus"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Lisa kontakt"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Kas lisada „<xliff:g id="EMAIL">%s</xliff:g>” kontaktidesse?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"üks"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"kaks"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"miinus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"pluss"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Vaadake kontakti"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Mäluseade pole saadaval"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"SD-kaart puudub"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Mäluruumi ei leitud."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD-kaarti ei leitud."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"vCardi otsimine"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Impordi SIM-kaardilt"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Impordi mäluseadmest"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Ekspordi mäluseadmesse"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Impordi kõik vCardi failid"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Mäluruumist vCardi andmete otsimine ..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD-kaardilt vCardi andmete otsimine ..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Mäluseadme skaneering ebaõnnestus"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SD-kaardi skaneering ebaõnnestus"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Mäluruumi ei saa kontrollida. (Põhjus: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD-kaarti ei saa kontrollida. (Põhjus: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O viga"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCardi helilooja ei käivitunud korralikult."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Faili „<xliff:g id="FILE_NAME">%s</xliff:g>” ei saa avada: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktist"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"vCardi importimise tühistamine"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Kas tühistada faili <xliff:g id="FILENAME">%s</xliff:g> importimine?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"vCardi eksportimise tühistamine"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Kas tühistada faili <xliff:g id="FILENAME">%s</xliff:g> eksportimine?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCardi impordi/ekspordi tühist. ebaõnn."</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Teie kontaktide nimed"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kuvatavad kontaktisikud"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Import/eksport"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Kontaktide import/eksport"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Kontaktide importimine"</string>
     <string name="menu_share" msgid="943789700636542260">"Jaga"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Kõik kontaktid"</string>
     <string name="share_via" msgid="563121028023030093">"Kontakti jagamisvalikud"</string>
     <string name="share_error" msgid="948429331673358107">"Seda kontakti ei saa jagada."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nimi"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"ühendati <xliff:g id="COUNT">%0$d</xliff:g> allikast"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Muu"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Kontaktide ühendamine"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Kas ühendada praegune kontakt valitud kontaktiga?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Valitud kontaktide muutmine"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Kas lülituda valitud kontakti muutmisse? Seni sisestatud andmed kopeeritakse."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopeeri valikusse Minu kontaktid"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Lisa lehele Minu kontaktid"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Laadimine ..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Loo uus kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Logi kontole sisse"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Impordi kontaktid failist"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Impordi kontaktid"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Uue grupi loomine"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Uue grupi loomine]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Grupi kustutamine"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grupp"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> rühma"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Määra vaikeseadeks"</string>
     <string name="clear_default" msgid="7193185801596678067">"Kustuta vaikeseaded"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Tekst on kopeeritud"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Loobu muudatustest"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Kas loobute oma muudatustest?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g><xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Minu profiili seadistamine"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Hoia kohalikuna"</string>
     <string name="add_account" msgid="8201790677994503186">"Lisa konto"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Lisa uus konto"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Kõnet ei tehtud"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Kõneposti number pole saadaval"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Kõnet ei tehtud"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Kõneposti seadistamiseks minge valikusse Menüü &gt; Seaded."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Kõneposti kuulamiseks lülitage lennurežiim välja."</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 2bacc4e..8295c67 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"جستجو"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"مخاطب جدید"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"مشاهده مخاطب"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"تماس با <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"تماس با <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"افزودن به موارد دلخواه"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"حذف از موارد دلخواه"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"ویرایش"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"مخاطبین پیشنهادی"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"همه مخاطبین"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"مخاطبین ملحق شده"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"مخاطب حذف شود؟"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"تنظیم آهنگ زنگ"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"همه تماس‌ها به پست صوتی"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"شما نمی‌توانید مخاطبین را از حساب‌های فقط خواندنی حذف کنید اما می‌توانید آن‌ها را در لیست‌های مخاطبین خود پنهان کنید."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> دقیقه و <xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"اغلب تماس گرفته شده"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"اغلب به نام"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"افزودن مخاطب"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" به مخاطبین افزوده شود؟"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"یک"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"دو"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"منها"</string>
     <string name="description_plus_button" msgid="515164827856229880">"به اضافه"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"مشاهده مخاطب"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"حافظه در دسترس نیست"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"کارت SD موجود نیست"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"هیچ دستگاه ذخیره‌ای یافت نشد."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"کارت SD یافت نشد."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"جستجوی کارت ویزیت"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"وارد کردن از سیم کارت"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"وارد کردن از حافظه"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"صادر کردن به حافظه"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"وارد کردن همه فایل های کارت ویزیت"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"جستجوی داده کارت ویزیت در دستگاه ذخیره..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"درحال جستجوی داده‌های کارت ویزیت در کارت SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"اسکن کردن محل ذخیره ممکن نیست"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"اسکن کارت SD ممکن نیست"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"دستگاه ذخیره نمی‌تواند بررسی شود. (علت: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"کارت SD نمی‌تواند بررسی شود. (علت: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"خطای ورودی/خروجی"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"سازنده فایل کارت ویزیت به درستی اجرا نشد."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" باز نشد: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> از <xliff:g id="TOTAL_NUMBER">%s</xliff:g> مخاطب"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"لغو وارد کردن کارت ویزیت"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"وارد کردن <xliff:g id="FILENAME">%s</xliff:g> لغو شود؟"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"لغو صادر کردن کارت ویزیت"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"صادر کردن <xliff:g id="FILENAME">%s</xliff:g> لغو شود؟"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"نمی‌توان وارد کردن/ صادر کردن کارت ویزیت را لغو کرد"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"نام های مخاطبین شما"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"مخاطبین جهت نمایش"</string>
     <string name="menu_import_export" msgid="26217871113229507">"وارد کردن/صادر کردن"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"وارد کردن/صادر کردن مخاطبین"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"وارد کردن مخاطبین"</string>
     <string name="menu_share" msgid="943789700636542260">"اشتراک گذاری"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"همه مخاطبین"</string>
     <string name="share_via" msgid="563121028023030093">"اشتراک گذاری مخاطب از طریق"</string>
     <string name="share_error" msgid="948429331673358107">"این مخاطب قابل اشتراک‌گذاری نیست."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"نام"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"ادغام شده از منابع <xliff:g id="COUNT">%0$d</xliff:g>"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"سایر موارد"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"پیوستن به مخاطبین"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"پیوستن به مخاطب فعلی با مخاطب انتخابی؟"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"ویرایش محتویات انتخابی"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"به ویرایش مخاطب انتخابی می روید؟ اطلاعاتی که تا حال وارد کرده اید کپی خواهد شد."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"کپی در مخاطبین من"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"افزودن به مخاطبین من"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"درحال بارگیری..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ایجاد مخاطب جدید"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"وارد شدن به یک حساب"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"وارد کردن مخاطبین از یک فایل"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"وارد کردن مخاطبین"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"ایجاد گروه جدید"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[ایجاد گروه جدید]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"حذف گروه"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 گروه"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> گروه"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"تنظیم پیش فرض"</string>
     <string name="clear_default" msgid="7193185801596678067">"پاک کردن پیش فرض‌ها"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"متن کپی شده"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"صرفنظر از تغییرات"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"از تغییرات شما صرفنظر شود؟"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g><xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"راه‌اندازی نمایه من"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"ذخیره بصورت محلی"</string>
     <string name="add_account" msgid="8201790677994503186">"افزودن حساب"</string>
     <string name="add_new_account" msgid="5748627740680940264">"اافزودن حساب جدید"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"تماس ارسال نشد"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"شماره پست صوتی در دسترس نیست"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"تماس ارسال نشد"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"برای راه‌اندازی پست صوتی به منو &gt; تنظیمات بروید."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"برای تماس با پست صوتی، ابتدا حالت هواپیما را غیرفعال کنید."</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 33db52f..e451f9b 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Haku"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Uusi yhteystieto"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Näytä yhteystieto"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Soita: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Soita <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Lisää suosikkeihin"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Poista suosikeista"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Muokkaa"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Ehdotetut yhteystiedot"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Kaikki yhteystiedot"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Yhteystiedot yhdistetty"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Poista yhteystieto?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Aseta soittoääni"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Kaikki puhelut vastaajaan"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Et voi poistaa yhteystietoja vain luku -tilassa olevista tileistä. Voit kuitenkin piilottaa yhteystietoja yhteystietoluetteloissasi."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Usein käytetyt"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Soitettu usein"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Lisää yhteystieto"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Lisätäänkö <xliff:g id="EMAIL">%s</xliff:g> yhteystietoihin?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"yksi"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"kaksi"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"miinus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Näytä yhteystieto"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Tallennustila ei käytettävissä"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Ei SD-korttia"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Tallennustilaa ei löydy."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD-korttia ei löydy."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Etsitään vCardia"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Tuo SIM-kortilta"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Tuo tallennustilasta"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Vie tallennustilaan"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Tuo kaikki vCard-tiedostot"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Etsitään vCard-tietoja tallennustilasta..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Etsitään vCard-tietoja SD-kortilta..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Tallennustilan luku epäonnistui."</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SD-korttia ei voi lukea."</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Tallennustilan luku epäonnistui. (Syy: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD-korttia ei voi lukea. (Syy: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O-virhe"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCard-luonti ei käynnistynyt oikein."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Tiedostoa \"<xliff:g id="FILE_NAME">%s</xliff:g>\" ei voi avata: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> / <xliff:g id="TOTAL_NUMBER">%s</xliff:g> yhteystietoa"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Peruutetaan vCardin tuontia"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Peruuta kohteen <xliff:g id="FILENAME">%s</xliff:g> tuonti?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Peruutetaan vCardin vientiä"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Peruuta kohteen <xliff:g id="FILENAME">%s</xliff:g> vienti?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCardin tuonnin/viennin peruutus epäonn."</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Yhteystietojen nimet"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Näytettävät yhteystiedot"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Tuo/Vie"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Tuo/Vie yhteystietoja"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Tuo yhteystietoja"</string>
     <string name="menu_share" msgid="943789700636542260">"Jaa"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Kaikki kontaktit"</string>
     <string name="share_via" msgid="563121028023030093">"Jaa yhteystieto"</string>
     <string name="share_error" msgid="948429331673358107">"Tätä yhteystietoa ei voi jakaa."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nimi"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"yhdistetty <xliff:g id="COUNT">%0$d</xliff:g> lähteestä"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Muu"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Yhdistä yhteystiedot"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Yhdistetäänkö nykyiset yhteystiedot valittujen yhteystietojen kanssa?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Muokkaa valittuja yhteystietoja"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Haluatko muokata valittuja yhteystietoja? Antamasi tiedot kopioidaan."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopioi yhteystietoihini"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Lisää kontakteihin"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Ladataan..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Luo uusi yhteystieto"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Kirjaudu tiliin"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Tuo yhteystietoja tiedostosta"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Tuo yhteystietoja"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Luo uusi ryhmä"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Luo uusi ryhmä]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Poista ryhmä"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 ryhmä"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> ryhmää"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Aseta oletukseksi"</string>
     <string name="clear_default" msgid="7193185801596678067">"Poista oletus"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Teksti kopioitu"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Hylkää muutokset"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Hylätäänkö muutokset?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Luo profiili"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Säilytä paikallisena"</string>
     <string name="add_account" msgid="8201790677994503186">"Lisää tili"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Lisää uusi tili"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Puhelua ei soitettu."</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Vastaajan numero ei saatavilla"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Puhelua ei soitettu"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Määritä puhelinvastaajan asetukset kohdassa Valikko &gt; Asetukset."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Poista lentokonetila käytöstä ennen vastaajaan soittamista."</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 98ce13e..ff02563 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Rechercher"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nouveau contact"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Afficher le contact"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Appeler <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Ajouter aux favoris"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Supprimer des favoris"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Modifier"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contacts suggérés"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Tous les contacts"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contacts joints"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Supprimer contact ?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Régler sonnerie"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Tous appels vers messag. voc."</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Impossible de supprimer les contacts des comptes en lecture seule. Vous pouvez les masquer dans la liste des contacts."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> mn <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contacts fréquents"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Appels fréquents"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Ajouter un contact"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Ajouter \"<xliff:g id="EMAIL">%s</xliff:g>\" aux contacts ?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"un"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"deux"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"moins"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Afficher le contact"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Mémoire non disponible"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Aucune carte SD trouvée"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Aucune mémoire stock. trouvée."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Aucune carte SD détectée."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Recherche des données VCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importer à partir de la carte SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importer depuis mémoire"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exporter vers la mémoire"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importer tous les fichiers vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Recherche de données vCard dans la mémoire de stockage…"</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Recherche de données vCard sur la carte SD…"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Impossible d\'analyser la mémoire de stockage"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Impossible d\'analyser la carte SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Impossible d\'explorer la mémoire de stockage pour la raison suivante : <xliff:g id="FAIL_REASON">%s</xliff:g>."</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Impossible d\'explorer la carte SD pour la raison suivante : <xliff:g id="FAIL_REASON">%s</xliff:g>."</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Erreur d\'E/S."</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Le système de composition vCard n\'a pas démarré correctement."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Impossible d\'ouvrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\" pour la raison suivante : <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> sur <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Annulation importation fichier vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Annuler l\'importation de \"<xliff:g id="FILENAME">%s</xliff:g>\" ?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Annulation exportation fichier vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Annuler l\'exportation de \"<xliff:g id="FILENAME">%s</xliff:g>\" ?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Impossible annuler import./export. vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Noms de vos contacts"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contacts à afficher"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importer/Exporter"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import/Export contacts"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importer des contacts"</string>
     <string name="menu_share" msgid="943789700636542260">"Partager"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Tous les contacts"</string>
     <string name="share_via" msgid="563121028023030093">"Partager contact via"</string>
     <string name="share_error" msgid="948429331673358107">"Impossible de partager ce contact."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nom"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"1 contact fusionné à partir de <xliff:g id="COUNT">%0$d</xliff:g> sources"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Autre"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Joindre les contacts"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Associer ce contact au contact sélectionné ?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Modifier les contacts sélectionnés"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Modifier le contact sélectionné ? Les informations saisies jusqu\'ici seront copiées."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Copier dans \"Mes contacts\""</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Ajouter à \"Mes contacts\""</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Chargement…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Créer un contact"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Se connecter à un compte"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importer les contacts d\'un fichier"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importer des contacts"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Créer un groupe"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Créer un groupe]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Supprimer le groupe"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"Un groupe"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> groupes"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Définir par défaut"</string>
     <string name="clear_default" msgid="7193185801596678067">"Effacer les valeurs par défaut"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Texte copié"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Supprimer les modifications"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Annuler les modifications ?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g> "</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Configurer mon profil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Enregistrer localement"</string>
     <string name="add_account" msgid="8201790677994503186">"Ajouter un compte"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Ajouter un compte"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Appel non effectué"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Messagerie vocale indisponible"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Appel non effectué."</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Pour configurer la messagerie vocale, accédez à Menu &gt; Paramètres."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Veuillez désactiver le mode Avion avant d\'appeler la messagerie vocale."</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 5690338..c5d97c6 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"खोज"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"नया संपर्क"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"संपर्क देखें"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"<xliff:g id="NAME">%s</xliff:g> को कॉल करें"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"पसंदीदा में जोड़ें"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"पसंदीदा से निकालें"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"संपादित करें"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"सुझाए गए संपर्क"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"सभी संपर्क"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"संपर्क जुड़ गए"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"संपर्क हटाएं?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"रिंगटोन सेट करें"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"ध्‍वनि‍मेल से सभी कॉल"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"आप केवल-पढ़ने के लिए खातों से संपर्क नहीं हटा सकते, लेकिन आप उन्‍हें अपनी संपर्क सूचियों में छुपा सकते हैं."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> मिनट <xliff:g id="SECONDS">%s</xliff:g> सेकंड"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"बार-बार संपर्क किया गया"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"बार-बार कॉल किया गया"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"संपर्क जोड़ें"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" को संपर्कों में जोड़ें?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"एक"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"दो"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"निकालें"</string>
     <string name="description_plus_button" msgid="515164827856229880">"जोड़ें"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"संपर्क देखें"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"संग्रहण अनुपलब्ध"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"कोई SD कार्ड नहीं"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"कोई संग्रहण नहीं मिला."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"कोई SD कार्ड नहीं मिला."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"vCard खोज रहा है"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"सिम कार्ड से आयात करें"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"संग्रहण से आयात करें"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"संग्रहण में निर्यात करें"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"सभी vCard फ़ाइलें आयात करें"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"संग्रहण में vCard डेटा खोज रहा है..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD कार्ड पर vCard डेटा खोज रहा है…"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"संग्रहण स्‍कैन नहीं हो सका"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SD कार्ड स्‍कैन नहीं हो सका"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"संग्रहण स्‍कैन नहीं किया जा सका. (कारण: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD कार्ड स्कैन नहीं किया जा सका. (कारण: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O त्रुटि"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCard कंपोज़र ठीक से शुरू नहीं हुआ."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" नहीं खोली जा सकी: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="TOTAL_NUMBER">%s</xliff:g> में से <xliff:g id="CURRENT_NUMBER">%s</xliff:g> संपर्क"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"vCard आयात रद्द कर रहा है"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"<xliff:g id="FILENAME">%s</xliff:g> का आयात रद्द करें?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"vCard निर्यात रद्द किया जा रहा है"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"<xliff:g id="FILENAME">%s</xliff:g> का निर्यात रद्द करें?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard आयात/निर्यात रद्द नहीं हो सका"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"आपके संपर्कों के नाम"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"प्रदर्शन के लिए संपर्क"</string>
     <string name="menu_import_export" msgid="26217871113229507">"आयात करें/निर्यात करें"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"संपर्क आयात/निर्यात करें"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"संपर्क आयात करें"</string>
     <string name="menu_share" msgid="943789700636542260">"शेयर करें"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"सभी संपर्क"</string>
     <string name="share_via" msgid="563121028023030093">"इसके द्वारा संपर्क शेयर करें"</string>
     <string name="share_error" msgid="948429331673358107">"यह संपर्क साझा नहीं किया जा सकता."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"नाम"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> स्रोतों से मर्ज किया गया"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"अन्य"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"संपर्क जोड़ें"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"वर्तमान संपर्क को चयनित संपर्क से जोड़ें?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"चयनित संपर्कों को संपादित करें"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"चयनित संपर्क के संपादन पर जाएं? आपके द्वारा अभी तक दर्ज की गई जानकारी की प्रतिलिपि बनाई जाएगी."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"मेरे संपर्क में प्रतिलिपि बनाएं"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"मेरे संपर्क में जोड़ें"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"लोड हो रहा है..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"एक नया संपर्क बनाएं"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"किसी खाते में साइन इन करें"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"फ़ाइल से संपर्क आयात करें"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"संपर्क आयात करें"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"नया समूह बनाएं"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[नया समूह बनाएं]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"समूह हटाएं"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 समूह"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> समूह"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"डिफ़ॉल्ट सेट करें"</string>
     <string name="clear_default" msgid="7193185801596678067">"डिफ़ॉल्‍ट साफ़ करें"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"पाठ की प्रतिलिपि बनाई गई"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"परिवर्तन छोड़ें"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"आपके परिवर्तन छोड़ें?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"मेरी प्रोफ़ाइल सेट करें"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"स्‍थानीय रखें"</string>
     <string name="add_account" msgid="8201790677994503186">"खाता जोड़ें"</string>
     <string name="add_new_account" msgid="5748627740680940264">"नया खाता जोड़ें"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"कॉल नहीं भेजा गया"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"ध्‍वनिमेल नंबर अनुपलब्‍ध"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"कॉल नहीं भेजा गया"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ध्‍वनिमेल सेट करने के लिए, मेनू &gt; सेटिंग पर जाएं."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"ध्‍वनिमेल कॉल करने के लिए, पहले हवाई जहाज़ मोड बंद करें."</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index da85680..56f7630 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Pretraži"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Novi kontakt"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Prikaži kontakt"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Nazovi <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Nazovite <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Dodaj u favorite"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Ukloni iz favorita"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Uredi"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Predloženi kontakti"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Svi kontakti"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontakti su pridruženi"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Izbrisati kontakt?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Postavi zvuk zvona"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Svi pozivi na govornu poštu"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Ne možete izbrisati kontakte s računa samo za čitanje, ali možete ih sakriti na svojim popisima kontakata."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> minuta <xliff:g id="SECONDS">%s</xliff:g> sekundi"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Često kontaktirani"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Često nazivani"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Dodaj kontakt"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Dodati \"<xliff:g id="EMAIL">%s</xliff:g>\" kontaktima?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"jedan"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dva"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Prikaži kontakt"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Prostor za pohranu nedostupan"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Nema SD kartice"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nije pronađena nijedna pohrana."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nije pronađena SD kartica."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Traženje kartice vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Uvezi sa SIM kartice"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Uvoz iz pohrane"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Izvoz u pohranu"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Uvezi sve vCard datoteke"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Traženje vCard podataka u pohrani..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Pretraživanje vCard podataka na SD kartici..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Skeniranje pohrane nije uspjelo"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Skeniranje SD kartice nije uspjelo"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Pohrana se ne može skenirati. (Razlog: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD kartica ne može se skenirati. (Razlog: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O pogreška"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Sastavljač za vCard nije se ispravno pokrenuo."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Datoteku \"<xliff:g id="FILE_NAME">%s</xliff:g>\" nije moguće otvoriti radi: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> od <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakata"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Otkazivanje uvoza kartice vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Otkazati uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Otkazivanje izvoza kartice vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Otkazati izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Uvoz/izvoz kartice vCard nije otkazan"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Nazivi vaših kontakata"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakti za prikaz"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Uvoz/izvoz"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Uvoz/izvoz kontakata"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Uvezi kontakte"</string>
     <string name="menu_share" msgid="943789700636542260">"Podijeli"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Svi kontakti"</string>
     <string name="share_via" msgid="563121028023030093">"Dijeli kontakt putem"</string>
     <string name="share_error" msgid="948429331673358107">"Ovaj kontakt nije moguće dijeliti."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Ime"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"spojen s <xliff:g id="COUNT">%0$d</xliff:g> izvora"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Drugo"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Pridruživanje kontakata"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Pridružiti trenutačni kontakt odabranom kontaktu?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Uredi odabrane kontakte"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Prebaciti se na uređivanje odabranog kontakta? Informacije koje ste unijeli dosad kopirat će se."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopiraj u Moje kontakte"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Dodaj u Moje kontakte"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Učitavanje..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Izradi novi kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Prijavi se na račun"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Uvezi kontakte iz datoteke"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Uvezi kontakte"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Izrada nove grupe"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Izradi novu grupu]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Izbriši grupu"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grupa"</item>
     <item quantity="other" msgid="1276758425904917367">"Br. grupa: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Postavi zadano"</string>
     <string name="clear_default" msgid="7193185801596678067">"Izbriši zadano"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Tekst kopiran"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Odbaci promjene"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Odbaciti promjene?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g><xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Postavi moj profil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Zadrži lokalno"</string>
     <string name="add_account" msgid="8201790677994503186">"Dodaj račun"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Dodaj novi račun"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Poziv nije poslan"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Broj govorne pošte nedostupan je"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Poziv nije poslan"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Da biste postavili govornu poštu, idite na Izbornik &gt; Postavke."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Da biste nazvali govornu poštu, najprije isključite način rada u zrakoplovu."</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 0f99b0f..e0dbe1f 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Keresés"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Új névjegy"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Névjegy megtekintése"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"<xliff:g id="NAME">%s</xliff:g> hívása"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Hívás: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Hozzáadás a kedvencekhez"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Eltávolítás a kedvencek közül"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Szerkesztés"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Javasolt névjegyek"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Összes névjegy"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"A névjegyek összekapcsolása megtörtént"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Törli a névjegyet?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Csengőhang"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Minden hívás a hangpostára"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Írásvédett fiókból nem törölhet névjegyet, de saját címtárában elrejtheti azokat."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> perc <xliff:g id="SECONDS">%s</xliff:g> másodperc"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Gyakran keresett"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Gyakran hívott"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Névjegy hozzáadása"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Hozzáadja a(z) \"<xliff:g id="EMAIL">%s</xliff:g>\"címet a Címtárhoz?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"egy"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"kettő"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"mínusz"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plusz"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Névjegy megtekintése"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"A tárhely nem érhető el"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Hiányzó SD-kártya"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nem található tárhely."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nem található SD-kártya."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"vCard keresése"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importálás a SIM-kártyáról"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importálás a tárhelyről"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportálás a tárhelyre"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Az összes vCard fájl importálása"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"vCard-adatok keresése a tárhelyen..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"vCard-adatok keresése az SD-kártyán..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Nem sikerült beolvasni a tárolót"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Nem lehet beolvasni az SD-kártyát"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"A tárhelyet nem lehet beolvasni. (Indok: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Az SD-kártyát nem lehet beolvasni. (Ok: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O hiba"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"A vCard-készítő nem megfelelően indult el."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"A(z) \"<xliff:g id="FILE_NAME">%s</xliff:g>\" fájl nem nyitható meg: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> névjegy"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"vCard importálásának megszakítása"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Megszakítja <xliff:g id="FILENAME">%s</xliff:g> importálását?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"vCard exportálásának megszakítása"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Megszakítja <xliff:g id="FILENAME">%s</xliff:g> exportálását?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard imp./exp. megszakítása sikertelen"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Ismerősök nevei"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Megjelenítendő névjegyek"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importálás/exportálás"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Névjegyek importálása/exportálása"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Névjegyek importálása"</string>
     <string name="menu_share" msgid="943789700636542260">"Megosztás"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Összes névjegy"</string>
     <string name="share_via" msgid="563121028023030093">"Névjegy megosztása a következőn:"</string>
     <string name="share_error" msgid="948429331673358107">"Ez a névjegy nem osztható meg."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Név"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"egyesítve <xliff:g id="COUNT">%0$d</xliff:g> forrásból"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Egyéb"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Névjegyek összekapcsolása"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Összekapcsolja a jelenlegi névjegyet a kiválasztott névjeggyel?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"A kiválasztott névjegyek szerkesztése"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"A kiválasztott névjegy szerkesztésére vált? Az eddig beírt információk át lesznek másolva."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Másolás a saját névjegyeim közé"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Hozzáadás a Címtárhoz"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Betöltés..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Új névjegy létrehozása"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Jelentkezzen be fiókjába"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Névjegyek importálása fájlból"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Névjegyek importálása"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Új csoport létrehozása"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Új csoport létrehozása]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Csoport törlése"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 csoport"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> csoport"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Beállítás alapértelmezettként"</string>
     <string name="clear_default" msgid="7193185801596678067">"Alapértelmezés törlése"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Másolt szöveg"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Módosítások elvetése"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Elveti a módosításokat?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Saját profil beállítása"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Tárolás helyben"</string>
     <string name="add_account" msgid="8201790677994503186">"Fiók hozzáadása"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Új fiók hozzáadása"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"A hívás nem indítható."</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"A hangpostaszám nem érhető el"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"A hívás nem indítható."</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"A hangposta beállításához válassza a Menü &gt; Beállítások pontot."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Hangposta hívásához kapcsolja ki a Repülőgép üzemmódot."</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 6d3f29c..e1526d3 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Telusuri"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Kenalan baru"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Lihat kenalan"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Panggil <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Tambahkan ke favorit"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Hapus dari favorit"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edit"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Kenalan yang disarankan"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Semua kenalan"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kenalan telah bergabung"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Hapus data kenalan?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Setel nada dering"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Semua panggilan ke kotak pesan"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Anda tidak dapat menghapus data kenalan dari akun hanya-baca, namun Anda dapat menyembunyikannya dalam daftar data kenalan Anda."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> menit <xliff:g id="SECONDS">%s</xliff:g> detik"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Paling sering dihubungi"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Paling sering dipanggil"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Tambahkan kenalan"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Tambahkan \"<xliff:g id="EMAIL">%s</xliff:g>\" ke kenalan?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"satu"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dua"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Lihat kenalan"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Penyimpanan tidak tersedia"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Tidak ada kartu SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Tidak ditemukan penyimpanan."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Tidak ditemukan kartu SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Menelusuri vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Impor dari kartu SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Impor dari penyimpanan"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Ekspor ke penyimpanan"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Impor semua berkas vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Menelusuri data vCard dalam penyimpanan..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Menelusuri data vCard pada kartu SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Tidak dapat memindai penyimpanan"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Tidak dapat memindai kartu SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Penyimpanan tidak dapat dipindai. (Alasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kartu SD tidak dapat dipindai. (Alasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Galat I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Penyusun vCard tidak memulai dengan semestinya."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Tidak dapat membuka \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> dari <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kenalan"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Membatalkan impor vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Batalkan impor <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Membatalkan ekspor vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Batalkan ekspor <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Tidak dpt membatalkan impor/ekspor vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Nama kenalan Anda"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kenalan untuk ditampilkan"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Impor/ekspor"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Impor/ekspor data kenalan"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Impor kenalan"</string>
     <string name="menu_share" msgid="943789700636542260">"Bagikan"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Semua kenalan"</string>
     <string name="share_via" msgid="563121028023030093">"Bagikan kenalan melalui"</string>
     <string name="share_error" msgid="948429331673358107">"Data kenalan ini tidak dapat dibagi."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nama"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"digabungkan dari <xliff:g id="COUNT">%0$d</xliff:g> sumber"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Lainnya"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Gabungkan kenalan"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Gabungkan kenalan ini dengan kenalan yang dipilih?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Edit kenalan yang dipilih"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Beralih ke mengedit kenalan yang dipilih? Informasi yang telah Anda masukkan sejauh ini akan disalin."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Salin ke Data Kenalan Saya"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Tambahkan ke Kenalan Saya"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Memuat..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Buat kenalan baru"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Masuk ke akun."</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Mengimpor data kenalan dari berkas"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Impor kenalan"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Buat grup baru"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Buat grup baru]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Hapus grup"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grup"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grup"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Setel sebagai bawaan"</string>
     <string name="clear_default" msgid="7193185801596678067">"Hapus bawaan"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Teks disalin"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Singkirkan perubahan"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Buang perubahan Anda?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Siapkan profil saya"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Simpan secara lokal"</string>
     <string name="add_account" msgid="8201790677994503186">"Tambahkan akun"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Tambahkan akun baru"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Panggilan tidak terkirim"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Nomor pesan suara tidak tersedia"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Panggilan tidak terkirim"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Untuk menyiapkan kotak pesan, buka Menu &gt; Setelan."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Untuk memanggil pesan suara, pertama-tama matikan mode Pesawat."</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 32b8522..404eb95 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Cerca"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nuovo contatto"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Visualizza contatto"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Chiama <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Chiama <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Aggiungi a preferiti"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Rimuovi dai preferiti"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Modifica"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contatti suggeriti"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Tutti i contatti"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contatti uniti"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Eliminare contatto?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Imposta suoneria"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Tutte le chiamate a segreteria"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Non puoi eliminare contatti da account di sola lettura, ma puoi nasconderli nei tuoi elenchi di contatti."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contattati spesso"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Numeri più chiamati"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Aggiungi contatto"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Aggiungi \"<xliff:g id="EMAIL">%s</xliff:g>\" ai contatti?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"uno"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"due"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"meno"</string>
     <string name="description_plus_button" msgid="515164827856229880">"più"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Visualizza contatto"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Archivio non disponibile"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Nessuna scheda SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nessun archivio trovato."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nessuna scheda SD trovata."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Ricerca vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importa da scheda SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importa da archivio"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Esporta in archivio"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importa tutti i file vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Ricerca di dati vCard nell\'archivio..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Ricerca dati vCard su scheda SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Scansione archivio non riuscita"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Scansione scheda SD non riuscita"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Scansione dell\'archivio non riuscita. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Scansione della scheda SD non riuscita. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Errore I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Il compositore di vCard non si è avviato correttamente."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Apertura di \"<xliff:g id="FILE_NAME">%s</xliff:g>\" non riuscita: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> contatti su <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Annullamento importazione vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Annullare l\'importazione di <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Annullamento esportazione vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Annullare l\'esportazione di <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Annullam. import./esport. vCard non riuscito"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"I nomi dei tuoi contatti"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contatti da visualizzare"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importa/esporta"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importa/esporta contatti"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importa contatti"</string>
     <string name="menu_share" msgid="943789700636542260">"Condividi"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Tutti i contatti"</string>
     <string name="share_via" msgid="563121028023030093">"Condividi contatto tramite"</string>
     <string name="share_error" msgid="948429331673358107">"Questo contatto non può essere condiviso."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nome"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"uniti da <xliff:g id="COUNT">%0$d</xliff:g> origini"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Altro"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Unisci contatti"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Unire il contatto corrente al contatto selezionato?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Modifica i contatti selezionati"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Passare alla modifica del contatto selezionato? Le informazioni inserite finora verranno copiate."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Copia nei miei contatti"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Aggiungi ai contatti personali"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Caricamento..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crea nuovo contatto"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Accedi a un account"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importa contatti da file"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importa contatti"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Crea nuovo gruppo"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Crea nuovo gruppo]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Elimina gruppo"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 gruppo"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> gruppi"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Imposta come predefinito"</string>
     <string name="clear_default" msgid="7193185801596678067">"Cancella impostazione predefinita"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Testo copiato"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Ignora modifiche"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Annullare le modifiche?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g> "</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Imposta il mio profilo"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Memorizza in locale"</string>
     <string name="add_account" msgid="8201790677994503186">"Aggiungi account"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Aggiungi nuovo account"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Chiamata non inviata"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Numero segreteria non disponibile"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Chiamata non inviata"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Per configurare la segreteria, seleziona Menu &gt; Impostazioni."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Per chiamare la segreteria, disattiva la modalità aereo."</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 6403596..12c5cc9 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"חפש"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"איש קשר חדש"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"הצג איש קשר"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"התקשר אל <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"התקשר אל <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"הוסף למועדפים"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"הסר מהמועדפים"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"ערוך"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"אנשי קשר מוצעים"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"כל אנשי הקשר"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"אנשי קשר צורפו"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"למחוק את איש הקשר?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"הגדר רינגטון"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"כל השיחות לתא הקולי"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"לא ניתן למחוק אנשי קשר מחשבונות לקריאה בלבד, אך ניתן להסתיר אותם ברשימות אנשי הקשר."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> דקות <xliff:g id="SECONDS">%s</xliff:g> שניות"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"בקשר לעתים קרובות"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"התקשרות לעתים קרובות"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"הוסף איש קשר"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"להוסיף את \"<xliff:g id="EMAIL">%s</xliff:g>\" לאנשי הקשר?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"אחד"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"שתיים"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"חיסור"</string>
     <string name="description_plus_button" msgid="515164827856229880">"חיבור"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"הצג איש קשר"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"אמצעי אחסון אינו זמין"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"אין כרטיס SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"לא נמצאו התקני אחסון."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"לא נמצא כרטיס SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"מחפש vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"ייבא מכרטיס SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"ייבא מאמצעי אחסון"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"ייצא לאמצעי אחסון"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"ייבא את כל קובצי vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"מחפש נתוני vCard באמצעי האחסון..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"מחפש נתוני vCard בכרטיס ה-SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"לא ניתן לסרוק אחסון"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"לא ניתן לסרוק כרטיס SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"לא ניתן לסרוק את אמצעי האחסון. (סיבה: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"לא ניתן לסרוק את כרטיס ה-SD. (סיבה: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"שגיאת קלט/פלט"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"יישום היצירה של ה-vCard לא הופעל כהלכה."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"לא ניתן לפתוח את \"<xliff:g id="FILE_NAME">%s</xliff:g>\"‏: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> מתוך <xliff:g id="TOTAL_NUMBER">%s</xliff:g> אנשי קשר"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"מבטל יבוא של vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"לבטל את הייבוא של <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"מבטל יצוא של vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"לבטל את הייצוא של <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"לא ניתן לבטל ייבוא/ייצוא של vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"השמות של אנשי הקשר"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"אנשי קשר להצגה"</string>
     <string name="menu_import_export" msgid="26217871113229507">"ייבוא/ייצוא"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"יבא/יצא אנשי קשר"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"יבוא אנשי קשר"</string>
     <string name="menu_share" msgid="943789700636542260">"שתף"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"כל אנשי הקשר"</string>
     <string name="share_via" msgid="563121028023030093">"שתף איש קשר באמצעות"</string>
     <string name="share_error" msgid="948429331673358107">"לא ניתן לשתף איש קשר זה."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"שם"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"מוזגו מ-<xliff:g id="COUNT">%0$d</xliff:g> מקורות"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"אחר"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"צרף אנשי קשר"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"לצרף את איש הקשר הנוכחי לאיש הקשר שנבחר?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"ערוך את אנשי הקשר שנבחרו"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"לעבור לעריכה של איש הקשר שנבחר? המידע שהזנת עד עכשיו יועתק."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"העתק אל \'אנשי הקשר שלי\'"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"הוסף ל\'אנשי הקשר שלי\'"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"טוען..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"צור איש קשר חדש"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"היכנס לחשבון"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"ייבא אנשי קשר מקובץ"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"יבא אנשי קשר"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"צור קבוצה חדשה"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[צור קבוצה חדשה]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"מחק את הקבוצה"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"קבוצה אחת"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> קבוצות"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"קבע כברירת מחדל"</string>
     <string name="clear_default" msgid="7193185801596678067">"נקה ברירת מחדל"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"טקסט שהועתק"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"מחק שינויים"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"למחוק את השינויים שביצעת?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"הגדר את הפרופיל שלי"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"שמור באופן מקומי"</string>
     <string name="add_account" msgid="8201790677994503186">"הוסף חשבון"</string>
     <string name="add_new_account" msgid="5748627740680940264">"הוסף חשבון חדש"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"השיחה לא נשלחה."</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"המספר של הדואר הקולי אינו זמין"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"השיחה לא נשלחה."</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"כדי להגדיר את הדואר הקולי, עבור אל \'תפריט\' &gt; \'הגדרות\'."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"כדי להתקשר לדואר קולי, ראשית כבה את מצב הטיסה."</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index a96f32c..186f415 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"検索"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"連絡先を新規登録"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"連絡先詳細"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"<xliff:g id="NAME">%s</xliff:g>に発信"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>に発信"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"お気に入りに追加"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"お気に入りから削除"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"編集"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"連絡先候補"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"すべての連絡先"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"連絡先を結合しました"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"連絡先を削除しますか?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"着信音を設定"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"すべての通話をボイスメールへ"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"読み取り専用アカウントの連絡先は削除できません。ただし、連絡先リストで非表示にすることができます。"</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g>分<xliff:g id="SECONDS">%s</xliff:g>秒"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"よく使う連絡先"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"よく使う連絡先"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"連絡先を追加"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"<xliff:g id="EMAIL">%s</xliff:g> を連絡先に追加しますか?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"1"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"2"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"マイナス"</string>
     <string name="description_plus_button" msgid="515164827856229880">"プラス"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"連絡先を表示"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"ストレージ使用不可"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"SDカードがありません"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"ストレージはありませんでした。"</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SDカードが見つかりませんでした。"</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"vCardを検索中"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"SIMカードからインポート"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"ストレージからインポート"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"ストレージにエクスポート"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"すべてのvCardファイルをインポート"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"ストレージ内でvCardデータを検索しています..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SDカードでvCardデータを検索しています..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"ストレージをスキャンできませんでした"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SDカードをスキャンできませんでした"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"ストレージをスキャンできませんでした(理由: 「<xliff:g id="FAIL_REASON">%s</xliff:g>」)。"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SDカードをスキャンできませんでした(理由: 「<xliff:g id="FAIL_REASON">%s</xliff:g>」)。"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"送受信エラー"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCardコンポーザーが正しく起動しませんでした。"</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"「<xliff:g id="FILE_NAME">%s</xliff:g>」を開けませんでした: <xliff:g id="EXACT_REASON">%s</xliff:g>。"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>件のファイル"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"vCardインポートのキャンセル"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"<xliff:g id="FILENAME">%s</xliff:g>のインポートをキャンセルしますか?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"vCardエクスポートのキャンセル"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"<xliff:g id="FILENAME">%s</xliff:g>のエクスポートをキャンセルしますか?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCardインポート/エクスポート取り消し不可"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"連絡先の名前"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"表示する連絡先"</string>
     <string name="menu_import_export" msgid="26217871113229507">"インポート/エクスポート"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"連絡先のインポート/エクスポート"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"連絡先のインポート"</string>
     <string name="menu_share" msgid="943789700636542260">"共有"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"すべての連絡先"</string>
     <string name="share_via" msgid="563121028023030093">"連絡先の共有ツール"</string>
     <string name="share_error" msgid="948429331673358107">"この連絡先は共有できません。"</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"名前"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g>件の連絡先が結合されました"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"その他"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"連絡先の統合"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"現在の連絡先を選択した連絡先に統合しますか?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"選択した連絡先の編集"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"選択した連絡先の編集に切り替えますか?これまでに入力した情報はコピーされます。"</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Myコンタクトにコピー"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Myコンタクトに追加"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"読み込んでいます..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"新しい連絡先を作成"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"アカウントにログイン"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"ファイルから連絡先をインポート"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"連絡先をインポート"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"新しいグループの作成"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[新しいグループを作成]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"グループの削除"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1グループ"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g>グループ"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"デフォルトに設定"</string>
     <string name="clear_default" msgid="7193185801596678067">"デフォルトを解除"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"テキストをコピーしました"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"変更を破棄"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"変更を破棄しますか?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"プロフィールを設定"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"ローカルに保存"</string>
     <string name="add_account" msgid="8201790677994503186">"アカウントを追加"</string>
     <string name="add_new_account" msgid="5748627740680940264">"新しいアカウントを追加"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"発信できません"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"ボイスメールの番号を利用できません"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"発信できません"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ボイスメールをセットアップするには、MENUキー&gt;[設定]をタップします。"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"機内モードをOFFにしてからボイスメールを呼び出してください。"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index c0fd67d..61baf4f 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"검색"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"새 연락처"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"연락처 보기"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"<xliff:g id="NAME">%s</xliff:g>님에게 전화걸기"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>에 전화"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"즐겨찾기에 추가"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"즐겨찾기에서 삭제"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"수정"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"추천 연락처"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"모든 연락처"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"연락처 결합됨"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"연락처를 삭제하시겠습니까?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"벨소리 설정"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"음성사서함 자동 연결"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"연락처를 읽기 전용 계정에서 삭제할 수는 없지만 주소록에서 숨길 수는 있습니다."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g>분 <xliff:g id="SECONDS">%s</xliff:g>초"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"자주 연락하는 사람들의 연락처"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"자주 통화한 목록"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"연락처 추가"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\'<xliff:g id="EMAIL">%s</xliff:g>\'을(를) 주소록에 추가하겠습니까?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"1"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"2"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"빼기"</string>
     <string name="description_plus_button" msgid="515164827856229880">"더하기"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"연락처 보기"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"저장장치 없음"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"SD 카드 없음"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"저장공간을 찾을 수 없습니다."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD 카드가 없습니다."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"vCard 검색"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"SIM 카드에서 가져오기"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"저장소에서 가져오기"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"저장소로 내보내기"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"모든 vCard 파일 가져오기"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"저장장치에서 vCard 데이터 검색 중..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD 카드의 vCard 데이터 검색 중..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"저장소를 검색하지 못했습니다."</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SD 카드를 검색하지 못했습니다."</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"저장소를 검색할 수 없습니다(이유: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')."</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD 카드를 검색할 수 없습니다(이유: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')."</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O 오류"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCard 작성기가 제대로 시작되지 않았습니다."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\'<xliff:g id="FILE_NAME">%s</xliff:g>\'을(를) 열 수 없습니다(이유: <xliff:g id="EXACT_REASON">%s</xliff:g>)."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"연락처 <xliff:g id="CURRENT_NUMBER">%s</xliff:g>개(총 <xliff:g id="TOTAL_NUMBER">%s</xliff:g>개) 내보내는 중"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"vCard 가져오기 취소 중"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"<xliff:g id="FILENAME">%s</xliff:g> 가져오기를 취소하시겠습니까?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"vCard 내보내기 취소 중"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"<xliff:g id="FILENAME">%s</xliff:g> 내보내기를 취소하시겠습니까?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard 가져오기/내보내기를 취소하지 못했습니다."</string>
     <string name="search_settings_description" msgid="2675223022992445813">"연락처 명단"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"표시할 연락처"</string>
     <string name="menu_import_export" msgid="26217871113229507">"가져오기/내보내기"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"주소록 가져오기/내보내기"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"주소록 가져오기"</string>
     <string name="menu_share" msgid="943789700636542260">"공유"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"모든 연락처"</string>
     <string name="share_via" msgid="563121028023030093">"연락처 공유에 사용할 애플리케이션:"</string>
     <string name="share_error" msgid="948429331673358107">"연락처를 공유할 수 없습니다."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"이름"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g>개 출처에서 병합했습니다."</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"기타"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"연락처 통합"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"이 연락처와 선택한 연락처를 통합하시겠습니까?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"선택한 연락처 수정"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"선택한 연락처를 수정하시겠습니까? 지금까지 입력하신 정보는 복사됩니다."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"내 주소록에 복사"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"내 주소록에 추가"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"로드 중…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"새 연락처 만들기"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"계정에 로그인"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"파일에서 주소록 가져오기"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"주소록 가져오기"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"새 그룹 만들기"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[새 그룹 만들기]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"그룹 삭제"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"그룹 1개"</item>
     <item quantity="other" msgid="1276758425904917367">"그룹 <xliff:g id="COUNT">%0$d</xliff:g>개"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"기본으로 설정"</string>
     <string name="clear_default" msgid="7193185801596678067">"기본 설정 지우기"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"텍스트 복사됨"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"변경사항 취소"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"변경사항을 삭제하시겠습니까?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g> "</string>
     <string name="profile_display_name" msgid="4127389543625918771">"내 프로필 설정"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"오프라인 보관"</string>
     <string name="add_account" msgid="8201790677994503186">"계정 추가"</string>
     <string name="add_new_account" msgid="5748627740680940264">"새 계정 추가"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"전화를 걸 수 없음"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"음성사서함 번호를 사용할 수 없음"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"전화를 걸 수 없음"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"음성사서함을 설정하려면 메뉴 &gt; 설정으로 이동하세요."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"음성사서함에 메시지를 남기려면 먼저 비행기 모드를 해제하세요."</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 0145168..edf8426 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Ieškoti"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Naujas adresatas"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Žiūrėti adresatą"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Skambinti <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Skambinti <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Pridėti prie adresyno"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Pašalinti iš adresyno"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Redaguoti"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Siūlomi adresatai"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Visi adresatai"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Sujungti adresatai"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Ištrinti kontaktą?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Nustat. sk. toną"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Visi skamb. į balso paštą"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Negalite ištrinti kontaktų iš tik skaitomų paskyrų, bet galite paslėpti juos savo kontaktų sąrašuose."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Dažnai susisiekiama"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Dažniausiai skambinta"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Pridėti adresatą"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Pridėti „<xliff:g id="EMAIL">%s</xliff:g>“ prie adresatų?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"vienas"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"du"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plius"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Peržiūrėti kontaktą"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Saugykla neprieinama"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Nėra SD kortelės"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nerasta jokių atmintinių."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nerasta jokių SD kortelių."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Ieškoma „vCard“ kortelės"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importuoti iš SIM kortelės"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importuoti iš saugyklos"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksportuoti į saugyklą"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importuoti visus „VCard“ kortelės failus"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Ieškoma el. vizitinės kortelės duomenų saugykloje..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD kortelėje ieškoma el. vizitinės kortelės duomenų..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Nepavyko nuskaityti atminties"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Nepavyko nuskaityti SD kortelės"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Atmintinės negalima žvalgyti. (Priežastis: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD kortelės negalima žvalgyti. (Priežastis: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Įvesties / išvesties klaida"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"El. vizitinių kortelių rengyklė nebuvo tinkamai paleista."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Nepavyko atidaryti „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> iš <xliff:g id="TOTAL_NUMBER">%s</xliff:g> adresatų"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Atšaukiamas el. vizitinės kortelės importavimas"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Atšaukti <xliff:g id="FILENAME">%s</xliff:g> importavimą?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Atšaukiamas el. vizitinės kortelės eksportavimas"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Atšaukti <xliff:g id="FILENAME">%s</xliff:g> eksportavimą?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Nepavyko atš. „vCard“ imp. / eksp."</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Adresatų vardai"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Pateiktini kontaktai"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importuoti / eksportuoti"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import. / eksport. kont."</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importuoti kontaktus"</string>
     <string name="menu_share" msgid="943789700636542260">"Bendrinti"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Visi kontaktai"</string>
     <string name="share_via" msgid="563121028023030093">"Bendrinti adresatą naudojant"</string>
     <string name="share_error" msgid="948429331673358107">"Šio kontakto negalima bendrinti."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Pavadinimas"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"sujungta iš <xliff:g id="COUNT">%0$d</xliff:g> šaltinių (-io)"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Kita"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Sujungti kontaktus"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Sujungti dabartinį kontaktą su pasirinktu?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Redaguoti pasirinktus kontaktus"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Perjungti į pasirinkto kontakto redagavimą? Iki šiol įvesta informacija bus nukopijuota."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopijuoti į „Mano kontaktus“"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Pridėti prie „Mano kontaktų“"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Įkeliama..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Sukurti naują kontaktą"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Prisijunkite prie paskyros"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importuoti kontaktus iš failo"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importuoti kontaktus"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Sukurti naują grupę"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Sukurti naują grupę]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Ištrinti grupę"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grupė"</item>
     <item quantity="other" msgid="1276758425904917367">"Grupių: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Nustatyti numatytuosius nustatymus"</string>
     <string name="clear_default" msgid="7193185801596678067">"Išvalyti numatytuosius nustatymus"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Tekstas nukopijuotas"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Atmesti pakeitimus"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Atmesti pakeitimus?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Nustatyti mano profilį"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Išsaug. kaip vietinį"</string>
     <string name="add_account" msgid="8201790677994503186">"Pridėkite paskyrą"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Pridėkite naują paskyrą"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Skambutis neišsiųstas"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Balso pašto numeris nepasiekiamas"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Skambutis neišsiųstas"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Jei norite nustatyti balso paštą, eikite į „Meniu“ &gt; „Nustatymai“."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Jei norite skambinti į balso paštą, išjunkite lėktuvo režimą."</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 50172d8..902fcc7 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Meklēt"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Jauna kontaktpersona"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Skatīt kontaktpersonu"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Zvanīt: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Zvaniet: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Pievienot izlasei"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Noņemt no izlases"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Rediģēt"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Ieteiktās kontaktpersonas"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Visas kontaktpersonas"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontaktpersonas ir apvienotas."</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Vai dzēst kontaktp.?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Iest. zv. sign."</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Visi zvani uz balss pastu"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Jūs nevarat dzēst kontaktpersonas no tikai lasāmiem kontiem, taču varat tās slēpt kontaktpersonu sarakstos."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Bieža saziņa"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Bieži zvanīti"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Pievienot kontaktpersonu"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Vai pievienot “<xliff:g id="EMAIL">%s</xliff:g>” kontaktpersonām?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"viens"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"divi"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"mīnuss"</string>
     <string name="description_plus_button" msgid="515164827856229880">"pluss"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Skatīt kontaktpersonu"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"USB atmiņa nav pieejama"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Nav SD kartes"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Netika atrasta atmiņa."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Netika atrasta SD karte."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"vCard faila meklēšana"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importēt no SIM kartes"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importēt no USB atmiņas"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksportēt uz USB atmiņu"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importēt visus vCard failus"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Notiek vCard datu meklēšana atmiņā..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Notiek vCard datu meklēšana SD kartē..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Nevarēja skenēt atmiņu."</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Nevarēja skenēt SD karti."</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Atmiņu nevarēja skenēt. (Iemesls: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD karti nevarēja skenēt. (Iemesls: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Ievades/izvades kļūda."</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Netika pareizi startēts vCard veidotājs."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Nevarēja atvērt failu <xliff:g id="FILE_NAME">%s</xliff:g>: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> no <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktpersonas(-ām)"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"vCard importēšanas atcelšana"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Vai atcelt faila <xliff:g id="FILENAME">%s</xliff:g> importēšanu?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"vCard eksportēšanas atcelšana"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vai atcelt faila <xliff:g id="FILENAME">%s</xliff:g> eksportēšanu?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Nevarēja atcelt vCard f. import./eksp."</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Kontaktpersonu vārdi"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Attēlojamās kontaktpersonas"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importēt/eksportēt"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"K. pers. imports/eksports"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Kontaktpersonu importēšana"</string>
     <string name="menu_share" msgid="943789700636542260">"Kopīgot"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Visas kontaktpersonas"</string>
     <string name="share_via" msgid="563121028023030093">"Kopīgot kontaktpersonu, izmantojot"</string>
     <string name="share_error" msgid="948429331673358107">"Šo kontaktpersonu nevar kopīgot."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Vārds"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"sapludināts no <xliff:g id="COUNT">%0$d</xliff:g> avotiem"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Cits"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Kontaktpersonu savienošana"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Vai savienot pašreizējo saturu ar atlasīto kontaktpersonu?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Atlasīto kontaktpersonu rediģēšana"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Vai pāriet uz atlasītās kontaktpersonas rediģēšanu? Līdz šim ievadītā informācija tiks kopēta."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopēt uz manām kontaktpersonām"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Pievienot mapē Manas kontaktpersonas"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Notiek ielāde..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Izveidot jaunu kontaktpersonu"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Pierakstīties kontā"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importēt kontaktpersonas no faila"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importēt kontaktpersonas"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Jaunas grupas izveide"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Izveidot jaunu grupu]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Grupas dzēšana"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grupa"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grupas"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Iestatīt kā noklusējumu"</string>
     <string name="clear_default" msgid="7193185801596678067">"Notīrīt noklusējuma iestatījumus"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Teksts ir nokopēts"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Atmest izmaiņas"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Vai atmest veiktās izmaiņas?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g><xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Iestatīt savu profilu"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Saglabāt vietēji"</string>
     <string name="add_account" msgid="8201790677994503186">"Pievienot kontu"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Pievienot jaunu kontu"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Nenosūtīts zvans"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Nepieejams balss pasta numurs"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Nenosūtīts zvans"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Lai iestatītu balss pastu, atveriet sadaļu Izvēlne &gt; Iestatījumi."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Lai piezvanītu balss pastam, vispirms izslēdziet lidojuma režīmu."</string>
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 2a6190f..425bbac 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Cari"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Kenalan baru"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Papar kenalan"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Panggil <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Tambah ke kegemaran"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Alih keluar daripada kegemaran"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edit"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Kenalan cadangan"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Semua kenalan"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kenalan digabungkan"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Padamkan kenalan?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Ttpkn nd dering"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Semua panggilan ke mel suara"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Anda tidak boleh memadamkan kenalan daripada akaun baca sahaja, tetapi anda boleh menyembunyikan mereka dalam senarai kenalan anda."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> saat"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Kerap dihubungi"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Kerap dipanggil"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Tambah kenalan"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Tambah \"<xliff:g id="EMAIL">%s</xliff:g>\" kepada kenalan?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"satu"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dua"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"tolak"</string>
     <string name="description_plus_button" msgid="515164827856229880">"tambah"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Lihat kenalan"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Storan tidak tersedia"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Tiada kad SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Tiada storan ditemui."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Tiada kad SD ditemui."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Mencari vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Import daripada kad SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Import dari storan"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksport ke storan"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Import semua fail vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Mencari data vCard pada storan..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Mencari data vCard pada kad SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Tidak dapat mengimbas storan"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Tidak dapat mengimbas kad SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Storan tidak boleh diimbas. (Alasan: \" <xliff:g id="FAIL_REASON">%s</xliff:g> \")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kad SD tidak boleh diimbas. (Alasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Ralat I/O"</string>
@@ -275,9 +268,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Komposer vCard tidak bermula dengan betul."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Tidak dapat membuka \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> daripada <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kenalan"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Membatalkan mengimport vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Batalkan pengimportan <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Membatalkan mengeksport vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Batalkan pengeksportan <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Tidak dapat membatalkan import/eksport vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Nama kenalan anda"</string>
@@ -293,8 +284,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kenalan untuk dipaparkan"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Import/eksport"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import/Eksport kenalan"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Import kenalan"</string>
     <string name="menu_share" msgid="943789700636542260">"Kongsi"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Semua kenalan"</string>
     <string name="share_via" msgid="563121028023030093">"Kongsi gambar melalui"</string>
     <string name="share_error" msgid="948429331673358107">"Kenalan ini tidak boleh dikongsi."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nama"</string>
@@ -443,9 +434,7 @@
     <item quantity="other" msgid="425683718017380845">"digabungkan daripada <xliff:g id="COUNT">%0$d</xliff:g> sumber"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Lain-lain"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Gabungkan kenalan"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Gabungkan kenalan semasa dengan kenalan pilihan?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Edit kenalan pilihan"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Bertukar kepada mengedit kenalan pilihan? Maklumat yang anda masukkan setakat ini akan disalin."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Salin ke Kenalan Saya"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Tambahkan pada Kenalan Saya"</string>
@@ -477,10 +466,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Memuatkan…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Buat kenalan baru"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Log masuk ke akaun"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Import kenalan dari fail"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Import kenalan"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Buat kumpulan baru"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Buat kumpulan baru]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Padam kumpulan"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 kumpulan"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> kumpulan"</item>
@@ -499,7 +487,6 @@
     <string name="set_default" msgid="4417505153468300351">"Tetapkan lalai"</string>
     <string name="clear_default" msgid="7193185801596678067">"Kosongkan lalai"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Teks disalin"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Buang perubahan"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Buang perubahan anda?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Sediakan profil saya"</string>
@@ -563,7 +550,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Simpan setempat"</string>
     <string name="add_account" msgid="8201790677994503186">"Tambah akaun"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Tambah akaun baharu"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Panggilan tidak dihantar"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Nombor mel suara tidak tersedia"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Panggilan tidak dihantar"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Untuuk menyediakan mel suara, pergi ke Menu &gt; Tetapan."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Untuk membuat panggilan ke mel suara, mula-mula matikan mod Pesawat."</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 37e4946..77c41bd 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Søk"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Ny kontakt"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Se på kontakt"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Legg til som favoritt"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Fjern fra favoritter"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Rediger"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Forslag"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Alle kontakter"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontaktene er forent"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Slette kontakten?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Angi ringetone"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Alle samtaler til talepost"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Du kan ikke slette kontakter fra skrivebeskyttede kontoer, men du kan skjule dem i kontaktlisten."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Ofte kontaktet"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Ofte oppringt"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Legg til kontakt"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Legg til «<xliff:g id="EMAIL">%s</xliff:g>» som kontakt?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"en"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"to"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minusknapp"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plussknapp"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Se kontakt"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Lagring utilgjengelig"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Mangler minnekort"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Finner ikke lagringsplass."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Finner ikke SD-kort."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Leter etter VCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importér fra SIM-kort"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importér fra lagring"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksportér til lagring"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importer alle vCard-filer"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Søker etter vCard-data i lagringsenheten …"</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Søker etter vCard-data på SD-kortet …"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Kunne ikke skanne lagring"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Kunne ikke skanne SD-kort"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Lagringsenheten kunne ikke skannes. (Grunn: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD-kortet kan ikke skannes. (Grunn: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Inn-/ut-feil"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCard-oppretteren startet ikke som den skulle."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Kan ikke åpne «<xliff:g id="FILE_NAME">%s</xliff:g>»: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> av <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakter"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Avbryt import av vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Vil du avbryte importen av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Avbryt eksport av vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vil du avbryte eksporten av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Kunne ikke kansellere imp./eksp. av vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Navn på kontakter"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakter i visning"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importér/eksportér"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Imp./eksp. kontakter"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importer kontakter"</string>
     <string name="menu_share" msgid="943789700636542260">"Del"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Alle kontakter"</string>
     <string name="share_via" msgid="563121028023030093">"Del kontakt via"</string>
     <string name="share_error" msgid="948429331673358107">"Denne kontakten kan ikke deles."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Navn"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"sammenslått fra <xliff:g id="COUNT">%0$d</xliff:g> kilder"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Andre"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Slå sammen kontakter"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Slå sammen gjeldende kontakt med valgt kontakt?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Rediger valgte kontakter"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Bytt til redigering av gjeldende kontakt? Informasjonen du har lagt til så langt blir kopiert."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopiér til mine kontakter"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Legg til i Mine kontakter"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Laster inn …"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Opprett en ny kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Logg deg på en konto"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importer kontakter fra en fil"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importer kontakter"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Opprett ny gruppe"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Opprett ny gruppe]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Slett gruppe"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"Én gruppe"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grupper"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Angi som standard"</string>
     <string name="clear_default" msgid="7193185801596678067">"Fjern som standard"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Tekst kopiert"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Forkast endringer"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Vil du forkaste endringene?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Konfigurer profilen min"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Behold lokalt"</string>
     <string name="add_account" msgid="8201790677994503186">"Legg til konto"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Legg til ny konto"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Anrop ikke foretatt"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Talepostkassenummer utilgjengelig"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Anrop ikke utført"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Du konfigurerer talepost ved å gå til Meny &amp;gt Innstillinger"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Du må slå av flymodus før du kan sjekke talepostkassen."</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index b4a7617..a21171a 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Zoeken"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nieuw contact"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Contact weergeven"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"<xliff:g id="NAME">%s</xliff:g> bellen"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Toevoegen aan favorieten"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Uit favorieten verwijderen"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Bewerken"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Mogelijke contacten"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Alle contacten"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contacten zijn samengevoegd"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Contact verwijderen?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Beltoon instellen"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Alle oproepen naar voicemail"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"U kunt contacten niet verwijderen uit alleen-lezen-accounts, maar u kunt ze verbergen in uw contactenlijst."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Regelmatig contact"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Vaak gebeld"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Contact toevoegen"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Voeg \"<xliff:g id="EMAIL">%s</xliff:g>\" toe aan contactpersonen?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"één"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"twee"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"min"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Contact weergeven"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Opslag niet beschikbaar"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Geen SD-kaart"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Er is geen opslag gevonden."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Geen SD-kaart gevonden."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Zoeken naar vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importeren van SIM-kaart"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importeren uit opslag"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exporteren naar opslag"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Alle vCard-bestanden importeren"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Zoeken naar vCard-gegevens in opslag..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Zoeken naar vCard-gegevens op SD-kaart..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Kan opslag niet scannen"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Kan SD-kaart niet scannen"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"De opslag kan niet worden gescand. (Reden: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"De SD-kaart kan niet worden gescand. (Reden: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O-fout"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"De vCard-editor is niet correct gestart."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"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" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> van <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacten"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Importeren van vCard annuleren"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Import van <xliff:g id="FILENAME">%s</xliff:g> annuleren?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Exporteren van vCard annuleren"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Export van <xliff:g id="FILENAME">%s</xliff:g> annuleren?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Kan vCard-import/export niet annuleren"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Namen van uw contacten"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Zichtbare contacten"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importeren/exporteren"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Contacten importeren/exporteren"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Contacten importeren"</string>
     <string name="menu_share" msgid="943789700636542260">"Delen"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Alle contacten"</string>
     <string name="share_via" msgid="563121028023030093">"Contact delen via"</string>
     <string name="share_error" msgid="948429331673358107">"Dit contact kan niet worden gedeeld."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Naam"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"samengevoegd uit <xliff:g id="COUNT">%0$d</xliff:g> bronnen"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Overig"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Contacten samenvoegen"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Wilt u het huidige contact samenvoegen met het geselecteerde contact?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Geselecteerde contacten bewerken"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Wilt u overschakelen naar het bewerken van het geselecteerde contact? Gegevens die u tot nu toe heeft ingevoerd, worden gekopieerd."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopiëren naar mijn contacten"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Toevoegen aan Mijn contacten"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Laden..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Een nieuw contact maken"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Aanmelden bij een account"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Contacten importeren uit een bestand"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Contacten importeren"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Nieuwe groep maken"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Nieuwe groep maken]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Groep verwijderen"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 groep"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> groepen"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Standaard instellen"</string>
     <string name="clear_default" msgid="7193185801596678067">"Standaardwaarden wissen"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Tekst gekopieerd"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Wijzigingen annuleren"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Uw wijzigingen annuleren?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Mijn profiel instellen"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Lokaal opslaan"</string>
     <string name="add_account" msgid="8201790677994503186">"Account toevoegen"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Nieuw account toevoegen"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Oproep niet verzonden"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Voicemailnummer niet beschikbaar"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Oproep niet uitgevoerd"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Voor het instellen van voicemail, gaat u naar \'Menu\' &gt; \'Instellingen\'."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Als u uw voicemail wilt bellen, moet u eerst de Vliegmodus uitschakelen."</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index de6c6bd..4d6da26 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Szukaj"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nowy kontakt"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Wyświetl kontakt"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Zadzwoń do: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Zadzwoń: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Dodaj do ulubionych"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Usuń z ulubionych"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edytuj"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Sugerowane kontakty"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Wszystkie kontakty"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontakty zostały połączone"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Usunąć kontakt?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Ustaw dzwonek"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Łącz na pocztę głosową"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Nie możesz usunąć kontaktów z kont tylko do odczytu, ale możesz ukryć je na swoich listach kontaktów."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Częste kontakty"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Częste połączenia"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Dodaj kontakt"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Czy dodać adres „<xliff:g id="EMAIL">%s</xliff:g>” do kontaktów?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"jeden"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dwa"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Wyświetl kontakt"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Nośnik nie jest dostępny"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Brak karty SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nie znaleziono nośnika."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nie znaleziono karty SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Wyszukiwanie danych vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importuj z karty SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importuj z nośnika"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksportuj na nośnik"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importuj wszystkie pliki vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Wyszukiwanie danych vCard na nośniku…"</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Wyszukiwanie danych vCard na karcie SD…"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Nie można przeskanować pamięci"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Nie można przeskanować karty SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Nie można przejrzeć nośnika. (Przyczyna: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Nie można przejrzeć karty SD. (Przyczyna: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Błąd wejścia/wyjścia"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Obiekt tworzenia danych vCard nie został uruchomiony poprawnie."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"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" msgid="560522409559101193">"Kontakt <xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Anulowanie importowania pliku vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Anulować import: <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Anulowanie eksportowania pliku vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Anulować eksport: <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Nie można anulować importu/eksportu vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Imiona i nazwiska oraz nazwy w Twoich kontaktach"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakty do wyświetlenia"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importuj/eksportuj"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importuj/eksportuj kontakty"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importuj kontakty"</string>
     <string name="menu_share" msgid="943789700636542260">"Udostępnij"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Wszystkie kontakty"</string>
     <string name="share_via" msgid="563121028023030093">"Udostępnij kontakt przez"</string>
     <string name="share_error" msgid="948429331673358107">"Tego kontaktu nie można udostępniać."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nazwa"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"scalono z <xliff:g id="COUNT">%0$d</xliff:g> źródeł"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Inne"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Połącz kontakty"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Czy połączyć bieżący kontakt z wybranym?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Edytuj wybrane kontakty"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Czy chcesz edytować wybrany kontakt? Wprowadzone dotąd informacje zostaną skopiowane."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopiuj do moich kontaktów"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Dodaj do moich kontaktów"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Wczytywanie…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Utwórz nowy kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Zaloguj się na konto"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Zaimportuj kontakty z pliku"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importuj kontakty"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Utwórz nową grupę"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Utwórz nową grupę]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Usuń grupę"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grupa"</item>
     <item quantity="other" msgid="1276758425904917367">"Grupy: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Ustaw jako wartość domyślną"</string>
     <string name="clear_default" msgid="7193185801596678067">"Wyczyść wartość domyślną"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Tekst skopiowany"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Odrzuć zmiany"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Odrzucić zmiany?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Konfiguruj profil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Przechowuj lokalnie"</string>
     <string name="add_account" msgid="8201790677994503186">"Dodaj konto"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Dodaj nowe konto"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Połączenie nie zostało zrealizowane"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Numer poczty głosowej niedostępny"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Połączenie nie zostało zrealizowane"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Aby skonfigurować pocztę głosową, przejdź do Menu &gt; Ustawienia."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Aby połączyć się z pocztą głosową, najpierw wyłącz tryb samolotowy."</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 72be05f..87d3a7e 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Pesquisar"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Novo contacto"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Visualizar contacto"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Ligar a <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Telefonar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Adicionar aos favoritos"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Remover dos favoritos"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contactos sugeridos"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Todos os contactos"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contactos associados"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Eliminar contacto?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Definir toque"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Todas chm. para corr. de voz"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Não pode eliminar contactos de contas só de leitura, mas pode ocultá-los nas suas listas de contactos."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> seg"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contactos frequentes"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Números de marcação frequente"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Adicionar contacto"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Adicionar \"<xliff:g id="EMAIL">%s</xliff:g>\" aos contactos?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"um"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dois"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"menos"</string>
     <string name="description_plus_button" msgid="515164827856229880">"mais"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Ver contacto"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Armazen. indisponível"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Nenhum cartão SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nenhum armazen. encontrado."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Não foi encontrado nenhum cartão SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"A procurar vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importar do cartão SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importar do armazenamento"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportar para o armazen."</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar todos os ficheiros VCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"A pesquisar dados de vCard no armazenamento..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"A pesquisar dados de vCard no cartão SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Não foi possível analisar o armazenamento"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Não foi possível analisar o cartão SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Não foi possível analisar o armazenamento. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Não foi possível analisar o cartão SD. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Erro de E/S"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"O compositor vCard não iniciou corretamente."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Não foi possível abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"A cancelar importação do vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Cancelar a importação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"A cancelar exportação do vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Cancelar a exportação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Imposs. cancel. import./export. do vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Nomes dos contactos"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactos a apresentar"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importar/exportar"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importar/export. contactos"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importar contactos"</string>
     <string name="menu_share" msgid="943789700636542260">"Partilhar"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Todos os contactos"</string>
     <string name="share_via" msgid="563121028023030093">"Partilhar contacto através de"</string>
     <string name="share_error" msgid="948429331673358107">"Não é possível partilhar este contacto."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nome"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"intercalado a partir de <xliff:g id="COUNT">%0$d</xliff:g> origens"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Outro"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Associar contactos"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Associar o contacto actual ao contacto selecionado?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Editar contactos seleccionados"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Alternar para edição do contacto selecionado? A informação introduzida até agora vai ser copiada."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Copiar para Os Meus Contactos"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Adicionar aos Meus Contactos"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"A carregar…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Criar novo contacto"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Iniciar sessão numa conta"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importar contactos de um ficheiro"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importar contactos"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Criar novo grupo"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Criar novo grupo]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Eliminar grupo"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grupo"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grupos"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Definir a predefinição"</string>
     <string name="clear_default" msgid="7193185801596678067">"Limpar predefinição"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Texto copiado"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Rejeitar alterações"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Rejeitar as suas alterações?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149"></string>
     <string name="profile_display_name" msgid="4127389543625918771">"Configurar o meu perfil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Manter localmente"</string>
     <string name="add_account" msgid="8201790677994503186">"Adicionar conta"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Adicionar nova conta"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Chamada não efetuada"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Número do correio de voz indisponível"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Chamada não efetuada"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar o correio de voz, aceda a Menu &gt; Definições."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para efetuar uma chamada para o correio de voz, desative primeiro o Modo de avião."</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 4457755..3b6fa98 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Pesquisa"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Novo contato"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Ver contato"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Chamar <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Adicionar aos favoritos"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Remover dos favoritos"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contatos sugeridos"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Todos os contatos"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contatos unificados"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Excluir contato?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Definir toque"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Todas as cham. p/ correio voz"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Não é possível excluir os contatos das contas somente leitura, mas você pode ocultá-los nas suas listas de contatos."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Chamados frequentemente"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Frequentemente chamado"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Adicionar contato"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Adicionar \"<xliff:g id="EMAIL">%s</xliff:g>\" aos contatos?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"um"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dois"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"menos"</string>
     <string name="description_plus_button" msgid="515164827856229880">"mais"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Visualizar contato"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Armazenamento não disponível"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Nenhum cartão SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nenhum armazenamento foi encontrado."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nenhum cartão SD foi encontrado."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Pesquisando vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importar do cartão SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importar do armazenamento"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportar para o armazenamento"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar todos os arquivos do vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Procurando dados do vCard no armazenamento..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Procurando dados do vCard no cartão SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Não foi possível verificar o armazenamento"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Não foi possível verificar o cartão SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Não foi possível verificar o armazenamento. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Não foi possível ler o cartão SD. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Erro E/S"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"O criador do vCard não iniciou corretamente."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Não foi possível abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contatos"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Cancelando a importação do vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Cancelar importação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Cancelando a exportação do vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Cancelar exportação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Não foi poss. canc. imp./export. vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Nomes dos seus contatos"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Contatos para exibição"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importar/exportar"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importar/Exportar contatos"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importar contatos"</string>
     <string name="menu_share" msgid="943789700636542260">"Compartilhar"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Todos os contatos"</string>
     <string name="share_via" msgid="563121028023030093">"Compartilhar contato via"</string>
     <string name="share_error" msgid="948429331673358107">"Este contato não pode ser compartilhado."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nome"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"mesclado a partir de <xliff:g id="COUNT">%0$d</xliff:g> origens"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Outros"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Unir contatos"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Unir o contato atual ao contato selecionado?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Editar contatos selecionados"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Alternar para a edição do contato selecionado? As informações inseridas até agora serão copiadas."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Copiar para Meus contatos"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Adicionar a Meus contatos"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Carregando…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Criar um novo contato"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Faça login em uma conta"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importar contatos de um arquivo"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importar contatos"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Criar um novo grupo"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Criar um novo grupo]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Excluir grupo"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"Um grupo"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grupos"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Definir padrão"</string>
     <string name="clear_default" msgid="7193185801596678067">"Limpar padrão"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Texto copiado"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Descartar alterações"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Descartar as alterações?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g> "</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Configurar meu perfil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Manter localmente"</string>
     <string name="add_account" msgid="8201790677994503186">"Adicionar conta"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Adicionar nova conta"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Chamada não realizada"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Número de correio de voz indisponível"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Chamada não realizada"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar o correio de voz, vá para Menu &gt; Configurações."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para chamar o correio de voz, primeiro desative o modo avião."</string>
 </resources>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index c68d667..c0c7f27 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -47,7 +47,8 @@
     <string name="menu_search" msgid="9147752853603483719">"Tschertgar"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nov contact"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Mussar il contact"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Telefonar a(d) <xliff:g id="NAME">%s</xliff:g>"</string>
+    <!-- no translation found for menu_callNumber (997146291983360266) -->
+    <skip />
     <string name="menu_addStar" msgid="2908478235715404876">"Agiuntar als favurits"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Allontanar dals favurits"</string>
     <!-- no translation found for menu_editContact (9042415603857662633) -->
@@ -77,8 +78,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contacts proponids"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Tut ils contacts"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contacts unids"</string>
-    <!-- no translation found for deleteConfirmation_title (1418215926447642260) -->
-    <skip />
     <!-- no translation found for menu_set_ring_tone (8728345772068064946) -->
     <skip />
     <!-- no translation found for menu_redirect_calls_to_vm (4181789196416396656) -->
@@ -245,7 +244,6 @@
     <skip />
     <!-- no translation found for favoritesFrequentCalled (6128306889600696124) -->
     <skip />
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Agiuntar in contact"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Agiuntar «<xliff:g id="EMAIL">%s</xliff:g>» als contacts?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"in"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dus"</string>
@@ -271,14 +269,10 @@
     <!-- no translation found for description_view_contact_detail (9133251213656414807) -->
     <!-- no translation found for description_view_contact_detail (2795575601596468581) -->
     <skip />
-    <!-- no translation found for no_sdcard_title (8543619259870877473) -->
-    <skip />
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Nagina carta SD"</string>
     <!-- no translation found for no_sdcard_message (5242558018442357189) -->
     <skip />
     <!-- no translation found for no_sdcard_message (3357810406684913482) -->
     <skip />
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Tschertgar datas vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importar da la carta SIM"</string>
     <!-- no translation found for import_from_sdcard (8668347930577565175) -->
     <skip />
@@ -292,10 +286,6 @@
     <skip />
     <!-- no translation found for searching_vcard_message (3962269894118092049) -->
     <skip />
-    <!-- no translation found for scanning_sdcard_failed_title (4944932641334764942) -->
-    <skip />
-    <!-- no translation found for scanning_sdcard_failed_title (6664940444476572612) -->
-    <skip />
     <!-- no translation found for scanning_sdcard_failed_message (7221682312959229201) -->
     <skip />
     <!-- no translation found for scanning_sdcard_failed_message (189023067829510792) -->
@@ -387,12 +377,8 @@
     <!-- no translation found for fail_reason_could_not_open_file (2067725459821997463) -->
     <skip />
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> da <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
-    <!-- no translation found for cancel_import_confirmation_title (5578683596010294836) -->
-    <skip />
     <!-- no translation found for cancel_import_confirmation_message (3929951040347726757) -->
     <skip />
-    <!-- no translation found for cancel_export_confirmation_title (6516467140276768528) -->
-    <skip />
     <!-- no translation found for cancel_export_confirmation_message (1995462401949262638) -->
     <skip />
     <!-- no translation found for cancel_vcard_import_or_export_failed (6139900383366166706) -->
@@ -416,9 +402,9 @@
     <skip />
     <!-- no translation found for dialog_import_export (4360648034889921624) -->
     <skip />
-    <string name="menu_share" msgid="943789700636542260">"Cundivider"</string>
-    <!-- no translation found for menu_all_contacts (5101735431586050711) -->
+    <!-- no translation found for dialog_import (2431698729761448759) -->
     <skip />
+    <string name="menu_share" msgid="943789700636542260">"Cundivider"</string>
     <string name="share_via" msgid="563121028023030093">"Cundivider in contact sur"</string>
     <!-- no translation found for share_error (948429331673358107) -->
     <skip />
@@ -602,12 +588,8 @@
     <item quantity="other" msgid="425683718017380845">"1 contact fusiunà ord <xliff:g id="COUNT">%0$d</xliff:g> funtaunas"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Auter"</string>
-    <!-- no translation found for aggregation_suggestion_join_dialog_title (5276699501316246253) -->
-    <skip />
     <!-- no translation found for aggregation_suggestion_join_dialog_message (3842757977671434836) -->
     <skip />
-    <!-- no translation found for aggregation_suggestion_edit_dialog_title (1064042382692091314) -->
-    <skip />
     <!-- no translation found for aggregation_suggestion_edit_dialog_message (6549585283910518095) -->
     <skip />
     <!-- no translation found for menu_copyContact (1573960845106822639) -->
@@ -671,14 +653,12 @@
     <skip />
     <!-- no translation found for contacts_unavailable_add_account (7911101713860139754) -->
     <skip />
-    <!-- no translation found for contacts_unavailable_import_contacts (4456440183590517471) -->
+    <!-- no translation found for contacts_unavailable_import_contacts (4957393255392437529) -->
     <skip />
     <!-- no translation found for create_group_dialog_title (6874527142828424475) -->
     <skip />
     <!-- no translation found for create_group_item_label (5218022006186243310) -->
     <skip />
-    <!-- no translation found for delete_group_dialog_title (7368429698398624427) -->
-    <skip />
     <!-- no translation found for num_groups_in_account:one (2944819210288517794) -->
     <!-- no translation found for num_groups_in_account:other (1276758425904917367) -->
     <!-- no translation found for delete_group_dialog_message (7586856514337560529) -->
@@ -697,8 +677,6 @@
     <skip />
     <!-- no translation found for toast_text_copied (5143776250008541719) -->
     <skip />
-    <!-- no translation found for cancel_confirmation_dialog_title (3950463632415908534) -->
-    <skip />
     <!-- no translation found for cancel_confirmation_dialog_message (5885724679874403115) -->
     <skip />
     <!-- no translation found for call_type_and_date (1766269584078149149) -->
@@ -820,11 +798,11 @@
     <skip />
     <!-- no translation found for add_new_account (5748627740680940264) -->
     <skip />
-    <!-- no translation found for dialog_phone_call_prohibited_title (2111395432187079579) -->
-    <!-- no translation found for dialog_phone_call_prohibited_title (4313552620858880999) -->
-    <skip />
-    <!-- no translation found for dialog_voicemail_not_ready_title (7258109862329777060) -->
+    <!-- no translation found for dialog_phone_call_prohibited_message (6554711866586660441) -->
+    <!-- no translation found for dialog_phone_call_prohibited_message (4313552620858880999) -->
     <skip />
     <!-- no translation found for dialog_voicemail_not_ready_message (4384716252789515378) -->
     <skip />
+    <!-- no translation found for dialog_voicemail_airplane_mode_message (530922773669546093) -->
+    <skip />
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 0133be3..aea4083 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Căutaţi"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Persoană nouă în agendă"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Vizualizaţi persoana din agendă"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Apelaţi <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Apelaţi <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Adăugaţi la lista de favorite"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Eliminaţi din lista de favorite"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editaţi"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Persoane din agendă sugerate"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Toate persoanele din agendă"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Persoanele din agendă au fost unite"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Ştergeţi contactul?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Setaţi ton apel"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Toate apel. către mesag. voc."</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Nu puteţi şterge persoane din agendă, din conturi cu permisiuni doar de citire, însă puteţi să le ascundeţi în lista dvs. de persoane din agendă."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Frecvent contactate"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Frecvent apelate"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Adăugaţi o persoană în agendă"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Adăugaţi „<xliff:g id="EMAIL">%s</xliff:g>” la persoanele din agendă?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"unu"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"doi"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Afişaţi persoana din agendă"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Stocare indisponibilă"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Niciun card SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nu s-a găsit o stocare."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nu s-a găsit un card SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Se caută date în format vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importaţi de pe cardul SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importaţi din stocare"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportaţi în stocare"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importaţi toate fişierele vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Se caută date vCard în spaţiul de stocare..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Se caută date vCard pe cardul SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Nu s-a putut scana stocarea"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Nu s-a putut scana cardul SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Stocarea nu s-a putut scana. (Motivul: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Cardul SD nu a putut fi scanat. (Motivul: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Eroare I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Compozitorul vCard nu a pornit în mod corespunzător."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Nu s-a putut deschide fişierul „<xliff:g id="FILE_NAME">%s</xliff:g>”: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> din <xliff:g id="TOTAL_NUMBER">%s</xliff:g> (de) persoane din agendă"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Se anulează importul vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Anulaţi importul fişierului <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Se anulează exportul vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Anulaţi exportul fişierului <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Anulare import/export vCard nereuşită"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Numele persoanelor din agenda dvs."</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Persoane de contact de afişat"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importaţi/exportaţi"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Import/export contacte"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importaţi Agenda"</string>
     <string name="menu_share" msgid="943789700636542260">"Distribuiţi"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Toată agenda"</string>
     <string name="share_via" msgid="563121028023030093">"Distribuiţi persoana din agendă prin"</string>
     <string name="share_error" msgid="948429331673358107">"Această persoană de contact nu poate fi distribuită."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Nume"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"au fost îmbinate din <xliff:g id="COUNT">%0$d</xliff:g> surse"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Altul"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Asociaţi intrările din Agendă"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Asociaţi intrarea curentă din agendă cu intrarea selectată?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Editaţi persoanele din agendă selectate"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Comutaţi la funcţia de editare a persoanei din agendă selectate? Informaţiile introduse până acum vor fi copiate."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Copiaţi în Agendă"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Adăugaţi în Agendă"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Se încarcă..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Creaţi o intrare nouă în Agendă"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Conectaţi-vă la un cont"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importaţi agenda din fişier"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importaţi Agenda"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Creaţi un grup nou"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Creaţi un grup nou]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Ştergeţi grupul"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grup"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> (de) grupuri"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Setaţi ca prestabilit"</string>
     <string name="clear_default" msgid="7193185801596678067">"Ştergeţi datele prestabilite"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Text copiat"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Renunţaţi la modificări"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Renunţaţi la modificări?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Configuraţi profilul"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Păstraţi local"</string>
     <string name="add_account" msgid="8201790677994503186">"Adăugaţi un cont"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Adăugaţi un cont nou"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Apelul nu a fost trimis"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Număr de mesagerie vocală indisponibil"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Apelul nu a fost trimis"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Pentru a configura mesageria vocală, accesaţi Meniu &gt; Setări."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Pentru a apela mesageria vocală, mai întâi dezactivaţi modul Avion."</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 82e5d07..f4edaaf 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Поиск"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Новый контакт"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Просмотреть контакт"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Вызов: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Позвонить: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Добавить в избранное"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Удалить из избранных"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Изменить"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Предлагаемые контакты"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Все контакты"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Контакты объединены"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Удаление контакта"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Задать рингтон"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Только голос. почта"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Невозможно удалить контакты из аккаунта, доступного только для чтения, однако их можно скрыть в списках контактов."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g>:<xliff:g id="SECONDS">%s</xliff:g>"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Часто набираемые"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Часто вызываемые"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Добавить контакт"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Добавить в контакты <xliff:g id="EMAIL">%s</xliff:g>?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"один"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"два"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"минус"</string>
     <string name="description_plus_button" msgid="515164827856229880">"плюс"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Данные контакта"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Накопитель недоступен"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Нет SD-карты"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Хранилище не найдено."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD-карта не обнаружена."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Поиск vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Импортировать с SIM-карты"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Импорт из накопителя"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Экспорт на накопитель"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Импорт всех файлов VCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Поиск данных vCard на накопителе..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Поиск данных vCard на SD-карте..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Накопитель не просканирован"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SD-карта не просканирована"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Не удалось просканировать накопитель. Причина: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Не удалось просканировать SD-карту. Причина: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Ошибка ввода-вывода"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Сбой при запуске редактора vCard."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Не удалось открыть файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\". Причина: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"Контакт <xliff:g id="CURRENT_NUMBER">%s</xliff:g> из <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Отмена импорта vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Отменить импорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\"?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Отмена экспорта vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Отменить экспорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\"?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Не удалось отменить импорт/экспорт vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Имена контактов"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Фильтр контактов"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Импорт/экспорт"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Импорт/экспорт контактов"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Импорт контактов"</string>
     <string name="menu_share" msgid="943789700636542260">"Отправить"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Все контакты"</string>
     <string name="share_via" msgid="563121028023030093">"Способ отправки"</string>
     <string name="share_error" msgid="948429331673358107">"Не удалось передать данные."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Имя"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"объединено из нескольких источников (<xliff:g id="COUNT">%0$d</xliff:g>)"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Другое"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Объединить контакты"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Объединить текущий контакт с выбранным контактом?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Редактировать выбранные контакты"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Переключиться на редактирование выбранного контакта? Введенная информация будет скопирована."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Копировать в \"Мои контакты\""</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Добавить в группу \"Мои контакты\""</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Загрузка..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Создать новый контакт"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Войдите в аккаунт"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Импорт контактов из файла"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Импортировать контакты"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Создание новой группы"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Создать новую группу]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Удаление группы"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 группа"</item>
     <item quantity="other" msgid="1276758425904917367">"Групп: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Установить по умолчанию"</string>
     <string name="clear_default" msgid="7193185801596678067">"Удалить настройки по умолчанию"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Текст скопирован"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Отмена изменений"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Отменить изменения?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g>, <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Настроить профиль"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Сохранить локально"</string>
     <string name="add_account" msgid="8201790677994503186">"Добавить аккаунт"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Добавить аккаунт"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Вызов не осуществляется"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Номер недоступен"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Вызов невозможен"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Чтобы настроить голосовую почту, выберите \"Меню &gt; Настройки\"."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Сначала отключите режим полета."</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 831be68..360868a 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Hľadať"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nový kontakt"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Zobraziť kontakt"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Zavolať kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Volať <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Pridať medzi obľúbené položky"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Odstrániť z obľúbených"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Upraviť"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Navrhnuté kontakty"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Všetky kontakty"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontakty boli spojené"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Odstrániť kontakt?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Nastaviť zvonenie"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Všetky hovory do hl. schránky"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Z účtov, ktoré sú iba na čítanie, nie je možné odstrániť kontakty. Tieto kontakty však môžete v zozname kontaktov skryť."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Najčastejšie používané kontakty"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Najčastejšie volané kontakty"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Pridať kontakt"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Chcete pridať „<xliff:g id="EMAIL">%s</xliff:g>“ medzi kontakty?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"jedna"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dva"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"mínus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Zobraziť kontakt"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Uklad. pr. je nedostupný"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Žiadna karta SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Ukladací priestor sa nenašiel."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nenašla sa žiadna karta SD."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Vyhľadávanie karty vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importovať z karty SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Import z ukl. priestoru"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Export do uklad. priest."</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importovať všetky súbory vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Prebieha hľadanie údajov vizitky vCard v ukladacom priestore..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Prebieha hľadanie údajov vizitky vCard na karte SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Nepodarilo sa prehľadať ukladací priestor"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Nepodarilo sa prehľadať kartu SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Ukladací priestor sa nepodarilo prehľadať. (Dôvod: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kartu SD sa nepodarilo prehľadať. (Dôvod: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Chyba I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Nástroj na tvorbu vizitiek vCard sa nespustil správne."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Súbor „<xliff:g id="FILE_NAME">%s</xliff:g>“ sa nepodarilo otvoriť: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktov"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Prebieha rušenie importu vizitky vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Zrušiť importovanie súboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Prebieha rušenie exportu vizitky vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Zrušiť exportovanie súboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Importovanie/exportovanie karty vizitky vCard zlyhalo"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Mená vašich kontaktov"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakty na zobrazenie"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Import a export"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importovať alebo exportovať kontakty"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Import kontaktov"</string>
     <string name="menu_share" msgid="943789700636542260">"Zdieľať"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Všetky kontakty"</string>
     <string name="share_via" msgid="563121028023030093">"Zdieľať kontakt pomocou"</string>
     <string name="share_error" msgid="948429331673358107">"Tento kontakt nie je možné zdieľať."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Meno"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"zlúčené z <xliff:g id="COUNT">%0$d</xliff:g> zdrojov"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Iné"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Spojiť kontakty"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Spojiť aktuálny kontakt s vybraným kontaktom?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Upraviť vybrané kontakty"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Prepnúť do režimu úpravy vybraného kontaktu? Doposiaľ zadané informácie budú skopírované."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Skopírovať do priečinka Moje kontakty"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Pridať medzi moje kontakty"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Načítava sa…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Vytvoriť nový kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Prihlásiť sa do účtu"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importovať kontakty zo súboru"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importovať kontakty"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Vytvoriť novú skupinu"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Vytvoriť novú skupinu]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Odstrániť skupinu"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"Počet skupín: 1"</item>
     <item quantity="other" msgid="1276758425904917367">"Počet skupín: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Nastaviť ako predvolené"</string>
     <string name="clear_default" msgid="7193185801596678067">"Vymazať predvolené nastavenia"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Text bol skopírovaný"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Zahodiť zmeny"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Zahodiť zmeny?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Nastaviť môj profil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Zachovať miestne"</string>
     <string name="add_account" msgid="8201790677994503186">"Pridať účet"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Pridať nový účet"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Hovor nebol spojený"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Číslo hlasovej schránky je nedostupné"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Hovor nebol spojený"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ak chcete nastaviť hlasovú schránku, prejdite na položku Menu &gt; Nastavenia."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Ak chcete volať hlasovú schránku, najprv vypnite režim V lietadle."</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 7c988e3..8251bbd 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Iskanje"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Nov stik"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Ogled stika"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Pokliči <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Dodaj k priljubljenim"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Odstrani iz priljubljenih"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Uredi"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Predlagani stiki"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Vsi stiki"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Stiki pridruženi"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Želite izbris. stik?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Nastavi zvonj."</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Vsi klici na odzivnik"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Iz računov samo za branje stikov ni mogoče izbrisati, lahko pa jih skrijete na seznamih stikov."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min, <xliff:g id="SECONDS">%s</xliff:g> s"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Pogosti stiki"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Pogosto klicani"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Dodaj stik"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Želite »<xliff:g id="EMAIL">%s</xliff:g>« dodati stikom?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"ena"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dva"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Ogled stika"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Pomnilnik ni na voljo"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Ni kartice SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Shrambe ni bilo mogoče najti."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Kartice SD ni mogoče najti"</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Iskanje vizitke vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Uvozi s kartice SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Uvoz iz pomnilnika"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Izvoz v pomnilnik"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Uvozi vse datoteke vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Iskanje podatkov vCard v pomnilniku ..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Iskanje podatkov vCard na kartici SD ..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Pomnilnika ni bilo mogoče pregledati"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Kartice SD ni bilo mogoče pregledati"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Shrambe ni bilo mogoče pregledati. (Razlog: »<xliff:g id="FAIL_REASON">%s</xliff:g>«)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kartice SD ni bilo mogoče pregledati. (Razlog: »<xliff:g id="FAIL_REASON">%s</xliff:g>«)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Napaka I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Urejevalnik za vCard se ni pravilno zagnal."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Datoteke »<xliff:g id="FILE_NAME">%s</xliff:g>« ni bilo mogoče odpreti: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> od <xliff:g id="TOTAL_NUMBER">%s</xliff:g> stikov"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Preklic uvoza kart. vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Želite preklicati izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Preklic izvoza kart. vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Želite preklicati izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Uvoza/izvoza vCard ni mogoče preklicati"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Imena stikov"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Stiki, ki naj bodo prikazani"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Uvoz/izvoz"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Uvoz/izvoz stikov"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Uvoz stikov"</string>
     <string name="menu_share" msgid="943789700636542260">"Skupna raba"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Vsi stiki"</string>
     <string name="share_via" msgid="563121028023030093">"Deli stik z drugimi prek"</string>
     <string name="share_error" msgid="948429331673358107">"Tega stika ni mogoče dati v skupno rabo."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Ime"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"spojeno iz <xliff:g id="COUNT">%0$d</xliff:g> virov"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Drugo"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Združevanje stikov"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Želite združiti stik z izbranim stikom?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Uredi izbrane stike"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Želite urejati izbrani stik? Podatki, ki ste jih doslej vnesli, bodo kopirani."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopiraj v moje stike"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Dodaj v skupino »Moji stiki«"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Nalaganje …"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Ustvarjanje novega stika"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Prijava v račun"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Uvoz stikov iz datoteke"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Uvozi stike"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Ustvarjanje nove skupine"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Ustvarjanje nove skupine]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Izbris skupine"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 skupina"</item>
     <item quantity="other" msgid="1276758425904917367">"Št. skupin: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Nastavi za privzeto"</string>
     <string name="clear_default" msgid="7193185801596678067">"Počisti privzeto"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Besedilo kopirano"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Zavrzi spremembe"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Ali želite zavreči spremembe?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Nastavi moj profil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Ohrani lokalno"</string>
     <string name="add_account" msgid="8201790677994503186">"Dodaj račun"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Dodaj nov račun"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Klic ni uspel"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Številka odzivnika ni na voljo"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Klic ni uspel"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Če želite nastaviti odzivnik, odprite Meni &gt; Nastavitve."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Če želite poklicati odzivnik, najprej izklopite način za letalo."</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5b85e52..a8bdd39 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Претрага"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Нови контакт"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Прикажи контакт"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Позови <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Позови <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Додај у омиљене контакте"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Уклони из омиљених контаката"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Измени"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Предложени контакти"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Сви контакти"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Придружени контакти"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Желите ли да избришете контакт?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Подеси мелодију звона"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Сви позиви у говорну пошту"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Контакте у оквиру налога који су само за читање не можете да избришете, али можете да их сакријете на листи контаката."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Често контактирани"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Често позивани"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Додај контакт"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Желите ли да додате адресу е-поште „<xliff:g id="EMAIL">%s</xliff:g>“ у контакте?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"један"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"два"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"минус"</string>
     <string name="description_plus_button" msgid="515164827856229880">"плус"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Прикажи контакт"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Меморија је недоступна"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Нема SD картице"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Није пронађена меморија."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Није пронађена ниједна SD картица."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Претрага дигиталне визиткарте"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Увези са SIM картице"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Увези из меморије"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Извези у меморију"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Увези све датотеке дигиталних визиткарата"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Тражење података о vCard датотеци у меморији..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"У току је претрага података о vCard датотекама на SD картици..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Није било могуће скенирати складиште"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Није било могуће скенирати SD картицу"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Није било могуће скенирати меморију. (Разлог: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Није било могуће скенирати SD картицу. (Разлог: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O грешка"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Програм за израду vCard датотека се није исправно покренуо."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Није било могуће отворити датотеку „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> од <xliff:g id="TOTAL_NUMBER">%s</xliff:g> контак(а)та"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Отказивање увоза датотеке"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Желите ли да откажете увоз датотеке <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Отказивање извоза vCard датотеке"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Желите ли да откажете извоз датотеке <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Није могуће отказати vCard увоз/извоз"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Имена контаката"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Контакти за приказ"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Увоз/извоз"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Увоз/извоз контаката"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Увоз контаката"</string>
     <string name="menu_share" msgid="943789700636542260">"Дели"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Сви контакти"</string>
     <string name="share_via" msgid="563121028023030093">"Дели контакт преко"</string>
     <string name="share_error" msgid="948429331673358107">"Овај контакт не може да се дели."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Име"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"обједињено од <xliff:g id="COUNT">%0$d</xliff:g> извора"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Други"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Придружи контакте"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Желите ли да тренутни контакт придружите изабраном контакту?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Измена изабраних контаката"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Желите ли да пребаците на уређивање изабраног контакта? Биће копиране информације које сте унели до сада."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Копирај у моје контакте"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Додај у Моје контакте"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Учитавање…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Направи нови контакт"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Пријавите се на налог"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Увези контакте из датотеке"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Увези контакте"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Прављење нове групе"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Направи нову групу]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Избриши групу"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 група"</item>
     <item quantity="other" msgid="1276758425904917367">"Група: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Постави на подразумевано"</string>
     <string name="clear_default" msgid="7193185801596678067">"Обриши подразумевану вредност"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Текст је копиран"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Одбацивање промена"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Желите ли да одбаците промене?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Подеси мој профил"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Задржи локално"</string>
     <string name="add_account" msgid="8201790677994503186">"Додај налог"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Додај нови налог"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Позив није послат"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Број говорне поште није доступан"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Позив није послат"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Да бисте подесили говорну пошту, идите у Мени &gt; Подешавања."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Да бисте позвали говорну пошту, прво искључите режим авионa."</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 09f3ead..275afea 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Sök"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Ny kontakt"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Visa kontakt"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Lägg till i Favoriter"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Ta bort från Favoriter"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Redigera"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Föreslagna kontakter"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Alla kontakter"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Deltagande kontakter"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Ta bort kontakt?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Ställ in ringsignal"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Alla samtal till röstbrevlådan"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Du kan inte ta bort kontakter från skrivskyddade konton, men du kan dölja dem i kontaktlistorna."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> minuter <xliff:g id="SECONDS">%s</xliff:g> sekunder"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Ofta kontaktade"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Ringer ofta"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Lägg till kontakt"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Vill du lägga till <xliff:g id="EMAIL">%s</xliff:g> i Kontakter?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"ett"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"två"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Visa kontakt"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Lagring otillgänglig"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Inget SD-kort"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Ingen lagringsenhet hittades."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Inget SD-kort hittades."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Söker efter vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Importera från SIM-kort"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importera från lagring"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportera till lagring"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importera alla vCard-filer"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Sökning efter vCard-data på lagringsenheten pågår ..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Söker efter vCard-data på SD-kort ..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Det gick inte att söka igenom lagringsenheten"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Det gick inte att söka igenom SD-kortet"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Det gick inte att skanna lagringsenheten. (Orsak: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Det gick inte att skanna SD-kortet. (Orsak: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O-fel"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCard-kompositören initierades inte korrekt."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Det gick inte att öppna <xliff:g id="FILE_NAME">%s</xliff:g>: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> av <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakter"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Avbryter vCard-import"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Vill du avbryta importen av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Avbryter vCard-export"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vill du avbryta exporten av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Det gick inte att avbryta importen/exporten av vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Dina kontakters namn"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakter som ska visas"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Importera/exportera"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Importera/exportera kontakter"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Importera kontakter"</string>
     <string name="menu_share" msgid="943789700636542260">"Dela"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Alla kontakter"</string>
     <string name="share_via" msgid="563121028023030093">"Dela kontakt via"</string>
     <string name="share_error" msgid="948429331673358107">"Den här kontakten kan inte delas."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Namn"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"kombinerade från <xliff:g id="COUNT">%0$d</xliff:g> källor"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Övrigt"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Kombinera kontakter"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Vill du kombinera kontakten med den markerade kontakten?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Redigera valda kontakter"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Vill du fortsätta att redigera den markerade kontakten? Information som du har angett hittills kommer att kopieras."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopiera till mina kontakter"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Lägg till i mina kontakter"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Läser in …"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Skapa en ny kontakt"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Logga in på ett konto"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Importera kontakter från en fil"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importera kontakter"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Skapa ny grupp"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Skapa ny grupp]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Radera grupp"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grupp"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grupper"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Ange standard"</string>
     <string name="clear_default" msgid="7193185801596678067">"Rensa standardinställningar"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Texten har kopierats"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Ignorera ändringar"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Vill du ta bort ändringarna?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Skapa min profil"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Spara lokalt"</string>
     <string name="add_account" msgid="8201790677994503186">"Lägg till ett konto"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Lägg till ett nytt konto"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Samtalet gick inte att koppla fram"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Röstbrevlådenumret är inte tillgängligt"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Samtalet gick inte att koppla fram"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Välj Meny &gt; Inställningar om du vill konfigurera röstbrevlådan."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Om du vill ringa röstbrevlådan måste du först inaktivera flygplansläget."</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 8a34f62..3493770 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Tafuta"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Anwani mpya"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Tazama anwani"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Piga simu <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Ongeza kwa vipendwa"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Ondoa kutoka kwa vipendwa vyako"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Hariri"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Anwani zilizopendekezwa"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Anwani zote"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Anwani zimeunganishwa"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Futa mwasiliani?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Weka mlio wa simu"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Simu zote kwa barua ya sauti"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Huwezi kufuta anwani kutoka kwa akaunti ya kusoma-tu, lakini unaweza kuzificha katika orodha zako za anwani."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"Dakika <xliff:g id="MINUTES">%s</xliff:g> sekunde <xliff:g id="SECONDS">%s</xliff:g>"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Unaowasiliana nao zaidi"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Zinazopigwa mara kwa mara"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Ongeza anwani"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Ongeza \"<xliff:g id="EMAIL">%s</xliff:g>\" kwa anwani?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"moja"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"mbili"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"kutoa"</string>
     <string name="description_plus_button" msgid="515164827856229880">"jumlisha"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Angalia anwani"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Hifadhi haipatikani"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Hakuna kadi ya SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Hakuna hifadhi iliyopatikana."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Hakuna kadi ya SD iliyopatikana."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Inatafuta vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Ingiza kutoka kwa SIM kadi"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Leta kutoka kwa hifadhi"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Hamisha kwa hifadhi"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Ingiza faili zote za vKadi"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Inatafuta data ya vCard katika hifadhi..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Inatafuta data ya vKadi kwenye kadi ya SD"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Haikuweza kusafisha hifadhi"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Haikuweza kusafisha kadi ya SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Hifadhi haiku tambazwa. (Sababu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kadi ya SD haikutambazwa.(Sababu: \" <xliff:g id="FAIL_REASON">%s</xliff:g> \")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Hitilafu ya I/O"</string>
@@ -275,9 +268,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Kitunzi cha vCard hakikuanza vizuri."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Haikuweza kufungua \"{<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> ya anwani <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Inaghairi uletaji vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Ghairi kuletwa kwa <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Inaghairi uhamishaji wa vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Ghairi kuhamishwa kwa <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Haikuweza kughairiwa kuleta/kuhamisha vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Majina ya anwani zako"</string>
@@ -293,8 +284,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Anwani za kuonyesha"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Leta/hamisha"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Leta/Hamisha wawasiliani"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Ingiza wasiliani"</string>
     <string name="menu_share" msgid="943789700636542260">"Shiriki"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Wahusika wote"</string>
     <string name="share_via" msgid="563121028023030093">"Shiriki anwani kupitia"</string>
     <string name="share_error" msgid="948429331673358107">"Mwasiliani huyu hawezi kushirikishwa."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Jina"</string>
@@ -443,9 +434,7 @@
     <item quantity="other" msgid="425683718017380845">"Zimeunganishwa kutoka kwa nyenzo <xliff:g id="COUNT">%0$d</xliff:g>"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Nyingineyo"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Unganisha anwani"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Unganisha anwani ya sasa na anwani iliyochaguliwa?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Hariri majina yaliyochaguliwa"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Badilisha kwa hariri anwani iliyochaguliwa? Maelezo uliyoyaingiza hadi sasa yatanakiliwa."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Nakili kwa Anwani Zangu"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Ongeza kwa Anwani Zangu"</string>
@@ -477,10 +466,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Inapakia…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Unda akaunti mpya"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Ingia katika akaunti"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Leta anwani kutoka kwa faili"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Ingiza wasiliani"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Unda kikundi kipya"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Unda kikundi kipya]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Futa kikundi"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"Kikundi 1"</item>
     <item quantity="other" msgid="1276758425904917367">"Vikundi <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -499,7 +487,6 @@
     <string name="set_default" msgid="4417505153468300351">"Weka chaguo-msingi"</string>
     <string name="clear_default" msgid="7193185801596678067">"Ondoa chaguo-msingi"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Maandishi yamenakiliwa"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Tupa mabadiliko"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Tupa mabadiliko yako?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"Kishika nafasi <xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Sanidi maelezo yangu mafupi"</string>
@@ -563,7 +550,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Weka karibu"</string>
     <string name="add_account" msgid="8201790677994503186">"Ongeza akaunti"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Ongeza akaunti mpya"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Simu haijatumwa."</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Nambari ya barua ya sauti haipatikani"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Simu haijatumwa"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ili kusanidi ujumbe wa sauti, nenda kwa Menyu &gt; Mipangilio."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Kupigia simu ujumbe wa sauti, kwanza lemaza hali ya ndege."</string>
 </resources>
diff --git a/res/values-sw580dp/dimens.xml b/res/values-sw580dp/dimens.xml
index 3d3cb17..264565f 100644
--- a/res/values-sw580dp/dimens.xml
+++ b/res/values-sw580dp/dimens.xml
@@ -38,7 +38,7 @@
     <dimen name="contact_browser_list_header_left_margin">@dimen/list_visible_scrollbar_padding</dimen>
     <dimen name="contact_browser_list_header_right_margin">24dip</dimen>
     <dimen name="list_visible_scrollbar_padding">48dip</dimen>
-    <dimen name="account_filter_header_top_padding">@dimen/contact_browser_list_top_margin</dimen>
+    <dimen name="list_header_extra_top_padding">@dimen/contact_browser_list_top_margin</dimen>
 
     <!-- Because the "join" screen has the vertical scroll bar on right,
       we cannot use @dimen/contact_browser_list_header_left_margin as is. -->
diff --git a/res/values-sw580dp/styles.xml b/res/values-sw580dp/styles.xml
index bf5b137..2326d5f 100644
--- a/res/values-sw580dp/styles.xml
+++ b/res/values-sw580dp/styles.xml
@@ -95,6 +95,8 @@
     <style name="JoinContactActivityTheme" parent="ContactPickerTheme" >
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">match_parent</item>
+        <!-- In the contact picker screen we're using adjustResize but we don't want it here. -->
+        <item name="android:windowSoftInputMode">adjustUnspecified</item>
     </style>
 
     <style name="ContactListFilterTheme" parent="@android:Theme.Holo.Light.Dialog">
@@ -113,7 +115,7 @@
 
     <style name="DirectoryHeader" parent="PeopleTheme">
         <item name="android:paddingTop">0dip</item>
-        <item name="android:paddingBottom">0dip</item>
+
         <item name="android:background">@android:color/transparent</item>
     </style>
 
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index bc46708..fc47008 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"ค้นหา"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"สร้างรายชื่อใหม่"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"ดูสมุดโทรศัพท์"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"โทรหา <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"โทร <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"เพิ่มในรายการโปรด"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"ลบจากรายการโปรด"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"แก้ไข"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"รายชื่อที่แนะนำ"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"รายชื่อในสมุดโทรศัพท์ทั้งหมด"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"รายชื่อที่รวมกัน"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"ลบรายชื่อหรือไม่"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"ตั้งเสียงเรียกเข้า"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"โอนทุกสายไปยังข้อความเสียง"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"คุณไม่สามารถลบรายชื่อติดต่อจากบัญชีแบบอ่านอย่างเดียวได้ แต่ซ่อนไว้ในรายการรายชื่อได้"</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> นาที <xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"ที่ติดต่อบ่อยครั้ง"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"มีการติดต่อบ่อย"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"เพิ่มรายชื่อในสมุดโทรศัพท์"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"เพิ่ม \"<xliff:g id="EMAIL">%s</xliff:g>\" ในสมุดโทรศัพท์หรือไม่"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"หนึ่ง"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"สอง"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"ดูรายชื่อติดต่อ"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"ไม่มีที่เก็บข้อมูล"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"ไม่มีการ์ด SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"ไม่พบที่จัดเก็บข้อมูล"</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"ไม่พบการ์ด SD"</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"กำลังค้นหา vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"นำเข้าจากซิมการ์ด"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"นำเข้าจากที่เก็บข้อมูล"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"ส่งออกไปยังที่เก็บข้อมูล"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"นำเข้าไฟล์ vCard ทั้งหมด"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"กำลังค้นหาข้อมูล vCard ในที่จัดเก็บข้อมูล..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"กำลังค้นหาข้อมูล vCard บนการ์ด SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"ไม่สามารถสแกนที่เก็บข้อมูล"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"ไม่สามารถสแกนการ์ด SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"ไม่สามารถสแกนที่จัดเก็บข้อมูล (สาเหตุ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"ไม่สามารถสแกนการ์ด SD (สาเหตุ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"ข้อผิดพลาด I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"โปรแกรมเขียนข้อความ vCard เริ่มการทำงานไม่ถูกต้อง"</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"ไม่สามารถเปิด \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"รายชื่อในสมุดโทรศัพท์ <xliff:g id="CURRENT_NUMBER">%s</xliff:g> จาก <xliff:g id="TOTAL_NUMBER">%s</xliff:g> รายการ"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"การยกเลิกการนำเข้า vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"ยกเลิกการนำเข้า <xliff:g id="FILENAME">%s</xliff:g> หรือไม่"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"การยกเลิกการส่งออก vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"ยกเลิกการส่งออก <xliff:g id="FILENAME">%s</xliff:g> หรือไม่"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"ไม่สามารถยกเลิกการนำเข้า/ส่งออก vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"ชื่อของรายชื่อในสมุดโทรศัพท์ของคุณ"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"รายชื่อติดต่อที่จะแสดง"</string>
     <string name="menu_import_export" msgid="26217871113229507">"นำเข้า/ส่งออก"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"นำเข้า/ส่งออกผู้ติดต่อ"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"นำเข้าสมุดโทรศัพท์"</string>
     <string name="menu_share" msgid="943789700636542260">"ใช้ร่วมกัน"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"รายชื่อทั้งหมด"</string>
     <string name="share_via" msgid="563121028023030093">"ใช้สมุดโทรศัพท์ร่วมกันทาง"</string>
     <string name="share_error" msgid="948429331673358107">"ไม่สามารถแบ่งปันรายชื่อติดต่อนี้ได้"</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"ชื่อ"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"รวมจากแหล่งที่มา <xliff:g id="COUNT">%0$d</xliff:g> แหล่ง"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"อื่นๆ"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"รวมรายชื่อติดต่อ"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"รวมรายชื่อติดต่อปัจจุบันกับรายชื่อติดต่อที่เลือกหรือไม่"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"แก้ไขรายชื่อติดต่อที่เลือก"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"เปลี่ยนไปแก้ไขรายชื่อติดต่อที่เลือกหรือไม่ ข้อมูลที่คุณป้อนไว้จนถึงขณะนี้จะถูกคัดลอก"</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"คัดลอกไปยังสมุดโทรศัพท์ของฉัน"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"เพิ่มในสมุดโทรศัพท์ของฉัน"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"กำลังโหลด..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"สร้างที่อยู่ติดต่อใหม่"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ลงชื่อเข้าใช้บัญชี"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"นำเข้าที่อยู่ติดต่อจากไฟล์"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"นำเข้าสมุดโทรศัพท์"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"สร้างกลุ่มใหม่"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[สร้างกลุ่มใหม่]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"ลบกลุ่ม"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 กลุ่ม"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> กลุ่ม"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"ตั้งเป็นค่าเริ่มต้น"</string>
     <string name="clear_default" msgid="7193185801596678067">"ล้างจากค่าเริ่มต้น"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"คัดลอกข้อความแล้ว"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"ยกเลิกการเปลี่ยนแปลง"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"ยกเลิกการเปลี่ยนแปลงหรือไม่"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"ตั้งค่าโปรไฟล์ของฉัน"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"จัดเก็บในตัวเครื่อง"</string>
     <string name="add_account" msgid="8201790677994503186">"เพิ่มบัญชี"</string>
     <string name="add_new_account" msgid="5748627740680940264">"เพิ่มบัญชีใหม่"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"ไม่สามารถโทรออก"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"หมายเลขข้อความเสียงไม่พร้อมใช้งาน"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"ไม่สามารถโทรออก"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"หากต้องการตั้งค่าข้อความเสียง ให้ไปที่เมนู &gt; การตั้งค่า"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"หากต้องการฟังข้อความเสียง ให้ปิดโหมดใช้งานบนเครื่องบินก่อน"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 9518b61..26bde05 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Paghahanap"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Bagong contact"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Tingnan ang contact"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Tawagan si <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Tumawag sa <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Idagdag sa mga paborito"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Alisin mula sa mga paborito"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"I-edit"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Mga iminumungkahing contact"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Lahat ng mga contact"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Mga pinagsamang contact"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Tanggalin ang contact?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Itakda ang ringtone"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Lahat ng tawag sa voicemail"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Hindi ka makakapagtanggal ng mga contact mula sa mga read-only na account, ngunit maitatago mo ang mga ito sa iyong mga listahan ng mga contact."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> (na) min <xliff:g id="SECONDS">%s</xliff:g> (na) seg"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Madalas na kino-contact"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Madalas na tinatawagan"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Magdagdag ng contact"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Idagdag ang \"<xliff:g id="EMAIL">%s</xliff:g>\" sa mga contact?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"isa"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"dalawa"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"minus"</string>
     <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Tingnan ang contact"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Hindi available ang imbakan"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Walang SD card"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Walang natagpuang storage."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Walang natagpuang SD card."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Paghahanap ng vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"I-import mula sa SIM card"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"I-import mula sa imbakan"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"I-export sa imbakan"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"I-import ang lahat ng mga vCard file"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Naghahanap ng data ng vCard sa storage…"</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Naghahanap ng data ng vCard data sa SD card…"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Hindi ma-scan ang storage"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Hindi ma-scan ang SD card"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Hindi ma-scan ang storage. (Dahilan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Hindi ma-scan ang SD card. (Dahilan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O na error"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Hindi nagsimula nang tama ang composer ng vCard."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Hindi mabuksan ang \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> ng <xliff:g id="TOTAL_NUMBER">%s</xliff:g> (na) contact"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Pagkansela ng pag-import ng vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Kanselahin ang pag-import ng <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Pagkansela ng pag-export ng vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Kanselahin ang pag-export ng <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Di makansela pag-import/pag-export vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Mga pangalan ng iyong mga contact"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Mga contact na ipapakita"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Mag-import/mag-export"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Mag-import/mag-export ng mga contact"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Mag-import ng mga contact"</string>
     <string name="menu_share" msgid="943789700636542260">"Ibahagi"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Lahat ng contact"</string>
     <string name="share_via" msgid="563121028023030093">"Ibahagi ang contact sa pamamagitan ng"</string>
     <string name="share_error" msgid="948429331673358107">"Hindi maibabahagi ang contact na ito."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Pangalan"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"pinagsama mula sa <xliff:g id="COUNT">%0$d</xliff:g> (na) pinagmumulan"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Iba pa"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Sumali sa mga contact"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Isama ang kasalukuyang contact sa piniling contact?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"I-edit ang napiling mga contact"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Lumipat sa pag-edit ng napiling contact? Kokopyahin ang impormasyong ipinasok mo sa ngayon."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopyahin sa Aking Mga Contact"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Idagdag sa Aking Mga Contact"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Naglo-load…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Lumikha ng bagong contact"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Mag-sign in sa isang account"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Pag-import ng mga contact mula sa isang file"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Mag-import ng mga contact"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Lumikha ng bagong pangkat"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Lumikha ng bagong pangkat]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Tanggalin ang pangkat"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 pangkat"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> (na) pangkat"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Itakda ang default"</string>
     <string name="clear_default" msgid="7193185801596678067">"I-clear ang default"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Kinopya ang teksto"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Itapon ang mga pagbabago"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Itapon ang iyong mga pagbabago?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"I-set up ang aking profile"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Panatilihing lokal"</string>
     <string name="add_account" msgid="8201790677994503186">"Magdagdag ng account"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Magdagdag ng bagong account"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Hindi naipadala ang tawag"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Hindi available ang numero ng voicemail"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Hindi naipadala ang tawag"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Upang mag-set up ng voicemail, pumunta sa Menu &gt; Mga Setting."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Upang tumawag sa voicemail, i-off muna ang Airplane mode."</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 92285fd..cfde701 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Ara"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Yeni kişi"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Kişiyi görüntüle"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Ara: <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Çağrı yap: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Sık kullanılanlara ekle"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Sık kullanılanlardan kaldır"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Düzenle"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Önerilen kişiler"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Tüm kişiler"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kişiler birleştirildi"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Kişi silinsin mi?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Zil sesi ayarla"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Sesli mesaja gelen tüm çağrlr"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Kişileri salt okunur hesaplardan silemezsiniz, ancak bu kişileri kişiler listenizde gizleyebilirsiniz."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> dak <xliff:g id="SECONDS">%s</xliff:g> sn"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Sık iletişim kurulanlar"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Sık arananlar"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Kişi ekle"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" adresi kişilere eklensin mi?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"bir"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"iki"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"eksi"</string>
     <string name="description_plus_button" msgid="515164827856229880">"artı"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Kişiyi görüntüle"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Depolama birimi yok"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"SD kart yok"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Depolama birimi bulunamadı."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD kart bulunamadı."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"vCard aranıyor"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"SIM karttan içe aktar"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Depl biriminden içe aktar"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Depolama birimine aktar"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Tüm vCard dosyalarını içe aktar"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Depolama birimindeki vCard verileri aranıyor..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD kartta vCard verileri aranıyor..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Depolama birimi taranamadı"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"SD kart taranamadı"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Depolama biriminiz taranamadı. (Nedeni: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD kart taranamadı. (Nedeni: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"G/Ç Hatası"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCard oluşturucu düzgün başlamadı."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" açılamadı: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"Toplam <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kişiden <xliff:g id="CURRENT_NUMBER">%s</xliff:g> kişi"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"vCard içe aktarmayı iptal etme"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"<xliff:g id="FILENAME">%s</xliff:g> dosyasının içe aktarılması iptal edilsin mi?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"vCard dışa aktarmayı iptal etme"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"<xliff:g id="FILENAME">%s</xliff:g> dosyasının dışa aktarılması iptal edilsin mi?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"İçe/dışa aktrma işlmi iptl edilemedi"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Kişilerinizin adları"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Görüntülenecek kişiler"</string>
     <string name="menu_import_export" msgid="26217871113229507">"İçe/Dışa Aktar"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Kişileri içe/dışa aktar"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Kişileri içe aktar"</string>
     <string name="menu_share" msgid="943789700636542260">"Paylaş"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Tüm kişiler"</string>
     <string name="share_via" msgid="563121028023030093">"Şunu kullanarak kişi paylaş:"</string>
     <string name="share_error" msgid="948429331673358107">"Bu kişi paylaşılamıyor."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Ad"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> kaynaktan birleştirildi"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Diğer"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Kişileri birleştir"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Mevcut kişi, seçili kişiyle birleştirilsin mi?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Seçili kişileri düzenle"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Seçili kişiyi düzenlemeye geçilsin mi? Şimdiye kadar girdiğiniz bilgiler kopyalanacak."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kişilerime kopyala"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Kişilerime ekle"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Yükleniyor..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Yeni kişi oluştur"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Bir hesapta oturum açın"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Bir dosyadaki kişileri içe aktar"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Kişileri içe aktar"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Yeni grup oluştur"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Yeni grup oluştur]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Grubu sil"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 grup"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> grup"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Varsayılan olarak ayarla"</string>
     <string name="clear_default" msgid="7193185801596678067">"Varsayılanları temizle"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Metin kopyalandı"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Değişiklikleri sil"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Değişiklikleriniz silinsin mi?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Profilimi ayarla"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Yerel olarak sakla"</string>
     <string name="add_account" msgid="8201790677994503186">"Hesap ekle"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Yeni hesap ekle"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Çağrı yapılamadı"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Sesli mesaj numarası kullanılamıyor"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Çağrı yapılamadı"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Sesli mesajı yapılandırmak için Menü &gt; Ayarlar\'a gidin."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Sesli mesaja çağrı yapmak için öncelikle Uçak modunu kapatın."</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index dbc26fa..956fb41 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Пошук"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Новий контакт"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Див. контакт"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Набрати <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Телефонувати <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Додати до вибраного"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Видалити з вибраного"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Редагувати"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Пропоновані контакти"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Усі контакти"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Контакти об\'єднано"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Видалити контакт?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Установ.мелодію"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Усі виклики на голосову пошту"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Неможливо видалити контакти з облікових записів \"лише для читання\", але можна сховати їх у списках контактів."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> хв. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Часті контакти"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Часті виклики"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Додати контакт"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Дод.\" <xliff:g id="EMAIL">%s</xliff:g>\" до контактів?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"один"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"два"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"мінус"</string>
     <string name="description_plus_button" msgid="515164827856229880">"плюс"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Переглянути контакт"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Пам’ять недоступна"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Нема карти SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Пам’ять не знайдено."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Карту SD не знайдено."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Пошук даних vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Імортув. з SIM-карти"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Імпорт із пам’яті"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Експорт у пам’ять"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Імпортув. всі файли vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Пошук даних vCard у пам’яті..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Пошук даних vCard на карті SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Не вдалося просканувати пам’ять"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Не вдалося просканувати карту SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Не вдалося сканувати пам’ять. (Причина: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Не вдалося сканувати карту SD. (Причина: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Помилка вводу/виводу"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Майстер vCard не запущено належним чином."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Не вдалося відкрити файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> із <xliff:g id="TOTAL_NUMBER">%s</xliff:g> контактів"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Скасування імпорту vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Скасувати імпорт файлу <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Скасування експорту vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Скасувати експорт файлу <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Не вдалося скасув. імпорт/експорт vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Імена ваших контактів"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Контакти для показу"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Імпорт або експорт"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Імпорт/експорт контактів"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Імпорт контактів"</string>
     <string name="menu_share" msgid="943789700636542260">"Надісл."</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Усі контакти"</string>
     <string name="share_via" msgid="563121028023030093">"Надісл. контакт через"</string>
     <string name="share_error" msgid="948429331673358107">"Цей контакт неможливо надіслати."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Ім\'я"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"об\'єднано з джерел: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Інші"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Об\'єднати контакти"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Об\'єднати поточний контакт із вибраним контактом?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Редагувати вибрані контакти"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Перейти до редагування вибраного контакта? Введену досі інформацію буде скопійовано."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Копіювати в мої контакти"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Додати до групи \"Мої контакти\""</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Завантаження..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Створити новий контакт"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Увійти в обліковий запис"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Імпортувати контакти з файлу"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Імпортувати контакти"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Створити нову групу"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Створити нову групу]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Видалити групу"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 група"</item>
     <item quantity="other" msgid="1276758425904917367">"Груп: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Установити за умовчанням"</string>
     <string name="clear_default" msgid="7193185801596678067">"Очистити налаштування за умовчанням"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Текст скопійовано"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Відхилити зміни"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Відхилити зміни?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Налаштувати профіль"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Зберегти локально"</string>
     <string name="add_account" msgid="8201790677994503186">"Додати обліковий запис"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Додати новий обліковий запис"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Виклик не здійснено"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Номер голосової пошти не доступний"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Виклик не здійснено"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Щоб налаштувати голосову пошту, перейдіть у Меню &gt; Налаштування."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Щоб перевірити голосову пошту, спочатку вимкніть режим польоту."</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 74da6cd..7be25f1 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Tìm kiếm"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Liên hệ mới"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Xem liên hệ"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Gọi <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Gọi <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Thêm vào mục ưa thích"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Xóa khỏi mục ưa thích"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Chỉnh sửa"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Liên hệ được đề xuất"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Tất cả liên hệ"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Danh bạ đã được kết hợp"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Xóa địa chỉ liên hệ?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Đặt nhạc chuông"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Các cuộc gọi tới thư thoại"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Bạn không thể xóa địa chỉ liên hệ từ tài khoản chỉ đọc, nhưng bạn có thể ẩn chúng trong danh sách địa chỉ liên hệ của mình."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> phút <xliff:g id="SECONDS">%s</xliff:g> giây"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Thường xuyên được liên hệ"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Thường xuyên được gọi"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Thêm liên hệ"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Thêm \"<xliff:g id="EMAIL">%s</xliff:g>\" vào danh bạ?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"một"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"hai"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"trừ"</string>
     <string name="description_plus_button" msgid="515164827856229880">"cộng"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Xem địa chỉ liên hệ"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Bộ nhớ không khả dụng"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Không có thẻ SD nào"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Không tìm thấy bộ nhớ nào."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Không tìm thấy thẻ SD nào."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Đang tìm kiếm vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Nhập từ thẻ SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Nhập từ bộ nhớ"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Xuất sang bộ nhớ"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Nhập tất cả tệp vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Đang tìm kiếm dữ liệu vCard trong bộ nhớ..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Đang tìm dữ liệu vCard trên thẻ SD..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Không thể quét bộ nhớ"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Không thể quét thẻ SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Không thể quét bộ nhớ. (Lý do: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Không thể quét thẻ SD. (Lý do: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Lỗi I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Trình soạn vCard không khởi động đúng."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Không thể mở \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> trong tổng số <xliff:g id="TOTAL_NUMBER">%s</xliff:g> liên hệ"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Hủy nhập vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Hủy yêu cầu nhập <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Hủy xuất vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Hủy yêu cầu xuất <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Không thể nhập/xuất vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Tên danh bạ của bạn"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Danh sách liên hệ để hiển thị"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Nhập/xuất"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Nhập/xuất danh bạ"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Nhập danh bạ"</string>
     <string name="menu_share" msgid="943789700636542260">"Chia sẻ"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Tất cả liên hệ"</string>
     <string name="share_via" msgid="563121028023030093">"Chia sẻ liên hệ qua"</string>
     <string name="share_error" msgid="948429331673358107">"Không thể chia sẻ địa chỉ liên hệ này."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Tên"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"được hợp nhất từ <xliff:g id="COUNT">%0$d</xliff:g> nguồn"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Khác"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Kết hợp danh bạ"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Kết hợp địa chỉ liên hệ hiện tại với địa chỉ liên hệ đã chọn?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Chỉnh sửa địa chỉ liên hệ đã chọn"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Chuyển sang chỉnh sửa liên hệ đã chọn? Thông tin bạn đã nhập đến giờ sẽ được sao chép."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Sao chép vào Danh bạ của tôi"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Thêm vào Danh bạ của tôi"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Đang tải…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Tạo địa chỉ liên hệ mới"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Đăng nhập vào tài khoản"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Nhập danh bạ từ một tệp"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Nhập danh bạ"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Tạo nhóm mới"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Tạo nhóm mới]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Xóa nhóm"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 nhóm"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> nhóm"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Đặt mặc định"</string>
     <string name="clear_default" msgid="7193185801596678067">"Xóa mặc định"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Đã sao chép văn bản"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Hủy thay đổi"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Hủy các thay đổi của bạn?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Thiết lập tiểu sử của tôi"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Lưu trữ cục bộ"</string>
     <string name="add_account" msgid="8201790677994503186">"Thêm tài khoản"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Thêm tài khoản mới"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Không thể thực hiện cuộc gọi"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Số thư thoại không khả dụng"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Không thể thực hiện cuộc gọi"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Để thiết lập thư thoại, đi tới Trình đơn &gt; Cài đặt."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Để gọi thư thoại, trước tiên hãy tắt chế độ trên Máy bay."</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 381ffb0..73cc6ac 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"搜索"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"新建联系人"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"查看联系人"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"呼叫<xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"拨打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"添加到收藏"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"从收藏中删除"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"修改"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"建议的联系人"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"所有联系人"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"已合并联系人"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"要删除联系人吗?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"设置铃声"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"所有来电转至语音信箱"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"您无法删除只读帐户中的联系人,但可以在联系人列表中将他们隐藏。"</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"经常联系的人"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"经常呼叫的联系人"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"添加联系人"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"将“<xliff:g id="EMAIL">%s</xliff:g>”添加到联系人?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"一"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"二"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"删除"</string>
     <string name="description_plus_button" msgid="515164827856229880">"添加"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"查看联系人"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"存储设备不存在"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"无 SD 卡"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"未找到任何存储设备。"</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"未找到 SD 卡。"</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"正在搜索 vCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"从 SIM 卡导入"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"从存储设备导入"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"导出到存储设备"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"导入所有 vCard 文件"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"正在从存储设备中搜索 vCard 文件..."</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"正在 SD 卡中搜索 vCard 数据..."</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"无法扫描存储设备"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"无法扫描 SD 卡"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"无法扫描该存储设备。(原因:“<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"无法扫描该 SD 卡。(原因:“<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O 错误"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCard 制作程序未正确启动。"</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"无法打开“<xliff:g id="FILE_NAME">%s</xliff:g>”:<xliff:g id="EXACT_REASON">%s</xliff:g>。"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 个联系人(共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 个)"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"取消导入 vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"要取消导入 <xliff:g id="FILENAME">%s</xliff:g> 吗​​?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"取消导出 vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"要取消导出 <xliff:g id="FILENAME">%s</xliff:g> 吗​​?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"无法取消导入/导出 vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"联系人姓名"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"要显示的联系人"</string>
     <string name="menu_import_export" msgid="26217871113229507">"导入/导出"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"导入/导出联系人"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"导入联系人"</string>
     <string name="menu_share" msgid="943789700636542260">"分享"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"所有联系人"</string>
     <string name="share_via" msgid="563121028023030093">"联系人分享方式"</string>
     <string name="share_error" msgid="948429331673358107">"无法分享此联系人。"</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"姓名"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"合并自 <xliff:g id="COUNT">%0$d</xliff:g> 个来源"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"其他"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"合并联系人"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"要合并当前联系人与所选联系人吗?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"编辑所选联系人"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"要切换至编辑所选联系人吗?系统会复制您到目前为止输入的所有信息。"</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"复制到“我的联系人”"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"添加到“我的联系人”"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"正在加载..."</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"创建新联系人"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"登录帐户"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"从文件导入联系人"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"导入联系人"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"创建新群组"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[创建新群组]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"删除群组"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 个群组"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> 个群组"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"设置默认值"</string>
     <string name="clear_default" msgid="7193185801596678067">"清除默认值"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"文本已复制"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"舍弃更改"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"要舍弃您所做的更改吗?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"设置我的个人资料"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"本地保存"</string>
     <string name="add_account" msgid="8201790677994503186">"添加帐户"</string>
     <string name="add_new_account" msgid="5748627740680940264">"添加新帐户"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"呼叫未发出"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"语音信箱号码不可用"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"电话未拨出"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"要设置语音信箱,请转到“菜单”&gt;“设置”。"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"要呼叫语音信箱,请先关闭飞行模式。"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 072daec..72166f0 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"搜尋"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"新增聯絡人"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"檢視聯絡人"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"撥打電話給 <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"新增至我的最愛"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"從我的最愛中移除"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"編輯"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"建議聯絡人"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"所有聯絡人"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"已合併聯絡人"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"確定要刪除聯絡人?"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"設定電話鈴聲"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"將所有來電轉到語音信箱"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"您無法刪除唯讀帳戶的聯絡人,但可在聯絡人清單中隱藏這些聯絡人。"</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"常用聯絡人"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"常用聯絡人"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"新增聯絡人"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"要將「<xliff:g id="EMAIL">%s</xliff:g>」加到通訊錄嗎?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"1"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"2"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"負號"</string>
     <string name="description_plus_button" msgid="515164827856229880">"加號"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"查看聯絡人"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"儲存裝置無法使用"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"無 SD 卡"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"找不到任何儲存裝置。"</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"找不到 SD 卡。"</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"正在搜尋 VCard"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"從 SIM 卡匯入"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"從儲存裝置匯入"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"匯出到儲存裝置"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"匯入所有 vCard 檔案"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"正在搜尋儲存裝置中的 vCard 資料…"</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"正在 SD 卡上搜尋 vCard 資料…"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"無法掃描儲存裝置"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"無法掃描 SD 卡"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"無法掃描儲存裝置 (原因:<xliff:g id="FAIL_REASON">%s</xliff:g>)。"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"無法掃描 SD 卡 (原因:<xliff:g id="FAIL_REASON">%s</xliff:g>)。"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O 錯誤"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"vCard 編輯器並未正確啟動。"</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"無法開啟「<xliff:g id="FILE_NAME">%s</xliff:g>」:<xliff:g id="EXACT_REASON">%s</xliff:g>。"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 位聯絡人,共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 位"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"取消匯入 vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"確定要取消匯入 <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"取消匯出 vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"確定要取消匯出 <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"無法取消匯入/匯出 vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"您的聯絡人姓名"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"要顯示的聯絡人"</string>
     <string name="menu_import_export" msgid="26217871113229507">"匯入/匯出"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"匯入/匯出聯絡人"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"匯入聯絡人"</string>
     <string name="menu_share" msgid="943789700636542260">"分享"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"所有聯絡人"</string>
     <string name="share_via" msgid="563121028023030093">"使用下列應用程式分享聯絡人資訊:"</string>
     <string name="share_error" msgid="948429331673358107">"無法分享這位聯絡人。"</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"姓名"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"從 <xliff:g id="COUNT">%0$d</xliff:g> 個來源合併"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"其他"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"合併聯絡人"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"要將目前聯絡人與所選聯絡人合併嗎?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"編輯所選聯絡人"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"要切換至編輯所選聯絡人嗎?系統會為您複製目前已輸入的資訊。"</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"複製到我的通訊錄"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"新增至我的聯絡人"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"載入中…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"建立新聯絡人"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"登入帳戶"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"從檔案匯入聯絡人"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"匯入聯絡人"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"建立新群組"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[建立新群組]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"刪除群組"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 個群組"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> 個群組"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"設為預設值"</string>
     <string name="clear_default" msgid="7193185801596678067">"清除預設值"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"文字已複製"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"捨棄變更"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"確定要捨棄變更?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"設定我的個人資料"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"儲存在本機中"</string>
     <string name="add_account" msgid="8201790677994503186">"新增帳戶"</string>
     <string name="add_new_account" msgid="5748627740680940264">"新增帳戶"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"未送出通話要求"</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"語音信箱號碼無法使用"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"無法撥號"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"如要設定語音信箱,請前往 [選單] &gt; [設定]。"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"如要聽語音留言,請先關閉飛行模式。"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 441e192..23e720e 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -41,7 +41,7 @@
     <string name="menu_search" msgid="9147752853603483719">"Sesha"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Othintana naye omusha"</string>
     <string name="menu_viewContact" msgid="2795575601596468581">"Buka othintana naye"</string>
-    <string name="menu_callNumber" msgid="5142851348489387516">"Shayela <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Shayela u-<xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="menu_addStar" msgid="2908478235715404876">"Engeza ezintandokazini"</string>
     <string name="menu_removeStar" msgid="5844227078364227030">"Susa ezintandokazini"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Hlela"</string>
@@ -62,7 +62,6 @@
     <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Othintana nabo abasikiselwayo"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Bonke othintana nabo"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Othintana nabo abahlanganisiwe"</string>
-    <string name="deleteConfirmation_title" msgid="1418215926447642260">"Susa othintana naye"</string>
     <string name="menu_set_ring_tone" msgid="8728345772068064946">"Hlela iringithoni"</string>
     <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Wonke amakholi aya kwimeyili yezwi"</string>
     <string name="readOnlyContactWarning" msgid="7808825687289848259">"Awukwazi ukususa othintana nabo ema-akhawuntini okufunda kuphela, kodwa ungabafihla ohlwini lwakho loxhumana nabo."</string>
@@ -186,7 +185,6 @@
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> amaminithi <xliff:g id="SECONDS">%s</xliff:g> amasekhondi"</string>
     <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Abathintwa njalo"</string>
     <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Abashayelwa njalo"</string>
-    <string name="add_contact_dlg_title" msgid="2896685845822146494">"Faka othintana naye"</string>
     <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Faka  \"<xliff:g id="EMAIL">%s</xliff:g>\"  kothintana nabo?"</string>
     <string name="description_image_button_one" msgid="1740638037139856139">"kunye"</string>
     <string name="description_image_button_two" msgid="5882638439003731308">"okubili"</string>
@@ -209,11 +207,8 @@
     <string name="description_minus_button" msgid="387136707700230172">"susa"</string>
     <string name="description_plus_button" msgid="515164827856229880">"kuhlanganise"</string>
     <string name="description_view_contact_detail" msgid="9133251213656414807">"Buka othintana naye"</string>
-    <string name="no_sdcard_title" product="nosdcard" msgid="8543619259870877473">"Isitoreji asitholakali"</string>
-    <string name="no_sdcard_title" product="default" msgid="5911758680339949273">"Alikho ikhadi le-SD"</string>
     <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Ayikho indawo yokulondoloza etholakele."</string>
     <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Alikho ikhadi le-SD elitholakele."</string>
-    <string name="searching_vcard_title" msgid="4970508055399376813">"Iseshela i-vCArd"</string>
     <string name="import_from_sim" msgid="3859272228033941659">"Ngenisa kusuka kwikhadi le-SIM"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Ngenisa kusuka esigcineni"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Thekelisa kusigcini"</string>
@@ -223,8 +218,6 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Ngenisa wonke amafayela e-vCard"</string>
     <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Isesha idatha ye-vCard kusigcini"</string>
     <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Iseshela idatha ye-vCard ekhadini le-SD"</string>
-    <string name="scanning_sdcard_failed_title" product="nosdcard" msgid="4944932641334764942">"Yehlulekile ukufinyelela kwindawo yokugcina i-USB"</string>
-    <string name="scanning_sdcard_failed_title" product="default" msgid="6664940444476572612">"Yehlulekile ukuskena ikhadi le-SD"</string>
     <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Isilondolozi asiskeneknga. (Isizathu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Ikhadi le-SD aliskenekanga. (Isizathu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="6748358842976073255">"Iphutha le-I/O"</string>
@@ -273,9 +266,7 @@
     <string name="composer_not_initialized" msgid="2321648986367005254">"Umqambi we-Vcard akazange aqale ngendlela efanele."</string>
     <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Ayikwazi ukuvula \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
     <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> kothintana nabo abangu-<xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
-    <string name="cancel_import_confirmation_title" msgid="5578683596010294836">"Ikhansela ukungenisa i-vCard"</string>
     <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Misa ukulndwa kwe <xliff:g id="FILENAME">%s</xliff:g>?"</string>
-    <string name="cancel_export_confirmation_title" msgid="6516467140276768528">"Ikhansela ukuthekelisa i-vCard"</string>
     <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Misa ukulandwa kwe <xliff:g id="FILENAME">%s</xliff:g>?"</string>
     <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Yehlulekile ukukhansela ukungenisa/thekelisa i-vCard"</string>
     <string name="search_settings_description" msgid="2675223022992445813">"Amagama othintana nabo"</string>
@@ -291,8 +282,8 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Othintana nabo abazoboniswa"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Ngenisa/Thekelisa"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Ngenisa/Thekelisa othintana nabo"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Ngenisa othintana nabo"</string>
     <string name="menu_share" msgid="943789700636542260">"Yabelana"</string>
-    <string name="menu_all_contacts" msgid="5101735431586050711">"Bonke oxhumana nabo"</string>
     <string name="share_via" msgid="563121028023030093">"Abelana nothintana naye nge"</string>
     <string name="share_error" msgid="948429331673358107">"Lona oxhumana naye ngeke ukwazi ukwabelana ngaye."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"Igama"</string>
@@ -441,9 +432,7 @@
     <item quantity="other" msgid="425683718017380845">"ihlanganiswe kusuka emithombeni engu-<xliff:g id="COUNT">%0$d</xliff:g>"</item>
   </plurals>
     <string name="local_invisible_directory" msgid="6046691709127661065">"Okunye"</string>
-    <string name="aggregation_suggestion_join_dialog_title" msgid="5276699501316246253">"Joyina othintana nabo"</string>
     <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Joyina othintana naye wamanje nothintana naye okhethiwe?"</string>
-    <string name="aggregation_suggestion_edit_dialog_title" msgid="1064042382692091314">"Hlela ama-akhawunti akhethiwe"</string>
     <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Shintshela ekuhleleni othintana naye okhethiwe? Ulwazi olufakile kuze kube manje luzokopishwa."</string>
     <string name="menu_copyContact" msgid="1573960845106822639">"Kopisha kwengithintana nabo"</string>
     <string name="add_to_my_contacts" msgid="1068274916793627723">"Faka Kothintana Nabo"</string>
@@ -475,10 +464,9 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Iyalayisha…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Dala othintana naye omusha"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Ngena ngemvume kwi-akhawunti"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4456440183590517471">"Ngenisa othintana nabo kwifayela"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Ngenisa othintana nabo"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Dala iqembu elisha"</string>
     <string name="create_group_item_label" msgid="5218022006186243310">"[Yenza iqembu elisha]"</string>
-    <string name="delete_group_dialog_title" msgid="7368429698398624427">"Susa iqembu"</string>
   <plurals name="num_groups_in_account">
     <item quantity="one" msgid="2944819210288517794">"1 isigcawu"</item>
     <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> Amaqembu"</item>
@@ -497,7 +485,6 @@
     <string name="set_default" msgid="4417505153468300351">"Hlela okuzenzakalelayo"</string>
     <string name="clear_default" msgid="7193185801596678067">"Sula okuzenzakalelayo"</string>
     <string name="toast_text_copied" msgid="5143776250008541719">"Umbhalo okopishiwe"</string>
-    <string name="cancel_confirmation_dialog_title" msgid="3950463632415908534">"Lahla izinguquko"</string>
     <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Lahla izinguquko ozenzile?"</string>
     <string name="call_type_and_date" msgid="1766269584078149149">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
     <string name="profile_display_name" msgid="4127389543625918771">"Misa iphrofayli yami"</string>
@@ -561,7 +548,7 @@
     <string name="keep_local" msgid="1258761699192993322">"Gcina kuseduze"</string>
     <string name="add_account" msgid="8201790677994503186">"Engeza i-akhawunti"</string>
     <string name="add_new_account" msgid="5748627740680940264">"Yengeza i-akhawunti enthsha"</string>
-    <string name="dialog_phone_call_prohibited_title" msgid="2111395432187079579">"Ucingo aluthunyelwanga."</string>
-    <string name="dialog_voicemail_not_ready_title" msgid="7258109862329777060">"Inombolo yomlayezo wephimbo ayikho"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"ucingo aluthunyelwanga"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ukuya emyalezweni wephimbo, yana ezisethweni &gt; zemenyu."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Ukushayela i-voicemail, vala kuqala imodi Yendiza."</string>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index e856d67..db81fed 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -46,6 +46,9 @@
     <!-- Minimum height of a row in the Editor -->
     <dimen name="editor_min_line_item_height">48dip</dimen>
 
+    <!-- Height of the shadow asset under the photo on the contact detail page -->
+    <dimen name="detail_contact_photo_shadow_height">10dip</dimen>
+
     <!-- Height of the tab text label in the tab carousel on the contact detail page -->
     <dimen name="detail_tab_carousel_tab_label_height">45dip</dimen>
 
@@ -178,7 +181,9 @@
     <dimen name="join_header_top_margin">16dip</dimen>
     <dimen name="join_header_bottom_margin">0dip</dimen>
 
-    <dimen name="account_filter_header_top_padding">0dip</dimen>
+    <!-- Padding between the action bar's bottom edge and the first header
+         in contacts/group lists. -->
+    <dimen name="list_header_extra_top_padding">0dip</dimen>
 
     <!-- ContactTile Layouts -->
     <!--
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7bb875c..fa67483 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -100,8 +100,8 @@
     <!-- Menu item used to view the details for a specific contact -->
     <string name="menu_viewContact">View contact</string>
 
-    <!-- Menu item used to call a contact, containing the name of the contact to call -->
-    <string name="menu_callNumber">Call <xliff:g id="name">%s</xliff:g></string>
+    <!-- Menu item used to call a contact, containing the number of the contact to call -->
+    <string name="menu_callNumber">Call <xliff:g id="number">%s</xliff:g></string>
 
     <!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
     <string name="menu_addStar">Add to favorites</string>
@@ -163,9 +163,6 @@
     <!-- Toast shown after two contacts have been joined by a user action -->
     <string name="contactsJoinedMessage">Contacts joined</string>
 
-    <!-- Confirmation dialog title after users selects to delete a contact. [CHAR LIMIT=25]-->
-    <string name="deleteConfirmation_title">Delete contact?</string>
-
     <!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
     <string name="menu_set_ring_tone">Set ringtone</string>
 
@@ -452,7 +449,8 @@
     <!-- Hint text displayed in the "digits" field above the dialer's
          dialpad, if there's already a call in progress.  (This hint
          reminds the user that the dialer will add a new call, as opposed
-         to sending DTMF tones over the current call.) -->
+         to sending DTMF tones over the current call.)
+         [CHAR LIMIT=40] -->
     <string name="dialerDialpadHintText">Dial to add a call</string>
 
     <!-- Dialog text displayed when loading a phone number from the SIM card for speed dial -->
@@ -584,8 +582,6 @@
     <!-- The text displayed on the divider for the Favorites tab in Phone app indicating that items below it are frequently called as opposed to starred contacts [CHAR LIMIT = 39] -->
     <string name="favoritesFrequentCalled">Frequently called</string>
 
-    <!-- Dialog title when prompting before creating a contact -->
-    <string name="add_contact_dlg_title">Add contact</string>
     <!-- Dialog message when prompting before creating a contact. Includes
          the email address, e.g. "Add xyz@foo.com to contacts?" -->
     <string name="add_contact_dlg_message_fmt">Add \"<xliff:g id="email">%s</xliff:g>\" to contacts?</string>
@@ -731,19 +727,11 @@
       -->
     <string name="description_view_contact_detail" msgid="2795575601596468581">View contact</string>
 
-    <!-- Dialog title shown when (USB) storage does not exist [CHAR LIMIT=25] -->
-    <string name="no_sdcard_title" product="nosdcard">Storage unavailable</string>
-    <!-- Dialog title shown when SD Card does not exist -->
-    <string name="no_sdcard_title" product="default">No SD card</string>
-
     <!-- Dialog message shown when (USB) storage does not exist [CHAR LIMIT=30] -->
     <string name="no_sdcard_message" product="nosdcard">No storage was found.</string>
     <!-- Dialog message shown when SDcard does not exist. [CHAR LIMIT=30] -->
     <string name="no_sdcard_message" product="default">No SD card was found.</string>
 
-    <!-- Dialog title shown when searching vCard data from SD Card -->
-    <string name="searching_vcard_title">Searching for vCard</string>
-
     <!-- Action string for selecting SIM for importing contacts -->
     <string name="import_from_sim">Import from SIM card</string>
 
@@ -776,11 +764,6 @@
     <!-- Dialog message shown when searching VCard data from SD Card. [CHAR LIMIT=NONE] -->
     <string name="searching_vcard_message" product="default">Searching for vCard data on SD card\u2026</string>
 
-    <!-- Dialog title shown when scanning VCard data failed. [CHAR LIMIT=NONE] -->
-    <string name="scanning_sdcard_failed_title" product="nosdcard">Couldn\'t scan storage</string>
-    <!-- Dialog title shown when scanning VCard data failed. -->
-    <string name="scanning_sdcard_failed_title" product="default">Couldn\'t scan SD card</string>
-
     <!-- Dialog message shown when searching VCard data failed.
          An exact reason for the failure should [CHAR LIMIT=NONE] -->
     <string name="scanning_sdcard_failed_message" product="nosdcard">The storage couldn\'t be scanned. (Reason: \"<xliff:g id="fail_reason">%s</xliff:g>\")</string>
@@ -968,17 +951,11 @@
     <!-- 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>
 
-    <!-- Title shown in a Dialog confirming a user's cancel request toward existing vCard import. [CHAR LIMIT=40] -->
-    <string name="cancel_import_confirmation_title">Canceling vCard import</string>
-
     <!-- Message shown in a Dialog confirming a user's cancel request toward existing vCard import.
          The argument is file name for the vCard import the user wants to cancel.
          [CHAR LIMIT=128] -->
     <string name="cancel_import_confirmation_message">Cancel import of <xliff:g id="filename" example="import.vcf">%s</xliff:g>?</string>
 
-    <!-- Title shown in a Dialog confirming a user's cancel request toward existing vCard export. [CHAR LIMIT=128] -->
-    <string name="cancel_export_confirmation_title">Canceling vCard export</string>
-
     <!-- Message shown in a Dialog confirming a user's cancel request toward existing vCard export.
          The argument is file name for the vCard export the user wants to cancel.
          [CHAR LIMIT=128] -->
@@ -1025,12 +1002,12 @@
     <!-- Dialog title when selecting the bulk operation to perform from a list. [CHAR LIMIT=36] -->
     <string name="dialog_import_export">Import/export contacts</string>
 
+    <!-- Dialog title when importing contacts from an external source. [CHAR LIMIT=36] -->
+    <string name="dialog_import">Import contacts</string>
+
     <!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
     <string name="menu_share">Share</string>
 
-    <!-- The menu item to show all contacts in Phone entrance [CHAR LIMIT=30] -->
-    <string name="menu_all_contacts">All contacts</string>
-
     <!-- Dialog title when picking the application to share a contact with. -->
     <string name="share_via">Share contact via</string>
 
@@ -1393,19 +1370,11 @@
     <!-- The name of the invisible local contact directory -->
     <string name="local_invisible_directory">Other</string>
 
-    <!-- The title of a confirmation dialog shown when the user selects a
-        contact aggregation suggestion in Contact editor. [CHAR LIMIT=128]-->
-    <string name="aggregation_suggestion_join_dialog_title">Join contacts</string>
-
     <!-- The message in a confirmation dialog shown when the user selects a
         contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
     <string name="aggregation_suggestion_join_dialog_message">Join
         the current contact with the selected contact?</string>
 
-    <!-- The title of a confirmation dialog shown when the user selects a
-        contact aggregation suggestion in Contact editor. [CHAR LIMIT=128]-->
-    <string name="aggregation_suggestion_edit_dialog_title">Edit selected contacts</string>
-
     <!-- The message in a confirmation dialog shown when the user selects a
         contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
     <string name="aggregation_suggestion_edit_dialog_message">Switch to editing
@@ -1509,7 +1478,7 @@
 
     <!-- Button shown on the main contacts screen when there are no contacts on the device.
     Initiates a contact import dialog [CHAR LIMIT=128] -->
-    <string name="contacts_unavailable_import_contacts">Import contacts from a file</string>
+    <string name="contacts_unavailable_import_contacts">Import contacts</string>
 
     <!-- Title of the dialog that allows creation of a contact group [CHAR LIMIT=128] -->
     <string name="create_group_dialog_title">Create new group</string>
@@ -1517,9 +1486,6 @@
     <!-- An item in the popup list of groups that triggers creation of a contact group [CHAR LIMIT=128] -->
     <string name="create_group_item_label">[Create new group]</string>
 
-    <!-- Title of the dialog that allows deletion of a contact group [CHAR LIMIT=128] -->
-    <string name="delete_group_dialog_title">Delete group</string>
-
     <!-- Shows how many groups are from the specified account [CHAR LIMIT=15] -->
     <plurals name="num_groups_in_account">
         <item quantity="one">1 group</item>
@@ -1562,9 +1528,6 @@
     <!-- Toast shown when text is copied to the clipboard [CHAR LIMIT=64] -->
     <string name="toast_text_copied">Text copied</string>
 
-    <!-- Title of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=64] -->
-    <string name="cancel_confirmation_dialog_title">Discard changes</string>
-
     <!-- Contents of the alert dialog when the user hits the Cancel button in the editor [CHAR LIMIT=128] -->
     <string name="cancel_confirmation_dialog_message">Discard your changes?</string>
 
@@ -1818,15 +1781,17 @@
     <!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
     <string name="add_new_account">Add new account</string>
 
-    <!-- Dialog title which is shown when the user tries to make a phone call
-         to prohibited phone numbers [CHAR LIMIT=40] -->
-    <string name="dialog_phone_call_prohibited_title" msgid="4313552620858880999">Call not sent</string>
-
-    <!-- Dialog title which is shown when the user tries to check voicemail
-         while the system isn't ready for the access. [CHAR LIMIT=40] -->
-    <string name="dialog_voicemail_not_ready_title">Voicemail number unavailable</string>
+    <!-- Dialog message which is shown when the user tries to make a phone call
+         to prohibited phone numbers [CHAR LIMIT=NONE] -->
+    <string name="dialog_phone_call_prohibited_message" msgid="4313552620858880999">Call not sent</string>
 
     <!-- Dialog message which is shown when the user tries to check voicemail
          while the system isn't ready for the access. [CHAR LIMIT=NONE] -->
     <string name="dialog_voicemail_not_ready_message">To set up voicemail, go to Menu &gt; Settings.</string>
+
+    <!-- Dialog message which is shown when the user tries to check voicemail
+         while the system is in airplane mode. The user cannot access to
+         voicemail service in Airplane mode. [CHAR LIMI=NONE] -->
+    <string name="dialog_voicemail_airplane_mode_message">To call voicemail, first turn off Airplane mode.</string>
+
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index ece881e..0327059 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -38,7 +38,7 @@
         <item name="list_item_presence_icon_size">16dip</item>
         <item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
         <item name="list_item_profile_photo_size">70dip</item>
-        <item name="list_item_prefix_highlight_color">#729a27</item>
+        <item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
         <item name="list_item_header_text_indent">8dip</item>
         <item name="list_item_header_text_color">@color/people_app_theme_color</item>
         <item name="list_item_header_text_size">14sp</item>
@@ -314,6 +314,15 @@
         <item name="android:background">@color/quickcontact_tab_indicator</item>
     </style>
 
+    <style name="Theme.PhotoSelector" parent="@android:style/Theme.Holo.Light">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:windowFrame">@null</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowAnimationStyle">@null</item>
+        <item name="android:backgroundDimEnabled">false</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowNoTitle">true</item>
+    </style>
 
     <style name="GroupMembershipSizeTextAppearance" parent="@android:style/TextAppearance.Small"/>
 
diff --git a/src/com/android/contacts/CallContactActivity.java b/src/com/android/contacts/CallContactActivity.java
index b7c472a..793770b 100644
--- a/src/com/android/contacts/CallContactActivity.java
+++ b/src/com/android/contacts/CallContactActivity.java
@@ -18,10 +18,8 @@
 
 import com.android.contacts.interactions.PhoneNumberInteraction;
 
-import android.app.Dialog;
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnDismissListener;
-import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
@@ -50,7 +48,7 @@
         if (Contacts.CONTENT_ITEM_TYPE.equals(getContentResolver().getType(contactUri))) {
             PhoneNumberInteraction.startInteractionForPhoneCall(this, contactUri);
         } else {
-            startActivity(new Intent(Intent.ACTION_CALL_PRIVILEGED, contactUri));
+            startActivity(ContactsUtils.getCallIntent(contactUri));
             finish();
         }
     }
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
index caa8bce..428e2e8 100644
--- a/src/com/android/contacts/CallDetailActivity.java
+++ b/src/com/android/contacts/CallDetailActivity.java
@@ -22,8 +22,10 @@
 import com.android.contacts.calllog.ContactInfo;
 import com.android.contacts.calllog.ContactInfoHelper;
 import com.android.contacts.calllog.PhoneNumberHelper;
+import com.android.contacts.format.FormatUtils;
 import com.android.contacts.util.AsyncTaskExecutor;
 import com.android.contacts.util.AsyncTaskExecutors;
+import com.android.contacts.util.Constants;
 import com.android.contacts.voicemail.VoicemailPlaybackFragment;
 import com.android.contacts.voicemail.VoicemailStatusHelper;
 import com.android.contacts.voicemail.VoicemailStatusHelper.StatusMessage;
@@ -331,9 +333,8 @@
                 TelephonyManager tm = (TelephonyManager)
                         getSystemService(Context.TELEPHONY_SERVICE);
                 if (tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) {
-                    Intent callIntent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                            Uri.fromParts("tel", mNumber, null));
-                    startActivity(callIntent);
+                    startActivity(ContactsUtils.getCallIntent(
+                            Uri.fromParts(Constants.SCHEME_TEL, mNumber, null)));
                     return true;
                 }
             }
@@ -388,7 +389,6 @@
                 mPhoneCallDetailsHelper.setCallDetailsHeader(mHeaderTextView, firstDetails);
 
                 // Cache the details about the phone number.
-                final Uri numberCallUri = mPhoneNumberHelper.getCallUri(mNumber);
                 final boolean canPlaceCallsTo = mPhoneNumberHelper.canPlaceCallsTo(mNumber);
                 final boolean isVoicemailNumber = mPhoneNumberHelper.isVoicemailNumber(mNumber);
                 final boolean isSipNumber = mPhoneNumberHelper.isSipNumber(mNumber);
@@ -469,9 +469,10 @@
                                     firstDetails.number, firstDetails.formattedNumber);
 
                     ViewEntry entry = new ViewEntry(
-                            getString(R.string.menu_callNumber, displayNumber),
-                            new Intent(Intent.ACTION_CALL_PRIVILEGED, numberCallUri),
-                            getString(R.string.description_call, nameOrNumber));
+                            getString(R.string.menu_callNumber,
+                                    FormatUtils.forceLeftToRight(displayNumber)),
+                                    ContactsUtils.getCallIntent(mNumber),
+                                    getString(R.string.description_call, nameOrNumber));
 
                     // Only show a label if the number is shown and it is not a SIP address.
                     if (!TextUtils.isEmpty(firstDetails.name)
@@ -771,7 +772,7 @@
     }
 
     public void onMenuEditNumberBeforeCall(MenuItem menuItem) {
-        startActivity(new Intent(Intent.ACTION_DIAL, mPhoneNumberHelper.getCallUri(mNumber)));
+        startActivity(new Intent(Intent.ACTION_DIAL, ContactsUtils.getCallUri(mNumber)));
     }
 
     public void onMenuTrashVoicemail(MenuItem menuItem) {
diff --git a/src/com/android/contacts/ContactLoader.java b/src/com/android/contacts/ContactLoader.java
index c711b6c..2e59f71 100644
--- a/src/com/android/contacts/ContactLoader.java
+++ b/src/com/android/contacts/ContactLoader.java
@@ -301,8 +301,11 @@
             return mRequestedUri;
         }
 
+        /**
+         * Returns the contact ID.
+         */
         @VisibleForTesting
-        /*package*/ long getId() {
+        /* package */ long getId() {
             return mId;
         }
 
diff --git a/src/com/android/contacts/ContactPhotoManager.java b/src/com/android/contacts/ContactPhotoManager.java
index 7c54e80..3002dc3 100644
--- a/src/com/android/contacts/ContactPhotoManager.java
+++ b/src/com/android/contacts/ContactPhotoManager.java
@@ -30,8 +30,10 @@
 import android.database.Cursor;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.TransitionDrawable;
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Handler.Callback;
@@ -177,6 +179,14 @@
     public abstract void refreshCache();
 
     /**
+     * Stores the given bitmap directly in the LRU bitmap cache.
+     * @param photoUri The URI of the photo (for future requests).
+     * @param bitmap The bitmap.
+     * @param photoBytes The bytes that were parsed to create the bitmap.
+     */
+    public abstract void cacheBitmap(Uri photoUri, Bitmap bitmap, byte[] photoBytes);
+
+    /**
      * Initiates a background process that over time will fill up cache with
      * preload photos.
      */
@@ -201,6 +211,8 @@
 class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback {
     private static final String LOADER_THREAD_NAME = "ContactPhotoLoader";
 
+    private static final int FADE_TRANSITION_DURATION = 200;
+
     /**
      * Type of message sent by the UI thread to itself to indicate that some photos
      * need to be loaded.
@@ -428,7 +440,7 @@
     }
 
     private void loadPhotoByIdOrUri(ImageView view, Request request) {
-        boolean loaded = loadCachedPhoto(view, request);
+        boolean loaded = loadCachedPhoto(view, request, false);
         if (loaded) {
             mPendingRequests.remove(view);
         } else {
@@ -459,7 +471,13 @@
      *
      * @return false if the photo needs to be (re)loaded from the provider.
      */
-    private boolean loadCachedPhoto(ImageView view, Request request) {
+    private boolean loadCachedPhoto(ImageView view, Request request, boolean fadeIn) {
+        Bitmap bitmap = mBitmapCache.get(request.getKey());
+        if (bitmap != null) {
+            view.setImageBitmap(bitmap);
+            return true;
+        }
+
         BitmapHolder holder = mBitmapHolderCache.get(request.getKey());
         if (holder == null) {
             // The bitmap has not been loaded - should display the placeholder image.
@@ -475,11 +493,21 @@
         // Optionally decode bytes into a bitmap
         inflateBitmap(holder);
 
-        view.setImageBitmap(holder.bitmap);
+        if (fadeIn) {
+            Drawable[] layers = new Drawable[2];
+            layers[0] = mContext.getResources().getDrawable(
+                    getDefaultAvatarResId(request.mHires, request.mDarkTheme));
+            layers[1] = new BitmapDrawable(mContext.getResources(), holder.bitmap);
+            TransitionDrawable drawable = new TransitionDrawable(layers);
+            view.setImageDrawable(drawable);
+            drawable.startTransition(FADE_TRANSITION_DURATION);
+        } else {
+            view.setImageBitmap(holder.bitmap);
+        }
 
         if (holder.bitmap != null) {
             // Put the bitmap in the LRU cache
-            mBitmapCache.put(request, holder.bitmap);
+            mBitmapCache.put(request.getKey(), holder.bitmap);
         }
 
         // Soften the reference
@@ -598,7 +626,7 @@
         while (iterator.hasNext()) {
             ImageView view = iterator.next();
             Request key = mPendingRequests.get(view);
-            boolean loaded = loadCachedPhoto(view, key);
+            boolean loaded = loadCachedPhoto(view, key, true);
             if (loaded) {
                 iterator.remove();
             }
@@ -649,6 +677,14 @@
         mBitmapHolderCache.put(key, holder);
     }
 
+    @Override
+    public void cacheBitmap(Uri photoUri, Bitmap bitmap, byte[] photoBytes) {
+        Request request = Request.createFromUri(photoUri, true, false, DEFAULT_AVATER);
+        BitmapHolder holder = new BitmapHolder(photoBytes);
+        mBitmapHolderCache.put(request.getKey(), holder);
+        mBitmapCache.put(request.getKey(), bitmap);
+    }
+
     /**
      * Populates an array of photo IDs that need to be loaded.
      */
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index be84cc4..fb549d2 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -35,11 +35,13 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.OperationApplicationException;
+import android.content.res.AssetFileDescriptor;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Parcelable;
+import android.os.Bundle;
 import android.os.RemoteException;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.AggregationExceptions;
@@ -53,10 +55,15 @@
 import android.util.Log;
 import android.widget.Toast;
 
+import java.lang.Long;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
 
 /**
  * A service responsible for saving changes to the content provider.
@@ -80,6 +87,7 @@
     public static final String EXTRA_SAVE_MODE = "saveMode";
     public static final String EXTRA_SAVE_IS_PROFILE = "saveIsProfile";
     public static final String EXTRA_SAVE_SUCCEEDED = "saveSucceeded";
+    public static final String EXTRA_UPDATED_PHOTOS = "updatedPhotos";
 
     public static final String ACTION_CREATE_GROUP = "createGroup";
     public static final String ACTION_RENAME_GROUP = "renameGroup";
@@ -269,15 +277,38 @@
     /**
      * Creates an intent that can be sent to this service to create a new raw contact
      * using data presented as a set of ContentValues.
+     * This variant is more convenient to use when there is only one photo that can
+     * possibly be updated, as in the Contact Details screen.
+     * @param rawContactId identifies a writable raw-contact whose photo is to be updated.
+     * @param updatedPhotoPath denotes a temporary file containing the contact's new photo.
      */
     public static Intent createSaveContactIntent(Context context, EntityDeltaList state,
             String saveModeExtraKey, int saveMode, boolean isProfile, Class<?> callbackActivity,
-            String callbackAction) {
+            String callbackAction, long rawContactId, String updatedPhotoPath) {
+        Bundle bundle = new Bundle();
+        bundle.putString(String.valueOf(rawContactId), updatedPhotoPath);
+        return createSaveContactIntent(context, state, saveModeExtraKey, saveMode, isProfile,
+                callbackActivity, callbackAction, bundle);
+    }
+
+    /**
+     * Creates an intent that can be sent to this service to create a new raw contact
+     * using data presented as a set of ContentValues.
+     * This variant is used when multiple contacts' photos may be updated, as in the
+     * Contact Editor.
+     * @param updatedPhotos maps each raw-contact's ID to the file-path of the new photo.
+     */
+    public static Intent createSaveContactIntent(Context context, EntityDeltaList state,
+            String saveModeExtraKey, int saveMode, boolean isProfile, Class<?> callbackActivity,
+            String callbackAction, Bundle updatedPhotos) {
         Intent serviceIntent = new Intent(
                 context, ContactSaveService.class);
         serviceIntent.setAction(ContactSaveService.ACTION_SAVE_CONTACT);
         serviceIntent.putExtra(EXTRA_CONTACT_STATE, (Parcelable) state);
         serviceIntent.putExtra(EXTRA_SAVE_IS_PROFILE, isProfile);
+        if (updatedPhotos != null) {
+            serviceIntent.putExtra(EXTRA_UPDATED_PHOTOS, (Parcelable) updatedPhotos);
+        }
 
         // Callback intent will be invoked by the service once the contact is
         // saved.  The service will put the URI of the new contact as "data" on
@@ -293,6 +324,7 @@
         EntityDeltaList state = intent.getParcelableExtra(EXTRA_CONTACT_STATE);
         Intent callbackIntent = intent.getParcelableExtra(EXTRA_CALLBACK_INTENT);
         boolean isProfile = intent.getBooleanExtra(EXTRA_SAVE_IS_PROFILE, false);
+        Bundle updatedPhotos = intent.getParcelableExtra(EXTRA_UPDATED_PHOTOS);
 
         // Trim any empty fields, and RawContacts, before persisting
         final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
@@ -301,6 +333,10 @@
         Uri lookupUri = null;
 
         final ContentResolver resolver = getContentResolver();
+        boolean succeeded = false;
+
+        // Keep track of the id of a newly raw-contact (if any... there can be at most one).
+        long insertedRawContactId = -1;
 
         // Attempt to persist changes
         int tries = 0;
@@ -324,6 +360,9 @@
                 if (rawContactId == -1) {
                     throw new IllegalStateException("Could not determine RawContact ID after save");
                 }
+                // We don't have to check to see if the value is still -1.  If we reach here,
+                // the previous loop iteration didn't succeed, so any ID that we obtained is bogus.
+                insertedRawContactId = getInsertedRawContactId(diff, results);
                 if (isProfile) {
                     // Since the profile supports local raw contacts, which may have been completely
                     // removed if all information was removed, we need to do a special query to
@@ -346,10 +385,9 @@
                     lookupUri = RawContacts.getContactLookupUri(resolver, rawContactUri);
                 }
                 Log.v(TAG, "Saved contact. New URI: " + lookupUri);
-                // Mark the intent to indicate that the save was successful (even if the lookup URI
-                // is now null).  For local contacts or the local profile, it's possible that the
-                // save triggered removal of the contact, so no lookup URI would exist..
-                callbackIntent.putExtra(EXTRA_SAVE_SUCCEEDED, true);
+
+                // We can change this back to false later, if we fail to save the contact photo.
+                succeeded = true;
                 break;
 
             } catch (RemoteException e) {
@@ -395,19 +433,95 @@
             }
         }
 
+        // Now save any updated photos.  We do this at the end to ensure that
+        // the ContactProvider already knows about newly-created contacts.
+        if (updatedPhotos != null) {
+            for (String key : updatedPhotos.keySet()) {
+                String photoFilePath = updatedPhotos.getString(key);
+                long rawContactId = Long.parseLong(key);
+
+                // If the raw-contact ID is negative, we are saving a new raw-contact;
+                // replace the bogus ID with the new one that we actually saved the contact at.
+                if (rawContactId < 0) {
+                    rawContactId = insertedRawContactId;
+                    if (rawContactId == -1) {
+                        throw new IllegalStateException(
+                                "Could not determine RawContact ID for image insertion");
+                    }
+                }
+
+                File photoFile = new File(photoFilePath);
+                if (!saveUpdatedPhoto(rawContactId, photoFile)) succeeded = false;
+            }
+        }
+
+        if (succeeded) {
+            // Mark the intent to indicate that the save was successful (even if the lookup URI
+            // is now null).  For local contacts or the local profile, it's possible that the
+            // save triggered removal of the contact, so no lookup URI would exist..
+            callbackIntent.putExtra(EXTRA_SAVE_SUCCEEDED, true);
+        }
         callbackIntent.setData(lookupUri);
 
         deliverCallback(callbackIntent);
     }
 
+    /**
+     * Save updated photo for the specified raw-contact.
+     * @return true for success, false for failure
+     */
+    private boolean saveUpdatedPhoto(long rawContactId, File photoFile) {
+        final Uri outputUri = Uri.withAppendedPath(
+                ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId),
+                RawContacts.DisplayPhoto.CONTENT_DIRECTORY);
+
+        try {
+            final FileOutputStream outputStream = getContentResolver()
+                    .openAssetFileDescriptor(outputUri, "rw").createOutputStream();
+            try {
+                final FileInputStream inputStream = new FileInputStream(photoFile);
+                try {
+                    final byte[] buffer = new byte[16 * 1024];
+                    int length;
+                    int totalLength = 0;
+                    while ((length = inputStream.read(buffer)) > 0) {
+                        outputStream.write(buffer, 0, length);
+                        totalLength += length;
+                    }
+                    Log.v(TAG, "Wrote " + totalLength + " bytes for photo " + photoFile.toString());
+                } finally {
+                    inputStream.close();
+                }
+            } finally {
+                outputStream.close();
+            }
+        } catch (IOException e) {
+            Log.e(TAG, "Failed to write photo: " + photoFile.toString() + " because: " + e);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Find the ID of an existing or newly-inserted raw-contact.  If none exists, return -1.
+     */
     private long getRawContactId(EntityDeltaList state,
             final ArrayList<ContentProviderOperation> diff,
             final ContentProviderResult[] results) {
-        long rawContactId = state.findRawContactId();
-        if (rawContactId != -1) {
-            return rawContactId;
+        long existingRawContactId = state.findRawContactId();
+        if (existingRawContactId != -1) {
+            return existingRawContactId;
         }
 
+        return getInsertedRawContactId(diff, results);
+    }
+
+    /**
+     * Find the ID of a newly-inserted raw-contact.  If none exists, return -1.
+     */
+    private long getInsertedRawContactId(
+            final ArrayList<ContentProviderOperation> diff,
+            final ContentProviderResult[] results) {
         final int diffSize = diff.size();
         for (int i = 0; i < diffSize; i++) {
             ContentProviderOperation operation = diff.get(i);
diff --git a/src/com/android/contacts/ContactsUtils.java b/src/com/android/contacts/ContactsUtils.java
index cb19713..687bd0d 100644
--- a/src/com/android/contacts/ContactsUtils.java
+++ b/src/com/android/contacts/ContactsUtils.java
@@ -16,10 +16,13 @@
 
 package com.android.contacts;
 
+import com.android.contacts.activities.DialtactsActivity;
+import com.android.contacts.calllog.PhoneNumberHelper;
 import com.android.contacts.model.AccountType;
 import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.model.AccountWithDataSet;
 import com.android.contacts.test.NeededForTesting;
+import com.android.contacts.util.Constants;
 import com.android.i18n.phonenumbers.PhoneNumberUtil;
 
 import android.content.Context;
@@ -30,6 +33,7 @@
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.QuickContact;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.view.View;
@@ -213,6 +217,67 @@
     }
 
     /**
+     * Return Uri with an appropriate scheme, accepting Voicemail, SIP, and usual phone call
+     * numbers.
+     */
+    public static Uri getCallUri(String number) {
+        if (PhoneNumberUtils.isVoiceMailNumber(number)) {
+            return Uri.parse("voicemail:");
+        }
+        if (PhoneNumberUtils.isUriNumber(number)) {
+             return Uri.fromParts(Constants.SCHEME_SIP, number, null);
+        }
+        return Uri.fromParts(Constants.SCHEME_TEL, number, null);
+     }
+
+    /**
+     * Return an Intent for making a phone call. Scheme (e.g. tel, sip) will be determined
+     * automatically.
+     */
+    public static Intent getCallIntent(String number) {
+        return getCallIntent(number, null);
+    }
+
+    /**
+     * Return an Intent for making a phone call. A given Uri will be used as is (without any
+     * sanity check).
+     */
+    public static Intent getCallIntent(Uri uri) {
+        return getCallIntent(uri, null);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(String)} but also accept a call origin. For more
+     * information about call origin, see comments in Phone package (PhoneApp).
+     */
+    public static Intent getCallIntent(String number, String callOrigin) {
+        return getCallIntent(getCallUri(number), callOrigin);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(Uri)} but also accept a call origin. For more
+     * information about call origin, see comments in Phone package (PhoneApp).
+     */
+    public static Intent getCallIntent(Uri uri, String callOrigin) {
+        final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, uri);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        if (callOrigin != null) {
+            intent.putExtra(DialtactsActivity.EXTRA_CALL_ORIGIN, callOrigin);
+        }
+        return intent;
+    }
+
+    /**
+     * Return an Intent for launching voicemail screen.
+     */
+    public static Intent getVoicemailIntent() {
+        final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
+                Uri.fromParts("voicemail", "", null));
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        return intent;
+    }
+
+    /**
      * Returns a header view based on the R.layout.list_separator, where the
      * containing {@link TextView} is set using the given textResourceId.
      */
diff --git a/src/com/android/contacts/NfcHandler.java b/src/com/android/contacts/NfcHandler.java
index ee3e002..1ae72be 100644
--- a/src/com/android/contacts/NfcHandler.java
+++ b/src/com/android/contacts/NfcHandler.java
@@ -89,9 +89,8 @@
                     ndefBytes.write(buffer, 0, r);
                 }
 
-                NdefRecord vcardRecord = new NdefRecord(NdefRecord.TNF_MIME_MEDIA,
-                        "text/x-vCard".getBytes(), new byte[]{}, ndefBytes.toByteArray());
-                return new NdefMessage(new NdefRecord[] {vcardRecord});
+                NdefRecord record = NdefRecord.createMime("text/x-vcard", ndefBytes.toByteArray());
+                return new NdefMessage(record);
             } catch (IOException e) {
                 Log.e(TAG, "IOException creating vcard.");
                 return null;
diff --git a/src/com/android/contacts/PhoneCallDetailsHelper.java b/src/com/android/contacts/PhoneCallDetailsHelper.java
index 2d75c26..fd950fe 100644
--- a/src/com/android/contacts/PhoneCallDetailsHelper.java
+++ b/src/com/android/contacts/PhoneCallDetailsHelper.java
@@ -18,7 +18,7 @@
 
 import com.android.contacts.calllog.CallTypeHelper;
 import com.android.contacts.calllog.PhoneNumberHelper;
-import com.android.contacts.format.FormatUtils;
+import com.android.contacts.test.NeededForTesting;
 
 import android.content.res.Resources;
 import android.graphics.Typeface;
@@ -103,6 +103,7 @@
 
         final CharSequence nameText;
         final CharSequence numberText;
+        final CharSequence labelText;
         final CharSequence displayNumber =
             mPhoneNumberHelper.getDisplayNumber(details.number, details.formattedNumber);
         if (TextUtils.isEmpty(details.name)) {
@@ -113,20 +114,17 @@
             } else {
                 numberText = details.geocode;
             }
+            labelText = null;
         } else {
             nameText = details.name;
-            if (numberFormattedLabel != null) {
-                numberText = FormatUtils.applyStyleToSpan(Typeface.BOLD,
-                        numberFormattedLabel + " " + displayNumber, 0,
-                        numberFormattedLabel.length(),
-                        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-            } else {
-                numberText = displayNumber;
-            }
+            numberText = displayNumber;
+            labelText = numberFormattedLabel;
         }
 
         views.nameView.setText(nameText);
         views.numberView.setText(numberText);
+        views.labelView.setText(labelText);
+        views.labelView.setVisibility(TextUtils.isEmpty(labelText) ? View.GONE : View.VISIBLE);
     }
 
     /** Sets the text of the header view for the details page of a phone call. */
@@ -144,6 +142,7 @@
         nameView.setText(nameText);
     }
 
+    @NeededForTesting
     public void setCurrentTimeForTest(long currentTimeMillis) {
         mCurrentTimeMillisForTest = currentTimeMillis;
     }
diff --git a/src/com/android/contacts/PhoneCallDetailsViews.java b/src/com/android/contacts/PhoneCallDetailsViews.java
index fa06879..ea5a461 100644
--- a/src/com/android/contacts/PhoneCallDetailsViews.java
+++ b/src/com/android/contacts/PhoneCallDetailsViews.java
@@ -31,14 +31,17 @@
     public final CallTypeIconsView callTypeIcons;
     public final TextView callTypeAndDate;
     public final TextView numberView;
+    public final TextView labelView;
 
     private PhoneCallDetailsViews(TextView nameView, View callTypeView,
-            CallTypeIconsView callTypeIcons, TextView callTypeAndDate, TextView numberView) {
+            CallTypeIconsView callTypeIcons, TextView callTypeAndDate, TextView numberView,
+            TextView labelView) {
         this.nameView = nameView;
         this.callTypeView = callTypeView;
         this.callTypeIcons = callTypeIcons;
         this.callTypeAndDate = callTypeAndDate;
         this.numberView = numberView;
+        this.labelView = labelView;
     }
 
     /**
@@ -53,7 +56,8 @@
                 view.findViewById(R.id.call_type),
                 (CallTypeIconsView) view.findViewById(R.id.call_type_icons),
                 (TextView) view.findViewById(R.id.call_count_and_date),
-                (TextView) view.findViewById(R.id.number));
+                (TextView) view.findViewById(R.id.number),
+                (TextView) view.findViewById(R.id.label));
     }
 
     public static PhoneCallDetailsViews createForTest(Context context) {
@@ -62,6 +66,7 @@
                 new View(context),
                 new CallTypeIconsView(context),
                 new TextView(context),
+                new TextView(context),
                 new TextView(context));
     }
 }
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index b90d4c6..0260ca6 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -151,7 +151,14 @@
             // Just set to the field here.  The listener will be notified by update().
             mCurrentTab = TabState.fromInt(savedState.getInt(EXTRA_KEY_SELECTED_TAB));
         }
+        // Show tabs or the expanded {@link SearchView}, depending on whether or not we are in
+        // search mode.
         update();
+        // Expanding the {@link SearchView} clears the query, so set the query from the
+        // {@link ContactsRequest} after it has been expanded, if applicable.
+        if (mSearchMode && !TextUtils.isEmpty(mQueryString)) {
+            setQueryString(mQueryString);
+        }
     }
 
     public void setListener(Listener listener) {
@@ -292,7 +299,8 @@
         if (mSearchMode) {
             setFocusOnSearchView();
             // Since we have the {@link SearchView} in a custom action bar, we must manually handle
-            // expanding the {@link SearchView} when a search is initiated.
+            // expanding the {@link SearchView} when a search is initiated. Note that a side effect
+            // of this method is that the {@link SearchView} query text is set to empty string.
             mSearchView.onActionViewExpanded();
             if (mActionBar.getNavigationMode() != ActionBar.NAVIGATION_MODE_STANDARD) {
                 mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
diff --git a/src/com/android/contacts/activities/AttachPhotoActivity.java b/src/com/android/contacts/activities/AttachPhotoActivity.java
index a697c29..8d4cb5d 100644
--- a/src/com/android/contacts/activities/AttachPhotoActivity.java
+++ b/src/com/android/contacts/activities/AttachPhotoActivity.java
@@ -156,7 +156,7 @@
                 Bitmap photo = extras.getParcelable("data");
                 if (photo != null) {
                     ByteArrayOutputStream stream = new ByteArrayOutputStream();
-                    photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);
+                    photo.compress(Bitmap.CompressFormat.PNG, 100, stream);
 
                     final ContentValues imageValues = new ContentValues();
                     imageValues.put(Photo.PHOTO, stream.toByteArray());
diff --git a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
index 4b297d9..98abfbc 100644
--- a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
+++ b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
@@ -319,15 +319,23 @@
         // Apply a limit of 1 result to the query because we only need to
         // determine whether or not at least one other contact has the same
         // name. We don't need to find ALL other contacts with the same name.
-        Builder builder = Contacts.CONTENT_URI.buildUpon();
+        final Builder builder = Contacts.CONTENT_URI.buildUpon();
         builder.appendQueryParameter("limit", String.valueOf(1));
-        Uri uri = builder.build();
+        final Uri uri = builder.build();
 
+        final String displayNameSelection;
+        final String[] selectionArgs;
+        if (TextUtils.isEmpty(contactDisplayName)) {
+            displayNameSelection = Contacts.DISPLAY_NAME_PRIMARY + " IS NULL";
+            selectionArgs = new String[] { String.valueOf(mContactId) };
+        } else {
+            displayNameSelection = Contacts.DISPLAY_NAME_PRIMARY + " = ?";
+            selectionArgs = new String[] { contactDisplayName, String.valueOf(mContactId) };
+        }
         mQueryHandler.startQuery(TOKEN_DISAMBIGUATION_QUERY, null, uri,
                 new String[] { Contacts._ID } /* unused projection but a valid one was needed */,
-                Contacts.DISPLAY_NAME_PRIMARY + " = ? and " + Contacts.PHOTO_ID + " is null and "
-                + Contacts._ID + " <> ?",
-                new String[] { contactDisplayName, String.valueOf(mContactId) }, null);
+                displayNameSelection + " AND " + Contacts.PHOTO_ID + " IS NULL AND "
+                + Contacts._ID + " <> ?", selectionArgs, null);
     }
 
     /**
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index b949176..b353a0b 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -74,7 +74,7 @@
     private Handler mHandler = new Handler();
 
     @Override
-    public void onCreate(Bundle savedState) {
+    protected void onCreate(Bundle savedState) {
         super.onCreate(savedState);
         if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
             // This activity must not be shown. We have to select the contact in the
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index b5b6c1d..bf7d7d1 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -31,6 +31,7 @@
 import com.android.contacts.list.PhoneNumberPickerFragment;
 import com.android.contacts.list.PostalAddressPickerFragment;
 import com.android.contacts.widget.ContextMenuAdapter;
+import com.google.android.collect.Sets;
 
 import android.app.ActionBar;
 import android.app.ActionBar.LayoutParams;
@@ -415,8 +416,14 @@
                         ConfirmAddDetailActivity.class);
                 intent.setData(contactLookupUri);
                 if (extras != null) {
+                    // First remove name key if present because the dialog does not support name
+                    // editing. This is fine because the user wants to add information to an
+                    // existing contact, who should already have a name and we wouldn't want to
+                    // override the name.
+                    extras.remove(Insert.NAME);
                     intent.putExtras(extras);
                 }
+
                 // Wait for the activity result because we want to keep the picker open (in case the
                 // user cancels adding the info to a contact and wants to pick someone else).
                 startActivityForResult(intent, SUBACTIVITY_ADD_TO_EXISTING_CONTACT);
@@ -440,13 +447,24 @@
          * Returns true if is a single email or single phone number provided in the {@link Intent}
          * extras bundle so that a pop-up confirmation dialog can be used to add the data to
          * a contact. Otherwise return false if there are other intent extras that require launching
-         * the full contact editor.
+         * the full contact editor. Ignore extras with the key {@link Insert.NAME} because names
+         * are a special case and we typically don't want to replace the name of an existing
+         * contact.
          */
         private boolean launchAddToContactDialog(Bundle extras) {
             if (extras == null) {
                 return false;
             }
-            Set<String> intentExtraKeys = extras.keySet();
+
+            // Copy extras because the set may be modified in the next step
+            Set<String> intentExtraKeys = Sets.newHashSet();
+            intentExtraKeys.addAll(extras.keySet());
+
+            // Ignore name key because this is an existing contact.
+            if (intentExtraKeys.contains(Insert.NAME)) {
+                intentExtraKeys.remove(Insert.NAME);
+            }
+
             int numIntentExtraKeys = intentExtraKeys.size();
             if (numIntentExtraKeys == 2) {
                 boolean hasPhone = intentExtraKeys.contains(Insert.PHONE) &&
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index 7e95fed..9872ad4 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -17,6 +17,7 @@
 package com.android.contacts.activities;
 
 import com.android.contacts.R;
+import com.android.contacts.ContactsUtils;
 import com.android.contacts.calllog.CallLogFragment;
 import com.android.contacts.dialpad.DialpadFragment;
 import com.android.contacts.interactions.PhoneNumberInteraction;
@@ -28,6 +29,7 @@
 import com.android.contacts.list.PhoneNumberPickerFragment;
 import com.android.contacts.activities.TransactionSafeActivity;
 import com.android.contacts.util.AccountFilterUtil;
+import com.android.contacts.util.Constants;
 import com.android.internal.telephony.ITelephony;
 
 import android.app.ActionBar;
@@ -87,7 +89,8 @@
      * Copied from PhoneApp. See comments in Phone app for more detail.
      */
     public static final String EXTRA_CALL_ORIGIN = "com.android.phone.CALL_ORIGIN";
-    public static final String CALL_ORIGIN_DIALTACTS =
+    /** @see #getCallOrigin() */
+    private static final String CALL_ORIGIN_DIALTACTS =
             "com.android.contacts.activities.DialtactsActivity";
 
     /**
@@ -111,14 +114,6 @@
 
     private static final int SUBACTIVITY_ACCOUNT_FILTER = 1;
 
-    /**
-     * Listener interface for Fragments accommodated in {@link ViewPager} enabling them to know
-     * when it becomes visible or invisible inside the ViewPager.
-     */
-    public interface ViewPagerVisibilityListener {
-        public void onVisibilityChanged(boolean visible);
-    }
-
     public class ViewPagerAdapter extends FragmentPagerAdapter {
         public ViewPagerAdapter(FragmentManager fm) {
             super(fm);
@@ -165,6 +160,40 @@
 
             actionBar.selectTab(actionBar.getTabAt(position));
             mNextPosition = position;
+
+            // This method is called halfway between swiping between the two pages.
+            // When the next page is fully selected, the ViewPager will go back to IDLE state in
+            // onPageScrollStateChanged(). The order should be:
+            // (user's swipe) -> onPageSelected() -> IDLE in onPageScrollStateChanged()
+            //
+            // sendFragmentVisibilityChange() must be called from here or in the IDLE state to
+            // notify the visibility change events to two pages: the current page (pointed by
+            // mCurrentPosition) should receive sendFragmentVisibilityChange() with the second
+            // argument false, meaning "the page is now invisible", while the next page (pointed by
+            // mNextPosition) should receive the method with the second argument true, meaning
+            // "the page becomes visible".
+            //
+            // To make transition animation smooth enough, we need to delay the event in some cases:
+            // - We should delay both method calls when the dialpad screen is involved.
+            //   The screen does not have the bottom action bar, requiring different layout to
+            //   fill the screen. The layout refresh takes some time and thus should be done after
+            //   the page migration being completed.
+            // - We should delay the method for the call log screen. The screen will update
+            //   its internal state and may query full call log. which is too costly to do when
+            //   setMenuVisibility() is called, making the animation slower.
+            // - We should *not* delay the method for the phone favorite screen. The screen has
+            //   another icon the call log screen doesn't have. We want to show/hide it immediately
+            //   after user's choosing pages.
+            if (mCurrentPosition == TAB_INDEX_CALL_LOG && mNextPosition == TAB_INDEX_FAVORITES) {
+                sendFragmentVisibilityChange(mNextPosition, true /* visible */ );
+                invalidateOptionsMenu();
+            } else if (mCurrentPosition == TAB_INDEX_FAVORITES
+                    && mNextPosition == TAB_INDEX_CALL_LOG) {
+                sendFragmentVisibilityChange(mCurrentPosition, false /* not visible */ );
+                invalidateOptionsMenu();
+            } else {
+                // Delay sendFragmentVisibilityChange() for both positions.
+            }
         }
 
         public void setCurrentPosition(int position) {
@@ -175,11 +204,17 @@
         public void onPageScrollStateChanged(int state) {
             switch (state) {
                 case ViewPager.SCROLL_STATE_IDLE: {
-                    if (mCurrentPosition >= 0) {
-                        sendFragmentVisibilityChange(mCurrentPosition, false);
-                    }
-                    if (mNextPosition >= 0) {
-                        sendFragmentVisibilityChange(mNextPosition, true);
+                    // Call delayed sendFragmentVisibilityChange() call(s).
+                    // See comments in onPageSelected() for more details.
+                    if (mCurrentPosition == TAB_INDEX_CALL_LOG
+                            && mNextPosition == TAB_INDEX_FAVORITES) {
+                        sendFragmentVisibilityChange(mCurrentPosition, false /* not visible */ );
+                    } else if (mCurrentPosition == TAB_INDEX_FAVORITES
+                            && mNextPosition == TAB_INDEX_CALL_LOG) {
+                        sendFragmentVisibilityChange(mNextPosition, true /* visible */ );
+                    } else {
+                        sendFragmentVisibilityChange(mCurrentPosition, false /* not visible */ );
+                        sendFragmentVisibilityChange(mNextPosition, true /* visible */ );
                     }
                     invalidateOptionsMenu();
 
@@ -291,7 +326,8 @@
         @Override
         public boolean onMenuItemClick(MenuItem item) {
             AccountFilterUtil.startAccountFilterActivityForResult(
-                    DialtactsActivity.this, SUBACTIVITY_ACCOUNT_FILTER);
+                    DialtactsActivity.this, SUBACTIVITY_ACCOUNT_FILTER,
+                    mContactListFilterController.getFilter());
             return true;
         }
     };
@@ -316,8 +352,7 @@
                     // Specify call-origin so that users will see the previous tab instead of
                     // CallLog screen (search UI will be automatically exited).
                     PhoneNumberInteraction.startInteractionForPhoneCall(
-                            DialtactsActivity.this, dataUri,
-                            CALL_ORIGIN_DIALTACTS);
+                            DialtactsActivity.this, dataUri, getCallOrigin());
                 }
 
                 @Override
@@ -511,14 +546,8 @@
         if (fragment instanceof DialpadFragment) {
             mDialpadFragment = (DialpadFragment) fragment;
             mDialpadFragment.setListener(mDialpadListener);
-            if (currentPosition == TAB_INDEX_DIALER) {
-                mDialpadFragment.onVisibilityChanged(true);
-            }
         } else if (fragment instanceof CallLogFragment) {
             mCallLogFragment = (CallLogFragment) fragment;
-            if (currentPosition == TAB_INDEX_CALL_LOG) {
-                mCallLogFragment.onVisibilityChanged(true);
-            }
         } else if (fragment instanceof PhoneFavoriteFragment) {
             mPhoneFavoriteFragment = (PhoneFavoriteFragment) fragment;
             mPhoneFavoriteFragment.setListener(mPhoneFavoriteListener);
@@ -532,6 +561,7 @@
             mSearchFragment.setQuickContactEnabled(true);
             mSearchFragment.setDarkTheme(true);
             mSearchFragment.setPhotoPosition(ContactListItemView.PhotoPosition.LEFT);
+            mSearchFragment.setUseCallableUri(true);
             if (mContactListFilterController != null
                     && mContactListFilterController.getFilter() != null) {
                 mSearchFragment.setFilter(mContactListFilterController.getFilter());
@@ -652,10 +682,10 @@
         final int previousItemIndex = mViewPager.getCurrentItem();
         mViewPager.setCurrentItem(tabIndex, false /* smoothScroll */);
         if (previousItemIndex != tabIndex) {
-            sendFragmentVisibilityChange(previousItemIndex, false);
+            sendFragmentVisibilityChange(previousItemIndex, false /* not visible */ );
         }
         mPageChangeListener.setCurrentPosition(tabIndex);
-        sendFragmentVisibilityChange(tabIndex, true);
+        sendFragmentVisibilityChange(tabIndex, true /* visible */ );
 
         // Restore to the previous manual selection
         mLastManuallySelectedFragment = savedTabIndex;
@@ -692,7 +722,7 @@
         }
         if (Intent.ACTION_VIEW.equals(action)) {
             final Uri data = intent.getData();
-            if (data != null && "tel".equals(data.getScheme())) {
+            if (data != null && Constants.SCHEME_TEL.equals(data.getScheme())) {
                 return true;
             }
         }
@@ -700,6 +730,16 @@
     }
 
     /**
+     * Returns an appropriate call origin for this Activity. May return null when no call origin
+     * should be used (e.g. when some 3rd party application launched the screen. Call origin is
+     * for remembering the tab in which the user made a phone call, so the external app's DIAL
+     * request should not be counted.)
+     */
+    public String getCallOrigin() {
+        return !isDialIntent(getIntent()) ? CALL_ORIGIN_DIALTACTS : null;
+    }
+
+    /**
      * Retrieves the filter text stored in {@link #setupFilterText(Intent)}.
      * This text originally came from a FILTER_CONTACTS_ACTION intent received
      * by this activity. The stored text will then be cleared after after this
@@ -758,8 +798,13 @@
         @Override
         public void onContactSelected(Uri contactUri) {
             PhoneNumberInteraction.startInteractionForPhoneCall(
-                    DialtactsActivity.this, contactUri,
-                    CALL_ORIGIN_DIALTACTS);
+                    DialtactsActivity.this, contactUri, getCallOrigin());
+        }
+
+        @Override
+        public void onCallNumberDirectly(String phoneNumber) {
+            Intent intent = ContactsUtils.getCallIntent(phoneNumber, getCallOrigin());
+            startActivity(intent);
         }
     };
 
@@ -776,21 +821,18 @@
         final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option);
         final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact);
         final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings);
-        Tab tab = getActionBar().getSelectedTab();
+        final Tab tab = getActionBar().getSelectedTab();
         if (mInSearchUi) {
             searchMenuItem.setVisible(false);
             if (ViewConfiguration.get(this).hasPermanentMenuKey()) {
                 filterOptionMenuItem.setVisible(true);
                 filterOptionMenuItem.setOnMenuItemClickListener(
                         mFilterOptionsMenuItemClickListener);
-                addContactOptionMenuItem.setVisible(true);
-                addContactOptionMenuItem.setIntent(
-                        new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
             } else {
                 // Filter option menu should be not be shown as a overflow menu.
                 filterOptionMenuItem.setVisible(false);
-                addContactOptionMenuItem.setVisible(false);
             }
+            addContactOptionMenuItem.setVisible(false);
             callSettingsMenuItem.setVisible(false);
         } else {
             final boolean showCallSettingsMenu;
@@ -878,7 +920,7 @@
         actionBar.setDisplayShowHomeEnabled(true);
         actionBar.setDisplayHomeAsUpEnabled(true);
 
-        sendFragmentVisibilityChange(mViewPager.getCurrentItem(), false);
+        sendFragmentVisibilityChange(mViewPager.getCurrentItem(), false /* not visible */ );
 
         // Show the search fragment and hide everything else.
         mSearchFragment.setUserVisibleHint(true);
@@ -930,7 +972,7 @@
         actionBar.setDisplayShowHomeEnabled(false);
         actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
 
-        sendFragmentVisibilityChange(mViewPager.getCurrentItem(), true);
+        sendFragmentVisibilityChange(mViewPager.getCurrentItem(), true /* visible */ );
 
         mViewPager.setVisibility(View.VISIBLE);
 
@@ -958,9 +1000,12 @@
     }
 
     private void sendFragmentVisibilityChange(int position, boolean visibility) {
-        final Fragment fragment = getFragmentAt(position);
-        if (fragment instanceof ViewPagerVisibilityListener) {
-            ((ViewPagerVisibilityListener) fragment).onVisibilityChanged(visibility);
+        // Position can be -1 initially. See PageChangeListener.
+        if (position >= 0) {
+            final Fragment fragment = getFragmentAt(position);
+            if (fragment != null) {
+                fragment.setMenuVisibility(visibility);
+            }
         }
     }
 
diff --git a/src/com/android/contacts/activities/DialtactsViewPager.java b/src/com/android/contacts/activities/DialtactsViewPager.java
index 6bf41f7..fb869a9 100644
--- a/src/com/android/contacts/activities/DialtactsViewPager.java
+++ b/src/com/android/contacts/activities/DialtactsViewPager.java
@@ -36,8 +36,7 @@
      * ListViews which delay their children anyway, as desired to prevent
      * seeing pressed states flashing while scrolling lists
      */
-    /*
     public boolean shouldDelayChildPressedState() {
         return false;
-    }*/
+    }
 }
diff --git a/src/com/android/contacts/activities/JoinContactActivity.java b/src/com/android/contacts/activities/JoinContactActivity.java
index 75a13d0..4a277cb 100644
--- a/src/com/android/contacts/activities/JoinContactActivity.java
+++ b/src/com/android/contacts/activities/JoinContactActivity.java
@@ -24,18 +24,29 @@
 import com.android.contacts.list.OnContactPickerActionListener;
 
 import android.app.ActionBar;
+import android.app.ActionBar.LayoutParams;
 import android.app.Fragment;
+import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.ContactsContract;
+import android.text.TextUtils;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnFocusChangeListener;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.SearchView;
+import android.widget.SearchView.OnCloseListener;
+import android.widget.SearchView.OnQueryTextListener;
 
 /**
  * An activity that shows a list of contacts that can be joined with the target contact.
  */
-public class JoinContactActivity extends ContactsActivity {
+public class JoinContactActivity extends ContactsActivity
+        implements OnQueryTextListener, OnCloseListener, OnFocusChangeListener {
 
     private static final String TAG = "JoinContactActivity";
 
@@ -59,6 +70,7 @@
     private long mTargetContactId;
 
     private JoinContactListFragment mListFragment;
+    private SearchView mSearchView;
 
     @Override
     public void onAttachFragment(Fragment fragment) {
@@ -93,12 +105,7 @@
                     .commitAllowingStateLoss();
         }
 
-        final ActionBar actionBar = getActionBar();
-        if (actionBar != null) {
-            actionBar.setDisplayShowHomeEnabled(true);
-            actionBar.setDisplayHomeAsUpEnabled(true);
-            actionBar.setDisplayShowTitleEnabled(true);
-        }
+        prepareSearchViewAndActionBar();
     }
 
     private void setupActionListener() {
@@ -125,6 +132,74 @@
         });
     }
 
+    private void prepareSearchViewAndActionBar() {
+        final ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            final View searchViewOnLayout = findViewById(R.id.search_view);
+            if (searchViewOnLayout != null) {
+                searchViewOnLayout.setVisibility(View.GONE);
+            }
+
+            final View searchViewLayout = LayoutInflater.from(actionBar.getThemedContext())
+                    .inflate(R.layout.custom_action_bar, null);
+            mSearchView = (SearchView) searchViewLayout.findViewById(R.id.search_view);
+
+            // In order to make the SearchView look like "shown via search menu", we need to
+            // manually setup its state. See also DialtactsActivity.java and ActionBarAdapter.java.
+            mSearchView.setIconifiedByDefault(true);
+            mSearchView.setQueryHint(getString(R.string.hint_findContacts));
+            mSearchView.setIconified(false);
+
+            mSearchView.setOnQueryTextListener(this);
+            mSearchView.setOnCloseListener(this);
+            mSearchView.setOnQueryTextFocusChangeListener(this);
+
+            actionBar.setCustomView(searchViewLayout,
+                    new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
+            actionBar.setDisplayShowCustomEnabled(true);
+            actionBar.setDisplayShowHomeEnabled(true);
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        } else {
+            mSearchView = (SearchView) findViewById(R.id.search_view);
+            mSearchView.setQueryHint(getString(R.string.hint_findContacts));
+            mSearchView.setOnQueryTextListener(this);
+            mSearchView.setOnQueryTextFocusChangeListener(this);
+        }
+
+        // Clear focus and suppress keyboard show-up.
+        mSearchView.clearFocus();
+    }
+
+    @Override
+    public boolean onQueryTextChange(String newText) {
+        mListFragment.setQueryString(newText, true);
+        return false;
+    }
+
+    @Override
+    public boolean onQueryTextSubmit(String query) {
+        return false;
+    }
+
+    @Override
+    public boolean onClose() {
+        if (!TextUtils.isEmpty(mSearchView.getQuery())) {
+            mSearchView.setQuery(null, true);
+        }
+        return true;
+    }
+
+    @Override
+    public void onFocusChange(View view, boolean hasFocus) {
+        switch (view.getId()) {
+            case R.id.search_view: {
+                if (hasFocus) {
+                    showInputMethod(mSearchView.findFocus());
+                }
+            }
+        }
+    }
+
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
@@ -156,4 +231,14 @@
             mListFragment.onPickerResult(data);
         }
     }
+
+    private void showInputMethod(View view) {
+        final InputMethodManager imm = (InputMethodManager)
+                getSystemService(Context.INPUT_METHOD_SERVICE);
+        if (imm != null) {
+            if (!imm.showSoftInput(view, 0)) {
+                Log.w(TAG, "Failed to show soft input method.");
+            }
+        }
+    }
 }
diff --git a/src/com/android/contacts/activities/NonPhoneActivity.java b/src/com/android/contacts/activities/NonPhoneActivity.java
index 3a54292..47ae020 100644
--- a/src/com/android/contacts/activities/NonPhoneActivity.java
+++ b/src/com/android/contacts/activities/NonPhoneActivity.java
@@ -18,6 +18,7 @@
 
 import com.android.contacts.ContactsActivity;
 import com.android.contacts.R;
+import com.android.contacts.util.Constants;
 
 import android.app.Activity;
 import android.app.AlertDialog;
@@ -56,7 +57,7 @@
         final Uri data = getIntent().getData();
         if (data == null) return null;
         final String scheme = data.getScheme();
-        if (!"tel".equals(scheme)) return null;
+        if (!Constants.SCHEME_TEL.equals(scheme)) return null;
         return getIntent().getData().getSchemeSpecificPart();
     }
 
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 8d1b9aa..b87edbd 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -90,6 +90,7 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
+import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ListPopupWindow;
@@ -823,7 +824,7 @@
         }
 
         @Override
-        public void startUpdate(View container) {
+        public void startUpdate(ViewGroup container) {
         }
 
         private Fragment getFragment(int position) {
@@ -844,7 +845,7 @@
         }
 
         @Override
-        public Object instantiateItem(View container, int position) {
+        public Object instantiateItem(ViewGroup container, int position) {
             if (mCurTransaction == null) {
                 mCurTransaction = mFragmentManager.beginTransaction();
             }
@@ -857,7 +858,7 @@
         }
 
         @Override
-        public void destroyItem(View container, int position, Object object) {
+        public void destroyItem(ViewGroup container, int position, Object object) {
             if (mCurTransaction == null) {
                 mCurTransaction = mFragmentManager.beginTransaction();
             }
@@ -865,7 +866,7 @@
         }
 
         @Override
-        public void finishUpdate(View container) {
+        public void finishUpdate(ViewGroup container) {
             if (mCurTransaction != null) {
                 mCurTransaction.commitAllowingStateLoss();
                 mCurTransaction = null;
@@ -879,7 +880,7 @@
         }
 
         @Override
-        public void setPrimaryItem(View container, int position, Object object) {
+        public void setPrimaryItem(ViewGroup container, int position, Object object) {
             Fragment fragment = (Fragment) object;
             if (mCurrentPrimaryItem != fragment) {
                 if (mCurrentPrimaryItem != null) {
@@ -968,7 +969,12 @@
         View mainView = findViewById(R.id.main_view);
 
         if (mProviderStatus == ProviderStatus.STATUS_NORMAL) {
+            // Ensure that the mTabPager is visible; we may have made it invisible below.
             contactsUnavailableView.setVisibility(View.GONE);
+            if (mTabPager != null) {
+                mTabPager.setVisibility(View.VISIBLE);
+            }
+
             if (mainView != null) {
                 mainView.setVisibility(View.VISIBLE);
             }
@@ -1001,7 +1007,14 @@
             } else {
                 mContactsUnavailableFragment.update();
             }
+
+            // Show the contactsUnavailableView, and hide the mTabPager so that we don't
+            // see it sliding in underneath the contactsUnavailableView at the edges.
             contactsUnavailableView.setVisibility(View.VISIBLE);
+            if (mTabPager != null) {
+                mTabPager.setVisibility(View.GONE);
+            }
+
             if (mainView != null) {
                 mainView.setVisibility(View.INVISIBLE);
             }
@@ -1198,7 +1211,7 @@
 
         @Override
         public void onImportContactsFromFileAction() {
-            ImportExportDialogFragment.show(getFragmentManager());
+            ImportExportDialogFragment.show(getFragmentManager(), areContactsAvailable());
         }
 
         @Override
@@ -1217,6 +1230,12 @@
                 startActivity(new Intent(Intent.ACTION_VIEW, contactUri));
             }
         }
+
+        @Override
+        public void onCallNumberDirectly(String phoneNumber) {
+            // No need to call phone number directly from People app.
+            Log.w(TAG, "unexpected invocation of onCallNumberDirectly()");
+        }
     }
 
     private final class GroupBrowserActionListener implements OnGroupBrowserActionListener {
@@ -1288,7 +1307,7 @@
         super.onCreateOptionsMenu(menu);
 
         MenuInflater inflater = getMenuInflater();
-        inflater.inflate(R.menu.actions, menu);
+        inflater.inflate(R.menu.people_options, menu);
 
         // On narrow screens we specify a NEW group button in the {@link ActionBar}, so that
         // it can be in the overflow menu. On wide screens, we use a custom view because we need
@@ -1424,8 +1443,9 @@
                 return true;
             }
             case R.id.menu_contacts_filter: {
-                AccountFilterUtil.startAccountFilterActivityForResult(this,
-                        SUBACTIVITY_ACCOUNT_FILTER);
+                AccountFilterUtil.startAccountFilterActivityForResult(
+                        this, SUBACTIVITY_ACCOUNT_FILTER,
+                        mContactListFilterController.getFilter());
                 return true;
             }
             case R.id.menu_search: {
@@ -1452,7 +1472,7 @@
                 return true;
             }
             case R.id.menu_import_export: {
-                ImportExportDialogFragment.show(getFragmentManager());
+                ImportExportDialogFragment.show(getFragmentManager(), areContactsAvailable());
                 return true;
             }
             case R.id.menu_accounts: {
@@ -1524,7 +1544,7 @@
                 if (resultCode == RESULT_OK && PhoneCapabilityTester.isUsingTwoPanes(this)) {
                     mRequest.setActionCode(ContactsRequest.ACTION_VIEW_CONTACT);
                     mAllFragment.setSelectionRequired(true);
-                    mAllFragment.reloadDataAndSetSelectedUri(data.getData());
+                    mAllFragment.setSelectedContactUri(data.getData());
                     // Suppress IME if in search mode
                     if (mActionBarAdapter != null) {
                         mActionBarAdapter.clearFocusOnSearchView();
diff --git a/src/com/android/contacts/activities/PhotoSelectionActivity.java b/src/com/android/contacts/activities/PhotoSelectionActivity.java
new file mode 100644
index 0000000..02843e9
--- /dev/null
+++ b/src/com/android/contacts/activities/PhotoSelectionActivity.java
@@ -0,0 +1,505 @@
+/*
+ * Copyright (C) 2011 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.activities;
+
+import com.android.contacts.ContactPhotoManager;
+import com.android.contacts.ContactSaveService;
+import com.android.contacts.R;
+import com.android.contacts.detail.PhotoSelectionHandler;
+import com.android.contacts.editor.PhotoActionPopup;
+import com.android.contacts.model.EntityDeltaList;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ObjectAnimator;
+import android.animation.PropertyValuesHolder;
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Rect;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.view.View;
+import android.view.ViewGroup.MarginLayoutParams;
+import android.view.ViewTreeObserver.OnGlobalLayoutListener;
+import android.widget.FrameLayout.LayoutParams;
+import android.widget.ImageView;
+
+import java.io.File;
+
+/**
+ * Popup activity for choosing a contact photo within the Contacts app.
+ */
+public class PhotoSelectionActivity extends Activity {
+
+    /** Number of ms for the animation to expand the photo. */
+    private static final int PHOTO_EXPAND_DURATION = 100;
+
+    /** Number of ms for the animation to contract the photo on activity exit. */
+    private static final int PHOTO_CONTRACT_DURATION = 50;
+
+    /** Number of ms for the animation to hide the backdrop on finish. */
+    private static final int BACKDROP_FADEOUT_DURATION = 100;
+
+    private static final String KEY_CURRENT_PHOTO_FILE = "currentphotofile";
+
+    private static final String KEY_SUB_ACTIVITY_IN_PROGRESS = "subinprogress";
+
+    /** Intent extra to get the photo URI. */
+    public static final String PHOTO_URI = "photo_uri";
+
+    /** Intent extra to get the entity delta list. */
+    public static final String ENTITY_DELTA_LIST = "entity_delta_list";
+
+    /** Intent extra to indicate whether the contact is the user's profile. */
+    public static final String IS_PROFILE = "is_profile";
+
+    /** Intent extra to indicate whether the contact is from a directory (non-editable). */
+    public static final String IS_DIRECTORY_CONTACT = "is_directory_contact";
+
+    /**
+     * Intent extra to indicate whether the photo should be animated to show the full contents of
+     * the photo (on a larger portion of the screen) when clicked.  If unspecified or false, the
+     * photo will not move from its original location.
+     */
+    public static final String EXPAND_PHOTO = "expand_photo";
+
+    /** Source bounds of the image that was clicked on. */
+    private Rect mSourceBounds;
+
+    /**
+     * The photo URI. May be null, in which case the default avatar will be used.
+     */
+    private Uri mPhotoUri;
+
+    /** Entity delta list of the contact. */
+    private EntityDeltaList mState;
+
+    /** Whether the contact is the user's profile. */
+    private boolean mIsProfile;
+
+    /** Whether the contact is from a directory. */
+    private boolean mIsDirectoryContact;
+
+    /** Whether to animate the photo to an expanded view covering more of the screen. */
+    private boolean mExpandPhoto;
+
+    /** The semi-transparent backdrop. */
+    private View mBackdrop;
+
+    /** The photo view. */
+    private ImageView mPhotoView;
+
+    /** The photo handler attached to this activity, if any. */
+    private PhotoHandler mPhotoHandler;
+
+    /** Animator to expand the photo out to full size. */
+    private ObjectAnimator mPhotoAnimator;
+
+    /** Listener for the animation. */
+    private AnimatorListenerAdapter mAnimationListener;
+
+    /** Whether a change in layout of the photo has occurred that has no animation yet. */
+    private boolean mAnimationPending;
+
+    /** Prior position of the image (for animating). */
+    Rect mOriginalPos = new Rect();
+
+    /** Layout params for the photo view before we started animating. */
+    private LayoutParams mPhotoStartParams;
+
+    /** Layout params for the photo view after we finished animating. */
+    private LayoutParams mPhotoEndParams;
+
+    /** Whether a sub-activity is currently in progress. */
+    private boolean mSubActivityInProgress;
+
+    /**
+     * A photo result received by the activity, persisted across activity lifecycle.
+     */
+    private PendingPhotoResult mPendingPhotoResult;
+
+    /**
+     * The photo file being interacted with, if any.  Saved/restored between activity instances.
+     */
+    private File mCurrentPhotoFile;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.photoselection_activity);
+        if (savedInstanceState != null) {
+            String fileName = savedInstanceState.getString(KEY_CURRENT_PHOTO_FILE);
+            if (fileName != null) {
+                mCurrentPhotoFile = new File(fileName);
+            }
+            mSubActivityInProgress = savedInstanceState.getBoolean(KEY_SUB_ACTIVITY_IN_PROGRESS);
+        }
+
+        // Pull data out of the intent.
+        final Intent intent = getIntent();
+        mPhotoUri = intent.getParcelableExtra(PHOTO_URI);
+        mState = (EntityDeltaList) intent.getParcelableExtra(ENTITY_DELTA_LIST);
+        mIsProfile = intent.getBooleanExtra(IS_PROFILE, false);
+        mIsDirectoryContact = intent.getBooleanExtra(IS_DIRECTORY_CONTACT, false);
+        mExpandPhoto = intent.getBooleanExtra(EXPAND_PHOTO, false);
+
+        mBackdrop = findViewById(R.id.backdrop);
+        mPhotoView = (ImageView) findViewById(R.id.photo);
+        mSourceBounds = intent.getSourceBounds();
+
+        // Fade in the background.
+        animateInBackground();
+
+        // Dismiss the dialog on clicking the backdrop.
+        mBackdrop.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
+        // Wait until the layout pass to show the photo, so that the source bounds will match up.
+        OnGlobalLayoutListener globalLayoutListener = new OnGlobalLayoutListener() {
+            @Override
+            public void onGlobalLayout() {
+                displayPhoto();
+                mBackdrop.getViewTreeObserver().removeGlobalOnLayoutListener(this);
+            }
+        };
+        mBackdrop.getViewTreeObserver().addOnGlobalLayoutListener(globalLayoutListener);
+    }
+
+    @Override
+    public void finish() {
+        if (!mSubActivityInProgress) {
+            closePhotoAndFinish();
+        } else {
+            activityFinish();
+        }
+    }
+
+    /**
+     * Builds a well-formed intent for invoking this activity.
+     * @param context The context.
+     * @param photoUri The URI of the current photo (may be null, in which case the default
+     *     avatar image will be displayed).
+     * @param photoBitmap The bitmap of the current photo (may be null, in which case the default
+     *     avatar image will be displayed).
+     * @param photoBytes The bytes for the current photo (may be null, in which case the default
+     *     avatar image will be displayed).
+     * @param photoBounds The pixel bounds of the current photo.
+     * @param delta The entity delta list for the contact.
+     * @param isProfile Whether the contact is the user's profile.
+     * @param isDirectoryContact Whether the contact comes from a directory (non-editable).
+     * @param expandPhotoOnClick Whether the photo should be expanded on click or not (generally,
+     *     this should be true for phones, and false for tablets).
+     * @return An intent that can be used to invoke the photo selection activity.
+     */
+    public static Intent buildIntent(Context context, Uri photoUri, Bitmap photoBitmap,
+            byte[] photoBytes, Rect photoBounds, EntityDeltaList delta, boolean isProfile,
+            boolean isDirectoryContact, boolean expandPhotoOnClick) {
+        Intent intent = new Intent(context, PhotoSelectionActivity.class);
+        if (photoUri != null && photoBitmap != null && photoBytes != null) {
+            intent.putExtra(PHOTO_URI, photoUri);
+        }
+        intent.setSourceBounds(photoBounds);
+        intent.putExtra(ENTITY_DELTA_LIST, (Parcelable) delta);
+        intent.putExtra(IS_PROFILE, isProfile);
+        intent.putExtra(IS_DIRECTORY_CONTACT, isDirectoryContact);
+        intent.putExtra(EXPAND_PHOTO, expandPhotoOnClick);
+        return intent;
+    }
+
+    private void activityFinish() {
+        super.finish();
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (mPhotoAnimator != null) {
+            mPhotoAnimator.cancel();
+            mPhotoAnimator = null;
+        }
+        if (mPhotoHandler != null) {
+            mPhotoHandler.destroy();
+            mPhotoHandler = null;
+        }
+    }
+
+    private void displayPhoto() {
+        // Load the photo.
+        if (mPhotoUri != null) {
+            // If we have a URI, the bitmap should be cached directly.
+            ContactPhotoManager.getInstance(this).loadPhoto(mPhotoView, mPhotoUri, true, false);
+        } else {
+            // Fall back to avatar image.
+            mPhotoView.setImageResource(ContactPhotoManager.getDefaultAvatarResId(true, false));
+        }
+
+        // Animate the photo view into its end location.
+        final int[] pos = new int[2];
+        mBackdrop.getLocationOnScreen(pos);
+        LayoutParams layoutParams = new LayoutParams(mSourceBounds.width(),
+                mSourceBounds.height());
+        mOriginalPos.left = mSourceBounds.left - pos[0];
+        mOriginalPos.top = mSourceBounds.top - pos[1];
+        mOriginalPos.right = mOriginalPos.left + mSourceBounds.width();
+        mOriginalPos.bottom = mOriginalPos.top + mSourceBounds.height();
+        layoutParams.setMargins(mOriginalPos.left, mOriginalPos.top, mOriginalPos.right,
+                mOriginalPos.bottom);
+        mPhotoStartParams = layoutParams;
+        mPhotoView.setLayoutParams(layoutParams);
+        mPhotoView.requestLayout();
+
+        mPhotoView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
+            @Override
+            public void onLayoutChange(View v, int left, int top, int right, int bottom,
+                    int oldLeft, int oldTop, int oldRight, int oldBottom) {
+                if (mAnimationPending) {
+                    mAnimationPending = false;
+                    PropertyValuesHolder pvhLeft =
+                            PropertyValuesHolder.ofInt("left", mOriginalPos.left, left);
+                    PropertyValuesHolder pvhTop =
+                            PropertyValuesHolder.ofInt("top", mOriginalPos.top, top);
+                    PropertyValuesHolder pvhRight =
+                            PropertyValuesHolder.ofInt("right", mOriginalPos.right, right);
+                    PropertyValuesHolder pvhBottom =
+                            PropertyValuesHolder.ofInt("bottom", mOriginalPos.bottom, bottom);
+                    ObjectAnimator anim = ObjectAnimator.ofPropertyValuesHolder(mPhotoView,
+                            pvhLeft, pvhTop, pvhRight, pvhBottom).setDuration(
+                            PHOTO_EXPAND_DURATION);
+                    if (mAnimationListener != null) {
+                        anim.addListener(mAnimationListener);
+                    }
+                    anim.start();
+                }
+            }
+        });
+        attachPhotoHandler();
+    }
+
+    private LayoutParams getPhotoEndParams() {
+        if (mPhotoEndParams == null) {
+            mPhotoEndParams = new LayoutParams(mPhotoStartParams);
+            if (mExpandPhoto) {
+                Rect bounds = new Rect();
+                mBackdrop.getDrawingRect(bounds);
+                if (bounds.height() > bounds.width()) {
+                    //Take up full width.
+                    mPhotoEndParams.width = bounds.width();
+                    mPhotoEndParams.height = bounds.width();
+                } else {
+                    // Take up full height, leaving space for the popup.
+                    mPhotoEndParams.height = bounds.height() - 150;
+                    mPhotoEndParams.width = bounds.height() - 150;
+                }
+                mPhotoEndParams.topMargin = 0;
+                mPhotoEndParams.leftMargin = 0;
+                mPhotoEndParams.bottomMargin = mPhotoEndParams.height;
+                mPhotoEndParams.rightMargin = mPhotoEndParams.width;
+            }
+        }
+        return mPhotoEndParams;
+    }
+
+    private void animatePhotoOpen() {
+        mAnimationListener = new AnimatorListenerAdapter() {
+            private void capturePhotoPos() {
+                mPhotoView.requestLayout();
+                mOriginalPos.left = mPhotoView.getLeft();
+                mOriginalPos.top = mPhotoView.getTop();
+                mOriginalPos.right = mPhotoView.getRight();
+                mOriginalPos.bottom = mPhotoView.getBottom();
+            }
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                capturePhotoPos();
+                if (mPhotoHandler != null) {
+                    mPhotoHandler.onClick(mPhotoView);
+                }
+            }
+
+            @Override
+            public void onAnimationCancel(Animator animation) {
+                capturePhotoPos();
+            }
+        };
+        animatePhoto(getPhotoEndParams());
+    }
+
+    private void closePhotoAndFinish() {
+        mAnimationListener = new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                // After the photo animates down, fade it away and finish.
+                ObjectAnimator anim = ObjectAnimator.ofFloat(
+                        mPhotoView, "alpha", 0f).setDuration(PHOTO_CONTRACT_DURATION);
+                anim.addListener(new AnimatorListenerAdapter() {
+                    @Override
+                    public void onAnimationEnd(Animator animation) {
+                        activityFinish();
+                    }
+                });
+                anim.start();
+            }
+        };
+
+        // TODO: This won't animate in the right way if the rotation has changed since the activity
+        // was first started.
+        animatePhoto(mPhotoStartParams);
+        animateAwayBackground();
+    }
+
+    private void animatePhoto(MarginLayoutParams to) {
+        // Cancel any existing animation.
+        if (mPhotoAnimator != null) {
+            mPhotoAnimator.cancel();
+        }
+
+        mPhotoView.setLayoutParams(to);
+        mAnimationPending = true;
+        mPhotoView.requestLayout();
+    }
+
+    private void animateInBackground() {
+        ObjectAnimator.ofFloat(mBackdrop, "alpha", 0, 0.5f).setDuration(
+                PHOTO_EXPAND_DURATION).start();
+    }
+
+    private void animateAwayBackground() {
+        ObjectAnimator.ofFloat(mBackdrop, "alpha", 0f).setDuration(
+                BACKDROP_FADEOUT_DURATION).start();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        if (mCurrentPhotoFile != null) {
+            outState.putString(KEY_CURRENT_PHOTO_FILE, mCurrentPhotoFile.toString());
+        }
+        outState.putBoolean(KEY_SUB_ACTIVITY_IN_PROGRESS, mSubActivityInProgress);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (mPhotoHandler != null) {
+            mSubActivityInProgress = false;
+            if (mPhotoHandler.handlePhotoActivityResult(requestCode, resultCode, data)) {
+                // Clear out any pending photo result.
+                mPendingPhotoResult = null;
+            } else {
+                // User returning to the photo selection activity.  Re-display options.
+                mPhotoHandler.onClick(mPhotoView);
+            }
+        } else {
+            // Create a pending photo result to be handled when the photo handler is created.
+            mPendingPhotoResult = new PendingPhotoResult(requestCode, resultCode, data);
+        }
+    }
+
+    private void attachPhotoHandler() {
+        // Always provide the same two choices (take a photo with the camera, select a photo
+        // from the gallery), but with slightly different wording.
+        // Note: don't worry about this being a read-only contact; this code will not be invoked.
+        int mode = (mPhotoUri == null) ? PhotoActionPopup.Modes.NO_PHOTO
+                : PhotoActionPopup.Modes.PHOTO_DISALLOW_PRIMARY;
+        // We don't want to provide a choice to remove the photo for two reasons:
+        //   1) the UX designs don't call for it
+        //   2) even if we wanted to, the implementation would be moderately hairy
+        mode &= ~PhotoActionPopup.Flags.REMOVE_PHOTO;
+
+        mPhotoHandler = new PhotoHandler(this, mPhotoView, mode, mState);
+        if (mPendingPhotoResult != null) {
+            mPhotoHandler.handlePhotoActivityResult(mPendingPhotoResult.mRequestCode,
+                    mPendingPhotoResult.mResultCode, mPendingPhotoResult.mData);
+            mPendingPhotoResult = null;
+        } else {
+            animatePhotoOpen();
+        }
+    }
+
+    private final class PhotoHandler extends PhotoSelectionHandler {
+        private PhotoHandler(Context context, View photoView, int photoMode,
+                EntityDeltaList state) {
+            super(context, photoView, photoMode, mIsDirectoryContact, state);
+            setListener(new PhotoListener(context, mIsProfile));
+        }
+
+        private final class PhotoListener extends PhotoActionListener {
+            private final Context mContext;
+            private final boolean mIsProfile;
+            private PhotoListener(Context context, boolean isProfile) {
+                mContext = context;
+                mIsProfile = isProfile;
+            }
+
+            @Override
+            public void startTakePhotoActivity(Intent intent, int requestCode, File photoFile) {
+                mSubActivityInProgress = true;
+                mCurrentPhotoFile = photoFile;
+                startActivityForResult(intent, requestCode);
+            }
+
+            @Override
+            public void startPickFromGalleryActivity(Intent intent, int requestCode,
+                    File photoFile) {
+                mSubActivityInProgress = true;
+                mCurrentPhotoFile = photoFile;
+                startActivityForResult(intent, requestCode);
+            }
+
+            @Override
+            public void onPhotoSelected(Bitmap bitmap) {
+                EntityDeltaList delta = getDeltaForAttachingPhotoToContact();
+                long rawContactId = getWritableEntityId();
+                String filePath = mCurrentPhotoFile.getAbsolutePath();
+                Intent intent = ContactSaveService.createSaveContactIntent(mContext, delta,
+                        "", 0, mIsProfile, PhotoSelectionActivity.class,
+                        ContactEditorActivity.ACTION_SAVE_COMPLETED, rawContactId, filePath);
+                startService(intent);
+                finish();
+            }
+
+            @Override
+            public File getCurrentPhotoFile() {
+                return mCurrentPhotoFile;
+            }
+
+            @Override
+            public void onPhotoSelectionDismissed() {
+                if (!mSubActivityInProgress) {
+                    finish();
+                }
+            }
+        }
+    }
+
+    private static class PendingPhotoResult {
+        private int mRequestCode;
+        private int mResultCode;
+        private Intent mData;
+        private PendingPhotoResult(int requestCode, int resultCode, Intent data) {
+            mRequestCode = requestCode;
+            mResultCode = resultCode;
+            mData = data;
+        }
+    }
+}
diff --git a/src/com/android/contacts/activities/ShowOrCreateActivity.java b/src/com/android/contacts/activities/ShowOrCreateActivity.java
index c60d0fb..2efd6ba 100755
--- a/src/com/android/contacts/activities/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/activities/ShowOrCreateActivity.java
@@ -24,7 +24,6 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.SearchManager;
 import android.content.ComponentName;
 import android.content.DialogInterface;
 import android.content.Intent;
@@ -122,14 +121,12 @@
         // Handle specific query request
         if (Constants.SCHEME_MAILTO.equals(scheme)) {
             mCreateExtras.putString(Intents.Insert.EMAIL, ssp);
-            mCreateExtras.putString(SearchManager.QUERY, ssp);
 
             Uri uri = Uri.withAppendedPath(Email.CONTENT_FILTER_URI, Uri.encode(ssp));
             mQueryHandler.startQuery(QUERY_TOKEN, null, uri, CONTACTS_PROJECTION, null, null, null);
 
         } else if (Constants.SCHEME_TEL.equals(scheme)) {
             mCreateExtras.putString(Intents.Insert.PHONE, ssp);
-            mCreateExtras.putString(SearchManager.QUERY, ssp);
 
             Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, ssp);
             mQueryHandler.startQuery(QUERY_TOKEN, null, uri, PHONES_PROJECTION, null, null, null);
@@ -216,7 +213,6 @@
                         R.string.add_contact_dlg_message_fmt, mCreateDescrip);
 
                 return new AlertDialog.Builder(this, AlertDialog.THEME_HOLO_LIGHT)
-                        .setTitle(R.string.add_contact_dlg_title)
                         .setMessage(message)
                         .setPositiveButton(android.R.string.ok,
                                 new IntentClickListener(this, createIntent))
diff --git a/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java b/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java
index 22b85d7..7b6ae63 100644
--- a/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java
+++ b/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java
@@ -72,6 +72,12 @@
     }
 
     @Override
+    public boolean isEnabled(int position) {
+        // None of history will be clickable.
+        return false;
+    }
+
+    @Override
     public int getCount() {
         return mPhoneCallDetails.length + 1;
     }
diff --git a/src/com/android/contacts/calllog/CallLogFragment.java b/src/com/android/contacts/calllog/CallLogFragment.java
index d9606cb..059436b 100644
--- a/src/com/android/contacts/calllog/CallLogFragment.java
+++ b/src/com/android/contacts/calllog/CallLogFragment.java
@@ -19,7 +19,7 @@
 import com.android.common.io.MoreCloseables;
 import com.android.contacts.ContactsUtils;
 import com.android.contacts.R;
-import com.android.contacts.activities.DialtactsActivity.ViewPagerVisibilityListener;
+import com.android.contacts.util.Constants;
 import com.android.contacts.util.EmptyLoader;
 import com.android.contacts.voicemail.VoicemailStatusHelper;
 import com.android.contacts.voicemail.VoicemailStatusHelper.StatusMessage;
@@ -56,8 +56,8 @@
 /**
  * Displays a list of call log entries.
  */
-public class CallLogFragment extends ListFragment implements ViewPagerVisibilityListener,
-        CallLogQueryHandler.Listener, CallLogAdapter.CallFetcher {
+public class CallLogFragment extends ListFragment
+        implements CallLogQueryHandler.Listener, CallLogAdapter.CallFetcher {
     private static final String TAG = "CallLogFragment";
 
     /**
@@ -69,7 +69,6 @@
     private CallLogQueryHandler mCallLogQueryHandler;
     private boolean mScrollToTop;
 
-    private boolean mShowOptionsMenu;
     /** Whether there is at least one voicemail source installed. */
     private boolean mVoicemailSourcesAvailable = false;
     /** Whether we are currently filtering over voicemail. */
@@ -265,24 +264,20 @@
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         super.onCreateOptionsMenu(menu, inflater);
-        if (mShowOptionsMenu) {
-            inflater.inflate(R.menu.call_log_options, menu);
-        }
+        inflater.inflate(R.menu.call_log_options, menu);
     }
 
     @Override
     public void onPrepareOptionsMenu(Menu menu) {
-        if (mShowOptionsMenu) {
-            final MenuItem itemDeleteAll = menu.findItem(R.id.delete_all);
-            // Check if all the menu items are inflated correctly. As a shortcut, we assume all
-            // menu items are ready if the first item is non-null.
-            if (itemDeleteAll != null) {
-                itemDeleteAll.setEnabled(mAdapter != null && !mAdapter.isEmpty());
-                menu.findItem(R.id.show_voicemails_only).setVisible(
-                        mVoicemailSourcesAvailable && !mShowingVoicemailOnly);
-                menu.findItem(R.id.show_all_calls).setVisible(
-                        mVoicemailSourcesAvailable && mShowingVoicemailOnly);
-            }
+        final MenuItem itemDeleteAll = menu.findItem(R.id.delete_all);
+        // Check if all the menu items are inflated correctly. As a shortcut, we assume all
+        // menu items are ready if the first item is non-null.
+        if (itemDeleteAll != null) {
+            itemDeleteAll.setEnabled(mAdapter != null && !mAdapter.isEmpty());
+            menu.findItem(R.id.show_voicemails_only).setVisible(
+                    mVoicemailSourcesAvailable && !mShowingVoicemailOnly);
+            menu.findItem(R.id.show_all_calls).setVisible(
+                    mVoicemailSourcesAvailable && mShowingVoicemailOnly);
         }
     }
 
@@ -329,8 +324,8 @@
             Intent intent;
             // If "number" is really a SIP address, construct a sip: URI.
             if (PhoneNumberUtils.isUriNumber(number)) {
-                intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                                    Uri.fromParts("sip", number, null));
+                intent = ContactsUtils.getCallIntent(
+                        Uri.fromParts(Constants.SCHEME_SIP, number, null));
             } else {
                 // We're calling a regular PSTN phone number.
                 // Construct a tel: URI, but do some other possible cleanup first.
@@ -342,8 +337,8 @@
                     String countryIso = cursor.getString(CallLogQuery.COUNTRY_ISO);
                     number = mAdapter.getBetterNumberFromContacts(number, countryIso);
                 }
-                intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                                    Uri.fromParts("tel", number, null));
+                intent = ContactsUtils.getCallIntent(
+                        Uri.fromParts(Constants.SCHEME_TEL, number, null));
             }
             intent.setFlags(
                     Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
@@ -357,21 +352,13 @@
     }
 
     @Override
-    public void onVisibilityChanged(boolean visible) {
-        if (mShowOptionsMenu != visible) {
-            mShowOptionsMenu = visible;
-            // Invalidate the options menu since we are changing the list of options shown in it.
-            Activity activity = getActivity();
-            if (activity != null) {
-                activity.invalidateOptionsMenu();
-            }
-        }
-
-        if (visible && isResumed()) {
+    public void setMenuVisibility(boolean menuVisible) {
+        super.setMenuVisibility(menuVisible);
+        if (menuVisible && isResumed()) {
             refreshData();
         }
 
-        if (!visible) {
+        if (!menuVisible) {
             updateOnExit();
         }
     }
@@ -415,7 +402,8 @@
     private void updateOnTransition(boolean onEntry) {
         // We don't want to update any call data when keyguard is on because the user has likely not
         // seen the new calls yet.
-        if (!mKeyguardManager.inKeyguardRestrictedInputMode()) {
+        // This might be called before onCreate() and thus we need to check null explicitly.
+        if (mKeyguardManager != null && !mKeyguardManager.inKeyguardRestrictedInputMode()) {
             // On either of the transitions we reset the new flag and update the notifications.
             // While exiting we additionally consume all missed calls (by marking them as read).
             // This will ensure that they no more appear in the "new" section when we return back.
diff --git a/src/com/android/contacts/calllog/CallLogListItemHelper.java b/src/com/android/contacts/calllog/CallLogListItemHelper.java
index bfedba5..9485b54 100644
--- a/src/com/android/contacts/calllog/CallLogListItemHelper.java
+++ b/src/com/android/contacts/calllog/CallLogListItemHelper.java
@@ -45,7 +45,7 @@
     public CallLogListItemHelper(PhoneCallDetailsHelper phoneCallDetailsHelper,
             PhoneNumberHelper phoneNumberHelper, Resources resources) {
         mPhoneCallDetailsHelper = phoneCallDetailsHelper;
-        mPhoneNumberHelper= phoneNumberHelper;
+        mPhoneNumberHelper = phoneNumberHelper;
         mResources = resources;
     }
 
diff --git a/src/com/android/contacts/calllog/CallLogListItemViews.java b/src/com/android/contacts/calllog/CallLogListItemViews.java
index 741d218..503de43 100644
--- a/src/com/android/contacts/calllog/CallLogListItemViews.java
+++ b/src/com/android/contacts/calllog/CallLogListItemViews.java
@@ -18,6 +18,7 @@
 
 import com.android.contacts.PhoneCallDetailsViews;
 import com.android.contacts.R;
+import com.android.contacts.test.NeededForTesting;
 
 import android.content.Context;
 import android.view.View;
@@ -68,6 +69,7 @@
                 view.findViewById(R.id.call_log_divider));
     }
 
+    @NeededForTesting
     public static CallLogListItemViews createForTest(Context context) {
         return new CallLogListItemViews(
                 new QuickContactBadge(context),
diff --git a/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java b/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java
index c5e8f91..59dfcd4 100644
--- a/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java
+++ b/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java
@@ -90,8 +90,13 @@
         // TODO: Move this into a service, to avoid holding the receiver up.
         final NewCall[] newCalls = mNewCallsQuery.query();
 
+        if (newCalls == null) {
+            // Query failed, just return.
+            return;
+        }
+
         if (newCalls.length == 0) {
-            Log.e(TAG, "No voicemails to notify about: clear the notification.");
+            // No voicemails to notify about: clear the notification.
             clearNotification();
             return;
         }
@@ -243,6 +248,9 @@
             try {
                 cursor = mContentResolver.query(Calls.CONTENT_URI_WITH_VOICEMAIL, PROJECTION,
                         selection, selectionArgs, Calls.DEFAULT_SORT_ORDER);
+                if (cursor == null) {
+                    return null;
+                }
                 NewCall[] newCalls = new NewCall[cursor.getCount()];
                 while (cursor.moveToNext()) {
                     newCalls[cursor.getPosition()] = createNewCallsFromCursor(cursor);
@@ -301,7 +309,7 @@
                 cursor = mContentResolver.query(
                         Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)),
                         PROJECTION, null, null, null);
-                if (!cursor.moveToFirst()) return null;
+                if (cursor == null || !cursor.moveToFirst()) return null;
                 return cursor.getString(DISPLAY_NAME_COLUMN_INDEX);
             } finally {
                 if (cursor != null) {
diff --git a/src/com/android/contacts/calllog/IntentProvider.java b/src/com/android/contacts/calllog/IntentProvider.java
index bfee5ec..7ddfecc 100644
--- a/src/com/android/contacts/calllog/IntentProvider.java
+++ b/src/com/android/contacts/calllog/IntentProvider.java
@@ -17,6 +17,7 @@
 package com.android.contacts.calllog;
 
 import com.android.contacts.CallDetailActivity;
+import com.android.contacts.ContactsUtils;
 
 import android.content.ContentUris;
 import android.content.Context;
@@ -38,16 +39,7 @@
         return new IntentProvider() {
             @Override
             public Intent getIntent(Context context) {
-                // Here, "number" can either be a PSTN phone number or a
-                // SIP address.  So turn it into either a tel: URI or a
-                // sip: URI, as appropriate.
-                Uri uri;
-                if (PhoneNumberUtils.isUriNumber(number)) {
-                    uri = Uri.fromParts("sip", number, null);
-                } else {
-                    uri = Uri.fromParts("tel", number, null);
-                }
-                return new Intent(Intent.ACTION_CALL_PRIVILEGED, uri);
+                return ContactsUtils.getCallIntent(number);
             }
         };
     }
diff --git a/src/com/android/contacts/calllog/PhoneNumberHelper.java b/src/com/android/contacts/calllog/PhoneNumberHelper.java
index 20031b2..af7c2f6 100644
--- a/src/com/android/contacts/calllog/PhoneNumberHelper.java
+++ b/src/com/android/contacts/calllog/PhoneNumberHelper.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts.calllog;
 
+import com.android.contacts.ContactsUtils;
 import com.android.contacts.R;
 import com.android.internal.telephony.CallerInfo;
 
@@ -76,23 +77,18 @@
         }
     }
 
-    /** Returns a URI that can be used to place a call to this number. */
-    public Uri getCallUri(String number) {
-        if (isVoicemailNumber(number)) {
-            return Uri.parse("voicemail:x");
-        }
-        if (isSipNumber(number)) {
-             return Uri.fromParts("sip", number, null);
-        }
-         return Uri.fromParts("tel", number, null);
-     }
-
-    /** Returns true if the given number is the number of the configured voicemail. */
+    /**
+     * Returns true if the given number is the number of the configured voicemail.
+     * To be able to mock-out this, it is not a static method.
+     */
     public boolean isVoicemailNumber(CharSequence number) {
         return PhoneNumberUtils.isVoiceMailNumber(number.toString());
     }
 
-    /** Returns true if the given number is a SIP address. */
+    /**
+     * Returns true if the given number is a SIP address.
+     * To be able to mock-out this, it is not a static method.
+     */
     public boolean isSipNumber(CharSequence number) {
         return PhoneNumberUtils.isUriNumber(number.toString());
     }
diff --git a/src/com/android/contacts/detail/CarouselTab.java b/src/com/android/contacts/detail/CarouselTab.java
index 677f0ad..cdcf6b2 100644
--- a/src/com/android/contacts/detail/CarouselTab.java
+++ b/src/com/android/contacts/detail/CarouselTab.java
@@ -73,8 +73,9 @@
 
     @Override
     public void disableTouchInterceptor() {
-        // This shouldn't be called because there is no need to disable the touch interceptor if
-        // there is no content within the tab that needs to be clicked.
+        if (mTouchInterceptLayer != null) {
+            mTouchInterceptLayer.setVisibility(View.GONE);
+        }
     }
 
     @Override
diff --git a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
index b81cebf..912d7fb 100644
--- a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
+++ b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
@@ -20,6 +20,8 @@
 import com.android.contacts.ContactLoader.Result;
 import com.android.contacts.ContactPhotoManager;
 import com.android.contacts.R;
+import com.android.contacts.activities.PhotoSelectionActivity;
+import com.android.contacts.model.EntityDeltaList;
 import com.android.contacts.preference.ContactsPreferences;
 import com.android.contacts.util.ContactBadgeUtil;
 import com.android.contacts.util.HtmlUtils;
@@ -32,12 +34,14 @@
 import android.content.Context;
 import android.content.Entity;
 import android.content.Entity.NamedContentValues;
+import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.res.Resources;
 import android.content.res.Resources.NotFoundException;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.provider.ContactsContract;
@@ -51,6 +55,7 @@
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.view.animation.AccelerateInterpolator;
 import android.view.animation.AlphaAnimation;
@@ -192,11 +197,20 @@
     /**
      * Sets the contact photo to display in the given {@link ImageView}. If bitmap is null, the
      * default placeholder image is shown.
+     * @param context The context.
+     * @param contactData The contact loader result.
+     * @param photoView The photo view that will host the image and act as the basis for the
+     *     photo selector.
+     * @param expandPhotoOnClick Whether the photo should be expanded to fill more of the screen
+     *     when clicked.
+     * @return The onclick listener for the photo.  When clicked, a photo selection activity will
+     *     be launched.
      */
-    public static void setPhoto(Context context, Result contactData, ImageView photoView) {
+    public static OnClickListener setPhoto(Context context, Result contactData,
+            ImageView photoView, boolean expandPhotoOnClick) {
         if (contactData.isLoadingPhoto()) {
             photoView.setImageBitmap(null);
-            return;
+            return null;
         }
         byte[] photo = contactData.getPhotoBinaryData();
         Bitmap bitmap = photo != null ? BitmapFactory.decodeByteArray(photo, 0, photo.length)
@@ -209,6 +223,61 @@
             photoView.startAnimation(animation);
         }
         photoView.setImageBitmap(bitmap);
+
+        // Set up the photo to display a full-screen photo selection activity when clicked.
+        OnClickListener clickListener = new PhotoClickListener(context, contactData, bitmap,
+                photo, expandPhotoOnClick);
+        photoView.setOnClickListener(clickListener);
+        return clickListener;
+    }
+
+    private static final class PhotoClickListener implements OnClickListener {
+
+        private final Context mContext;
+        private final Result mContactData;
+        private final Bitmap mPhotoBitmap;
+        private final byte[] mPhotoBytes;
+        private final boolean mExpandPhotoOnClick;
+        public PhotoClickListener(Context context, Result contactData, Bitmap photoBitmap,
+                byte[] photoBytes, boolean expandPhotoOnClick) {
+            mContext = context;
+            mContactData = contactData;
+            mPhotoBitmap = photoBitmap;
+            mPhotoBytes = photoBytes;
+            mExpandPhotoOnClick = expandPhotoOnClick;
+        }
+
+        @Override
+        public void onClick(View v) {
+            // Assemble the intent.
+            EntityDeltaList delta = EntityDeltaList.fromIterator(
+                    mContactData.getEntities().iterator());
+
+            // Find location and bounds of target view, adjusting based on the
+            // assumed local density.
+            final float appScale =
+                    mContext.getResources().getCompatibilityInfo().applicationScale;
+            final int[] pos = new int[2];
+            v.getLocationOnScreen(pos);
+
+            final Rect rect = new Rect();
+            rect.left = (int) (pos[0] * appScale + 0.5f);
+            rect.top = (int) (pos[1] * appScale + 0.5f);
+            rect.right = (int) ((pos[0] + v.getWidth()) * appScale + 0.5f);
+            rect.bottom = (int) ((pos[1] + v.getHeight()) * appScale + 0.5f);
+
+            Uri photoUri = null;
+            if (mContactData.getPhotoUri() != null) {
+                photoUri = Uri.parse(mContactData.getPhotoUri());
+            }
+            Intent photoSelectionIntent = PhotoSelectionActivity.buildIntent(mContext,
+                    photoUri, mPhotoBitmap, mPhotoBytes, rect, delta, mContactData.isUserProfile(),
+                    mContactData.isDirectoryEntry(), mExpandPhotoOnClick);
+            // Cache the bitmap directly, so the activity can pull it from the photo manager.
+            ContactPhotoManager.getInstance(mContext).cacheBitmap(photoUri, mPhotoBitmap,
+                    mPhotoBytes);
+            mContext.startActivity(photoSelectionIntent);
+        }
     }
 
     /**
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 26d240f..7c79a4c 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -40,8 +40,8 @@
 import com.android.contacts.util.Constants;
 import com.android.contacts.util.DataStatus;
 import com.android.contacts.util.DateUtils;
-import com.android.contacts.util.StructuredPostalUtils;
 import com.android.contacts.util.PhoneCapabilityTester;
+import com.android.contacts.util.StructuredPostalUtils;
 import com.android.contacts.widget.TransitionAnimationView;
 import com.android.internal.telephony.ITelephony;
 import com.google.common.annotations.VisibleForTesting;
@@ -84,7 +84,6 @@
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Directory;
 import android.provider.ContactsContract.DisplayNameSources;
-import android.provider.ContactsContract.Intents.UI;
 import android.provider.ContactsContract.PhoneLookup;
 import android.provider.ContactsContract.RawContacts;
 import android.provider.ContactsContract.StatusUpdates;
@@ -133,13 +132,6 @@
     private static final String KEY_CONTACT_URI = "contactUri";
     private static final String KEY_LIST_STATE = "liststate";
 
-    // TODO: Make maxLines a field in {@link DataKind}
-    private static final int WEBSITE_MAX_LINES = 1;
-    private static final int SIP_ADDRESS_MAX_LINES= 1;
-    private static final int POSTAL_ADDRESS_MAX_LINES = 10;
-    private static final int GROUP_MAX_LINES = 10;
-    private static final int NOTE_MAX_LINES = 100;
-
     private Context mContext;
     private View mView;
     private OnScrollListener mVerticalScrollListener;
@@ -147,7 +139,8 @@
     private Listener mListener;
 
     private ContactLoader.Result mContactData;
-    private ImageView mStaticPhotoView;
+    private ViewGroup mStaticPhotoContainer;
+    private View mPhotoTouchOverlay;
     private ListView mListView;
     private ViewAdapter mAdapter;
     private Uri mPrimaryPhoneUri = null;
@@ -155,14 +148,14 @@
 
     private Button mQuickFixButton;
     private QuickFix mQuickFix;
-    private int mNumPhoneNumbers = 0;
     private String mDefaultCountryIso;
     private boolean mContactHasSocialUpdates;
     private boolean mShowStaticPhoto = true;
 
     private final QuickFix[] mPotentialQuickFixes = new QuickFix[] {
             new MakeLocalCopyQuickFix(),
-            new AddToMyContactsQuickFix() };
+            new AddToMyContactsQuickFix()
+    };
 
     /**
      * Device capability: Set during buildEntries and used in the long-press context menu
@@ -280,7 +273,8 @@
 
         mInflater = inflater;
 
-        mStaticPhotoView = (ImageView) mView.findViewById(R.id.photo);
+        mStaticPhotoContainer = (ViewGroup) mView.findViewById(R.id.static_photo_container);
+        mPhotoTouchOverlay = mView.findViewById(R.id.photo_touch_intercept_overlay);
 
         mListView = (ListView) mView.findViewById(android.R.id.list);
         mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
@@ -442,16 +436,22 @@
         mContactHasSocialUpdates = !mContactData.getStreamItems().isEmpty();
 
         // Setup the photo if applicable
-        if (mStaticPhotoView != null) {
-            // The presence of a static photo view is not sufficient to determine whether or not
-            // we should show the photo. Check the mShowStaticPhoto flag which can be set by an
+        if (mStaticPhotoContainer != null) {
+            // The presence of a static photo container is not sufficient to determine whether or
+            // not we should show the photo. Check the mShowStaticPhoto flag which can be set by an
             // outside class depending on screen size, layout, and whether the contact has social
             // updates or not.
             if (mShowStaticPhoto) {
-                mStaticPhotoView.setVisibility(View.VISIBLE);
-                ContactDetailDisplayUtils.setPhoto(mContext, mContactData, mStaticPhotoView);
+                mStaticPhotoContainer.setVisibility(View.VISIBLE);
+                ImageView photoView = (ImageView) mStaticPhotoContainer.findViewById(R.id.photo);
+                OnClickListener listener = ContactDetailDisplayUtils.setPhoto(mContext,
+                        mContactData, photoView, false);
+                if (mPhotoTouchOverlay != null) {
+                    mPhotoTouchOverlay.setVisibility(View.VISIBLE);
+                    mPhotoTouchOverlay.setOnClickListener(listener);
+                }
             } else {
-                mStaticPhotoView.setVisibility(View.GONE);
+                mStaticPhotoContainer.setVisibility(View.GONE);
             }
         }
 
@@ -541,7 +541,6 @@
         mRawContactIds.clear();
 
         mPrimaryPhoneUri = null;
-        mNumPhoneNumbers = 0;
 
         final AccountTypeManager accountTypes = AccountTypeManager.getInstance(mContext);
 
@@ -586,6 +585,7 @@
                 final DetailViewEntry entry = DetailViewEntry.fromValues(mContext, mimeType, kind,
                         dataId, entryValues, mContactData.isDirectoryEntry(),
                         mContactData.getDirectoryId());
+                entry.maxLines = kind.maxLinesForDisplay;
 
                 final boolean hasData = !TextUtils.isEmpty(entry.data);
                 Integer superPrimary = entryValues.getAsInteger(Data.IS_SUPER_PRIMARY);
@@ -595,13 +595,12 @@
                     // Always ignore the name. It is shown in the header if set
                 } else if (Phone.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
                     // Build phone entries
-                    mNumPhoneNumbers++;
                     String phoneNumberE164 =
                             entryValues.getAsString(PhoneLookup.NORMALIZED_NUMBER);
                     entry.data = PhoneNumberUtils.formatNumber(
                             entry.data, phoneNumberE164, mDefaultCountryIso);
-                    final Intent phoneIntent = mHasPhone ? new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                            Uri.fromParts(Constants.SCHEME_TEL, entry.data, null)) : null;
+                    final Intent phoneIntent = mHasPhone ?
+                            ContactsUtils.getCallIntent(entry.data) : null;
                     final Intent smsIntent = mHasSms ? new Intent(Intent.ACTION_SENDTO,
                             Uri.fromParts(Constants.SCHEME_SMSTO, entry.data, null)) : null;
 
@@ -641,22 +640,22 @@
                                 imKind, dataId, entryValues, mContactData.isDirectoryEntry(),
                                 mContactData.getDirectoryId());
                         buildImActions(mContext, imEntry, entryValues);
-                        imEntry.applyStatus(status, false);
+                        imEntry.setPresence(status.getPresence());
+                        imEntry.maxLines = imKind.maxLinesForDisplay;
                         mImEntries.add(imEntry);
                     }
                 } else if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
                     // Build postal entries
-                    entry.maxLines = POSTAL_ADDRESS_MAX_LINES;
                     entry.intent = StructuredPostalUtils.getViewPostalAddressIntent(entry.data);
                     mPostalEntries.add(entry);
                 } else if (Im.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
                     // Build IM entries
                     buildImActions(mContext, entry, entryValues);
 
-                    // Apply presence and status details when available
+                    // Apply presence when available
                     final DataStatus status = mContactData.getStatuses().get(entry.id);
                     if (status != null) {
-                        entry.applyStatus(status, false);
+                        entry.setPresence(status.getPresence());
                     }
                     mImEntries.add(entry);
                 } else if (Organization.CONTENT_ITEM_TYPE.equals(mimeType)) {
@@ -678,12 +677,10 @@
                 } else if (Note.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
                     // Build note entries
                     entry.uri = null;
-                    entry.maxLines = NOTE_MAX_LINES;
                     mNoteEntries.add(entry);
                 } else if (Website.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
                     // Build Website entries
                     entry.uri = null;
-                    entry.maxLines = WEBSITE_MAX_LINES;
                     try {
                         WebAddress webAddress = new WebAddress(entry.data);
                         entry.intent = new Intent(Intent.ACTION_VIEW,
@@ -695,9 +692,8 @@
                 } else if (SipAddress.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
                     // Build SipAddress entries
                     entry.uri = null;
-                    entry.maxLines = SIP_ADDRESS_MAX_LINES;
                     if (mHasSip) {
-                        entry.intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
+                        entry.intent = ContactsUtils.getCallIntent(
                                 Uri.fromParts(Constants.SCHEME_SIP, entry.data, null));
                     } else {
                         entry.intent = null;
@@ -759,7 +755,6 @@
             entry.mimetype = GroupMembership.MIMETYPE;
             entry.kind = mContext.getString(R.string.groupsLabel);
             entry.data = sb.toString();
-            entry.maxLines = GROUP_MAX_LINES;
             mGroupEntries.add(entry);
         }
     }
@@ -1229,8 +1224,6 @@
         public int presence = -1;
         public int chatCapability = 0;
 
-        public CharSequence footerLine = null;
-
         private boolean mIsInSubSection = false;
 
         DetailViewEntry() {
@@ -1281,21 +1274,8 @@
             return entry;
         }
 
-        /**
-         * Apply given {@link DataStatus} values over this {@link DetailViewEntry}
-         *
-         * @param fillData When true, the given status replaces {@link #data}
-         *            and {@link #footerLine}. Otherwise only {@link #presence}
-         *            is updated.
-         */
-        public DetailViewEntry applyStatus(DataStatus status, boolean fillData) {
-            presence = status.getPresence();
-            if (fillData && status.isValid()) {
-                this.data = status.getStatus().toString();
-                this.footerLine = status.getTimestampLabel(context);
-            }
-
-            return this;
+        public void setPresence(int presence) {
+            this.presence = presence;
         }
 
         public void setIsInSubSection(boolean isInSubSection) {
@@ -1371,10 +1351,11 @@
     /**
      * Cache of the children views for a view that displays a header view entry.
      */
-    private static class HeaderViewCache {
+    private static class HeaderViewCache implements ViewOverlay {
         public final TextView displayNameView;
         public final TextView companyView;
         public final ImageView photoView;
+        public final View photoOverlayView;
         public final CheckBox starredView;
         public final int layoutResourceId;
 
@@ -1382,9 +1363,30 @@
             displayNameView = (TextView) view.findViewById(R.id.name);
             companyView = (TextView) view.findViewById(R.id.company);
             photoView = (ImageView) view.findViewById(R.id.photo);
+            photoOverlayView = view.findViewById(R.id.photo_touch_intercept_overlay);
             starredView = (CheckBox) view.findViewById(R.id.star);
             layoutResourceId = layoutResourceInflated;
         }
+
+        @Override
+        public void setAlphaLayerValue(float alpha) {
+            // Nothing to do.
+        }
+
+        @Override
+        public void enableTouchInterceptor(OnClickListener clickListener) {
+            if (photoOverlayView != null) {
+                photoOverlayView.setVisibility(View.VISIBLE);
+                photoOverlayView.setOnClickListener(clickListener);
+            }
+        }
+
+        @Override
+        public void disableTouchInterceptor() {
+            if (photoOverlayView != null) {
+                photoOverlayView.setVisibility(View.GONE);
+            }
+        }
     }
 
     /**
@@ -1407,7 +1409,6 @@
     private static class DetailViewCache {
         public final TextView type;
         public final TextView data;
-        public final TextView footer;
         public final ImageView presenceIcon;
         public final ImageView secondaryActionButton;
         public final View actionsViewContainer;
@@ -1421,7 +1422,6 @@
                 OnClickListener secondaryActionClickListener) {
             type = (TextView) view.findViewById(R.id.type);
             data = (TextView) view.findViewById(R.id.data);
-            footer = (TextView) view.findViewById(R.id.footer);
             primaryIndicator = view.findViewById(R.id.primary_indicator);
             presenceIcon = (ImageView) view.findViewById(R.id.presence_icon);
 
@@ -1498,7 +1498,10 @@
 
             // Set the photo if it should be displayed
             if (viewCache.photoView != null) {
-                ContactDetailDisplayUtils.setPhoto(mContext, mContactData, viewCache.photoView);
+                OnClickListener listener = ContactDetailDisplayUtils.setPhoto(mContext,
+                        mContactData, viewCache.photoView,
+                        !PhoneCapabilityTester.isUsingTwoPanes(mContext));
+                viewCache.enableTouchInterceptor(listener);
             }
 
             // Set the starred state if it should be displayed
@@ -1606,14 +1609,6 @@
             views.data.setText(entry.data);
             setMaxLines(views.data, entry.maxLines);
 
-            // Set the footer
-            if (!TextUtils.isEmpty(entry.footerLine)) {
-                views.footer.setText(entry.footerLine);
-                views.footer.setVisibility(View.VISIBLE);
-            } else {
-                views.footer.setVisibility(View.GONE);
-            }
-
             // Set the default contact method
             views.primaryIndicator.setVisibility(entry.isPrimary ? View.VISIBLE : View.GONE);
 
@@ -1903,9 +1898,7 @@
                     }
                 } else if (mPrimaryPhoneUri != null) {
                     // There isn't anything selected, call the default number
-                    final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                            mPrimaryPhoneUri);
-                    mContext.startActivity(intent);
+                    mContext.startActivity(ContactsUtils.getCallIntent(mPrimaryPhoneUri));
                     return true;
                 }
                 return false;
@@ -2007,7 +2000,7 @@
             // should update the ui
             final Intent intent = ContactSaveService.createSaveContactIntent(getActivity(),
                     contactDeltaList, "", 0, false, getActivity().getClass(),
-                    Intent.ACTION_VIEW);
+                    Intent.ACTION_VIEW, null);
             getActivity().startService(intent);
         }
     }
@@ -2136,17 +2129,14 @@
     private final static class InvitableAccountTypesAdapter extends BaseAdapter {
         private final Context mContext;
         private final LayoutInflater mInflater;
-        private final ContactLoader.Result mContactData;
         private final ArrayList<AccountType> mAccountTypes;
 
         public InvitableAccountTypesAdapter(Context context, ContactLoader.Result contactData) {
             mContext = context;
             mInflater = LayoutInflater.from(context);
-            mContactData = contactData;
             final List<AccountType> types = contactData.getInvitableAccountTypes();
             mAccountTypes = new ArrayList<AccountType>(types.size());
 
-            AccountTypeManager manager = AccountTypeManager.getInstance(context);
             for (int i = 0; i < types.size(); i++) {
                 mAccountTypes.add(types.get(i));
             }
diff --git a/src/com/android/contacts/detail/ContactDetailTabCarousel.java b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
index 045e900..186cedd 100644
--- a/src/com/android/contacts/detail/ContactDetailTabCarousel.java
+++ b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
@@ -18,7 +18,9 @@
 
 import com.android.contacts.ContactLoader;
 import com.android.contacts.R;
+import com.android.contacts.util.PhoneCapabilityTester;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.res.Resources;
 import android.util.AttributeSet;
@@ -47,9 +49,14 @@
     /** Tab height as defined as a fraction of the screen width */
     private float mTabHeightScreenWidthFraction;
 
+    /** Height in pixels of the shadow under the tab carousel */
+    private int mTabShadowHeight;
+
     private ImageView mPhotoView;
     private TextView mStatusView;
     private ImageView mStatusPhotoView;
+    private boolean mHasPhoto;
+    private OnClickListener mPhotoClickListener;
 
     private Listener mListener;
 
@@ -89,6 +96,8 @@
         Resources resources = mContext.getResources();
         mTabDisplayLabelHeight = resources.getDimensionPixelSize(
                 R.dimen.detail_tab_carousel_tab_label_height);
+        mTabShadowHeight = resources.getDimensionPixelSize(
+                R.dimen.detail_contact_photo_shadow_height);
         mTabWidthScreenWidthFraction = resources.getFraction(
                 R.fraction.tab_width_screen_width_percentage, 1, 1);
         mTabHeightScreenWidthFraction = resources.getFraction(
@@ -125,7 +134,7 @@
         // from the total length of the tabs.
         mAllowedHorizontalScrollLength = tabWidth * TAB_COUNT - screenWidth;
 
-        int tabHeight = (int) (screenWidth * mTabHeightScreenWidthFraction);
+        int tabHeight = (int) (screenWidth * mTabHeightScreenWidthFraction) + mTabShadowHeight;
         // Set the child {@link LinearLayout} to be TAB_COUNT * the computed tab width so that the
         // {@link LinearLayout}'s children (which are the tabs) will evenly split that width.
         if (getChildCount() > 0) {
@@ -153,7 +162,11 @@
     private final OnClickListener mAboutTabTouchInterceptListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
-            mListener.onTabSelected(TAB_INDEX_ABOUT);
+            if (mCurrentTab == TAB_INDEX_ABOUT && mPhotoClickListener != null) {
+                mPhotoClickListener.onClick(v);
+            } else {
+                mListener.onTabSelected(TAB_INDEX_ABOUT);
+            }
         }
     };
 
@@ -256,9 +269,11 @@
             case TAB_INDEX_ABOUT:
                 mAboutTab.showSelectedState();
                 mUpdatesTab.showDeselectedState();
+                mUpdatesTab.enableTouchInterceptor(mUpdatesTabTouchInterceptListener);
                 break;
             case TAB_INDEX_UPDATES:
                 mUpdatesTab.showSelectedState();
+                mUpdatesTab.disableTouchInterceptor();
                 mAboutTab.showDeselectedState();
                 break;
             default:
@@ -275,10 +290,12 @@
         if (contactData == null) {
             return;
         }
+        mHasPhoto = contactData.getPhotoUri() != null;
 
         // TODO: Move this into the {@link CarouselTab} class when the updates fragment code is more
         // finalized
-        ContactDetailDisplayUtils.setPhoto(mContext, contactData, mPhotoView);
+        mPhotoClickListener = ContactDetailDisplayUtils.setPhoto(mContext, contactData, mPhotoView,
+                !PhoneCapabilityTester.isUsingTwoPanes(mContext));
         ContactDetailDisplayUtils.setSocialSnippet(mContext, contactData, mStatusView,
                 mStatusPhotoView);
     }
diff --git a/src/com/android/contacts/detail/ContactDetailViewPagerAdapter.java b/src/com/android/contacts/detail/ContactDetailViewPagerAdapter.java
index edcfc39..c708dc8 100644
--- a/src/com/android/contacts/detail/ContactDetailViewPagerAdapter.java
+++ b/src/com/android/contacts/detail/ContactDetailViewPagerAdapter.java
@@ -19,6 +19,7 @@
 import android.support.v4.view.PagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.view.View;
+import android.view.ViewGroup;
 
 /**
  * Adapter for the {@link ViewPager} for the contact detail page for a contact in 2 cases:
@@ -88,11 +89,11 @@
     }
 
     @Override
-    public void startUpdate(View container) {
+    public void startUpdate(ViewGroup container) {
     }
 
     @Override
-    public Object instantiateItem(View container, int position) {
+    public Object instantiateItem(ViewGroup container, int position) {
         switch (position) {
             case INDEX_ABOUT_FRAGMENT:
                 mAboutFragmentView.setVisibility(View.VISIBLE);
@@ -105,12 +106,12 @@
     }
 
     @Override
-    public void destroyItem(View container, int position, Object object) {
+    public void destroyItem(ViewGroup container, int position, Object object) {
         ((View) object).setVisibility(View.GONE);
     }
 
     @Override
-    public void finishUpdate(View container) {
+    public void finishUpdate(ViewGroup container) {
     }
 
     @Override
diff --git a/src/com/android/contacts/detail/PhotoSelectionHandler.java b/src/com/android/contacts/detail/PhotoSelectionHandler.java
new file mode 100644
index 0000000..1423c65
--- /dev/null
+++ b/src/com/android/contacts/detail/PhotoSelectionHandler.java
@@ -0,0 +1,373 @@
+/*
+ * Copyright (C) 2011 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.detail;
+
+import com.android.contacts.R;
+import com.android.contacts.editor.PhotoActionPopup;
+import com.android.contacts.model.AccountType;
+import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.model.EntityDelta;
+import com.android.contacts.model.EntityDelta.ValuesDelta;
+import com.android.contacts.model.EntityDeltaList;
+import com.android.contacts.model.EntityModifier;
+
+import android.app.Activity;
+import android.content.ActivityNotFoundException;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.media.MediaScannerConnection;
+import android.net.Uri;
+import android.os.Environment;
+import android.provider.ContactsContract.CommonDataKinds.Photo;
+import android.provider.ContactsContract.DisplayPhoto;
+import android.provider.ContactsContract.RawContacts;
+import android.provider.MediaStore;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.ListPopupWindow;
+import android.widget.PopupWindow.OnDismissListener;
+import android.widget.Toast;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Handles displaying a photo selection popup for a given photo view and dealing with the results
+ * that come back.
+ */
+public class PhotoSelectionHandler implements OnClickListener {
+
+    private static final String TAG = PhotoSelectionHandler.class.getSimpleName();
+
+    private static final File PHOTO_DIR = new File(
+            Environment.getExternalStorageDirectory() + "/DCIM/Camera");
+
+    private static final String PHOTO_DATE_FORMAT = "'IMG'_yyyyMMdd_HHmmss";
+
+    private static final int REQUEST_CODE_CAMERA_WITH_DATA = 1001;
+    private static final int REQUEST_CODE_PHOTO_PICKED_WITH_DATA = 1002;
+
+    private final Context mContext;
+    private final View mPhotoView;
+    private final int mPhotoMode;
+    private final int mPhotoPickSize;
+    private final EntityDeltaList mState;
+    private final boolean mIsDirectoryContact;
+    private ListPopupWindow mPopup;
+    private AccountType mWritableAccount;
+    private PhotoActionListener mListener;
+
+    public PhotoSelectionHandler(Context context, View photoView, int photoMode,
+            boolean isDirectoryContact, EntityDeltaList state) {
+        mContext = context;
+        mPhotoView = photoView;
+        mPhotoMode = photoMode;
+        mIsDirectoryContact = isDirectoryContact;
+        mState = state;
+        mPhotoPickSize = getPhotoPickSize();
+    }
+
+    public void destroy() {
+        if (mPopup != null) {
+            mPopup.dismiss();
+        }
+    }
+
+    public PhotoActionListener getListener() {
+        return mListener;
+    }
+
+    public void setListener(PhotoActionListener listener) {
+        mListener = listener;
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (mListener != null) {
+            if (getWritableEntityIndex() != -1) {
+                mPopup = PhotoActionPopup.createPopupMenu(
+                        mContext, mPhotoView, mListener, mPhotoMode);
+                mPopup.setOnDismissListener(new OnDismissListener() {
+                    @Override
+                    public void onDismiss() {
+                        mListener.onPhotoSelectionDismissed();
+                    }
+                });
+                mPopup.show();
+            }
+        }
+    }
+
+    /**
+     * Attempts to handle the given activity result.  Returns whether this handler was able to
+     * process the result successfully.
+     * @param requestCode The request code.
+     * @param resultCode The result code.
+     * @param data The intent that was returned.
+     * @return Whether the handler was able to process the result.
+     */
+    public boolean handlePhotoActivityResult(int requestCode, int resultCode, Intent data) {
+        if (resultCode == Activity.RESULT_OK) {
+            switch (requestCode) {
+                case REQUEST_CODE_PHOTO_PICKED_WITH_DATA: {
+                    Bitmap bitmap = BitmapFactory.decodeFile(
+                            mListener.getCurrentPhotoFile().getAbsolutePath());
+                    mListener.onPhotoSelected(bitmap);
+                    return true;
+                }
+                case REQUEST_CODE_CAMERA_WITH_DATA: {
+                    doCropPhoto(mListener.getCurrentPhotoFile());
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Return the index of the first entity in the contact data that belongs to a contact-writable
+     * account, or -1 if no such entity exists.
+     */
+    private int getWritableEntityIndex() {
+        // Directory entries are non-writable.
+        if (mIsDirectoryContact) {
+            return -1;
+        }
+
+        // Find the first writable entity.
+        int entityIndex = 0;
+        for (EntityDelta delta : mState) {
+            ContentValues entityValues = delta.getValues().getCompleteValues();
+            String type = entityValues.getAsString(RawContacts.ACCOUNT_TYPE);
+            String dataSet = entityValues.getAsString(RawContacts.DATA_SET);
+            AccountType accountType = AccountTypeManager.getInstance(mContext).getAccountType(
+                    type, dataSet);
+            if (accountType.areContactsWritable()) {
+                mWritableAccount = accountType;
+                return entityIndex;
+            }
+            entityIndex++;
+        }
+        return -1;
+    }
+
+    /**
+     * Return the raw-contact id of the first entity in the contact data that belongs to a
+     * contact-writable account, or -1 if no such entity exists.
+     */
+    protected long getWritableEntityId() {
+        int index = getWritableEntityIndex();
+        if (index == -1) return -1;
+        return mState.get(index).getValues().getId();
+    }
+
+    /**
+     * Utility method to retrieve the entity delta for attaching the given bitmap to the contact.
+     * This will attach the photo to the first contact-writable account that provided data to the
+     * contact.  It is the caller's responsibility to apply the delta.
+     * @param bitmap The photo to use.
+     * @return An entity delta list that can be applied to associate the bitmap with the contact,
+     *     or null if the photo could not be parsed or none of the accounts associated with the
+     *     contact are writable.
+     */
+    public EntityDeltaList getDeltaForAttachingPhotoToContact() {
+        // Find the first writable entity.
+        int writableEntityIndex = getWritableEntityIndex();
+        if (writableEntityIndex != -1) {
+            // Note - guaranteed to have contact data if we have a writable entity index.
+            EntityDelta delta = mState.get(writableEntityIndex);
+            ValuesDelta child = EntityModifier.ensureKindExists(
+                    delta, mWritableAccount, Photo.CONTENT_ITEM_TYPE);
+            child.setFromTemplate(false);
+            child.put(Photo.IS_SUPER_PRIMARY, 1);
+
+            return mState;
+        }
+        return null;
+    }
+
+    /**
+     * Sends a newly acquired photo to Gallery for cropping
+     */
+    private void doCropPhoto(File f) {
+        try {
+            // Add the image to the media store
+            MediaScannerConnection.scanFile(
+                    mContext,
+                    new String[] { f.getAbsolutePath() },
+                    new String[] { null },
+                    null);
+
+            // Launch gallery to crop the photo
+            final Intent intent = getCropImageIntent(f);
+            mListener.startPickFromGalleryActivity(intent, REQUEST_CODE_PHOTO_PICKED_WITH_DATA, f);
+        } catch (Exception e) {
+            Log.e(TAG, "Cannot crop image", e);
+            Toast.makeText(mContext, R.string.photoPickerNotFoundText, Toast.LENGTH_LONG).show();
+        }
+    }
+
+    private String getPhotoFileName() {
+        Date date = new Date(System.currentTimeMillis());
+        SimpleDateFormat dateFormat = new SimpleDateFormat(PHOTO_DATE_FORMAT);
+        return dateFormat.format(date) + ".jpg";
+    }
+
+    private File getPhotoFile() {
+        PHOTO_DIR.mkdirs();
+        return new File(PHOTO_DIR, getPhotoFileName());
+    }
+
+    private int getPhotoPickSize() {
+        // Note that this URI is safe to call on the UI thread.
+        Cursor c = mContext.getContentResolver().query(DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI,
+                new String[]{DisplayPhoto.DISPLAY_MAX_DIM}, null, null, null);
+        try {
+            c.moveToFirst();
+            return c.getInt(0);
+        } finally {
+            c.close();
+        }
+    }
+
+    /**
+     * Constructs an intent for picking a photo from Gallery, cropping it and returning the bitmap.
+     */
+    private Intent getPhotoPickIntent(File photoFile) {
+        Uri photoUri = Uri.fromFile(photoFile);
+        Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
+        intent.setType("image/*");
+        intent.putExtra("crop", "true");
+        intent.putExtra("aspectX", 1);
+        intent.putExtra("aspectY", 1);
+        intent.putExtra("outputX", mPhotoPickSize);
+        intent.putExtra("outputY", mPhotoPickSize);
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
+        return intent;
+    }
+
+    /**
+     * Constructs an intent for image cropping.
+     */
+    private Intent getCropImageIntent(File photoFile) {
+        Uri photoUri = Uri.fromFile(photoFile);
+        Intent intent = new Intent("com.android.camera.action.CROP");
+        intent.setDataAndType(photoUri, "image/*");
+        intent.putExtra("crop", "true");
+        intent.putExtra("aspectX", 1);
+        intent.putExtra("aspectY", 1);
+        intent.putExtra("outputX", mPhotoPickSize);
+        intent.putExtra("outputY", mPhotoPickSize);
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
+        return intent;
+    }
+
+    /**
+     * Constructs an intent for capturing a photo and storing it in a temporary file.
+     */
+    public static Intent getTakePhotoIntent(File f) {
+        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
+        return intent;
+    }
+
+    public abstract class PhotoActionListener implements PhotoActionPopup.Listener {
+        @Override
+        public void onUseAsPrimaryChosen() {
+            // No default implementation.
+        }
+
+        @Override
+        public void onRemovePictureChosen() {
+            // No default implementation.
+        }
+
+        @Override
+        public void onTakePhotoChosen() {
+            try {
+                // Launch camera to take photo for selected contact
+                File f = getPhotoFile();
+                final Intent intent = getTakePhotoIntent(f);
+                startTakePhotoActivity(intent, REQUEST_CODE_CAMERA_WITH_DATA, f);
+            } catch (ActivityNotFoundException e) {
+                Toast.makeText(mContext, R.string.photoPickerNotFoundText,
+                        Toast.LENGTH_LONG).show();
+            }
+        }
+
+        @Override
+        public void onPickFromGalleryChosen() {
+            try {
+                // Launch picker to choose photo for selected contact
+                File f = getPhotoFile();
+                final Intent intent = getPhotoPickIntent(f);
+                startPickFromGalleryActivity(intent, REQUEST_CODE_PHOTO_PICKED_WITH_DATA, f);
+            } catch (ActivityNotFoundException e) {
+                Toast.makeText(mContext, R.string.photoPickerNotFoundText,
+                        Toast.LENGTH_LONG).show();
+            }
+        }
+
+        /**
+         * Should initiate an activity to take a photo using the camera.
+         * @param intent The image capture intent.
+         * @param requestCode The request code to use, suitable for handling by
+         *     {@link PhotoSelectionHandler#handlePhotoActivityResult(int, int, Intent)}.
+         * @param photoFile The file path that will be used to store the photo.  This is generally
+         *     what should be returned by
+         *     {@link PhotoSelectionHandler.PhotoActionListener#getCurrentPhotoFile()}.
+         */
+        public abstract void startTakePhotoActivity(Intent intent, int requestCode, File photoFile);
+
+        /**
+         * Should initiate an activity pick a photo from the gallery.
+         * @param intent The image capture intent.
+         * @param requestCode The request code to use, suitable for handling by
+         * @param photoFile The temporary file that the cropped image is written to before being
+         *     stored by the content-provider.
+         *     {@link PhotoSelectionHandler#handlePhotoActivityResult(int, int, Intent)}.
+         */
+        public abstract void startPickFromGalleryActivity(Intent intent, int requestCode,
+                File photoFile);
+
+        /**
+         * Called when the user has completed selection of a photo.
+         * @param bitmap The selected and cropped photo.
+         */
+        public abstract void onPhotoSelected(Bitmap bitmap);
+
+        /**
+         * Gets the current photo file that is being interacted with.  It is the activity or
+         * fragment's responsibility to maintain this in saved state, since this handler instance
+         * will not survive rotation.
+         */
+        public abstract File getCurrentPhotoFile();
+
+        /**
+         * Called when the photo selection dialog is dismissed.
+         */
+        public abstract void onPhotoSelectionDismissed();
+    }
+}
diff --git a/src/com/android/contacts/detail/TransformableImageView.java b/src/com/android/contacts/detail/TransformableImageView.java
new file mode 100644
index 0000000..6edc42b
--- /dev/null
+++ b/src/com/android/contacts/detail/TransformableImageView.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2011 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.detail;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageView;
+
+/**
+ * Extension to ImageView that handles cropping during resize animations.
+ */
+public class TransformableImageView extends ImageView {
+
+    public TransformableImageView(Context context) {
+        super(context);
+    }
+
+    public TransformableImageView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public TransformableImageView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        int saveCount = canvas.getSaveCount();
+        canvas.save();
+        canvas.translate(mPaddingLeft, mPaddingTop);
+        Matrix drawMatrix = new Matrix();
+        int dwidth = getDrawable().getIntrinsicWidth();
+        int dheight = getDrawable().getIntrinsicHeight();
+
+        int vwidth = getWidth() - mPaddingLeft - mPaddingRight;
+        int vheight = getHeight() - mPaddingTop - mPaddingBottom;
+        float scale;
+        float dx = 0, dy = 0;
+
+        if (dwidth * vheight > vwidth * dheight) {
+            scale = (float) vheight / (float) dheight;
+            dx = (vwidth - dwidth * scale) * 0.5f;
+        } else {
+            scale = (float) vwidth / (float) dwidth;
+            dy = (vheight - dheight * scale) * 0.5f;
+        }
+
+        drawMatrix.setScale(scale, scale);
+        drawMatrix.postTranslate((int) (dx + 0.5f), (int) (dy + 0.5f));
+        canvas.concat(drawMatrix);
+        getDrawable().draw(canvas);
+        canvas.restoreToCount(saveCount);
+    }
+}
diff --git a/src/com/android/contacts/dialpad/DialpadFragment.java b/src/com/android/contacts/dialpad/DialpadFragment.java
index 793717d..1087ecc 100644
--- a/src/com/android/contacts/dialpad/DialpadFragment.java
+++ b/src/com/android/contacts/dialpad/DialpadFragment.java
@@ -20,7 +20,7 @@
 import com.android.contacts.R;
 import com.android.contacts.SpecialCharSequenceMgr;
 import com.android.contacts.activities.DialtactsActivity;
-import com.android.contacts.activities.DialtactsActivity.ViewPagerVisibilityListener;
+import com.android.contacts.util.Constants;
 import com.android.contacts.util.PhoneNumberFormatter;
 import com.android.internal.telephony.ITelephony;
 import com.android.phone.CallLogAsync;
@@ -54,31 +54,29 @@
 import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
 import android.text.Editable;
+import android.text.SpannableString;
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.text.method.DialerKeyListener;
+import android.text.style.RelativeSizeSpan;
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+import android.view.MotionEvent;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.BaseAdapter;
-import android.widget.Button;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.PopupMenu;
 import android.widget.TextView;
 
-import java.util.HashSet;
-import java.util.Set;
-
 /**
  * Fragment that displays a twelve-key phone dialpad.
  */
@@ -87,7 +85,7 @@
         View.OnLongClickListener, View.OnKeyListener,
         AdapterView.OnItemClickListener, TextWatcher,
         PopupMenu.OnMenuItemClickListener,
-        ViewPagerVisibilityListener {
+        View.OnTouchListener {
     private static final String TAG = DialpadFragment.class.getSimpleName();
 
     private static final String EMPTY_NUMBER = "";
@@ -112,9 +110,12 @@
     private View mDigitsContainer;
     private EditText mDigits;
 
+    /** Remembers if we need to clear digits field when the screen is completely gone. */
+    private boolean mClearDigitsOnStop;
+
     private View mDelete;
     private ToneGenerator mToneGenerator;
-    private Object mToneGeneratorLock = new Object();
+    private final Object mToneGeneratorLock = new Object();
     private View mDialpad;
     private View mAdditionalButtonsRow;
 
@@ -130,23 +131,21 @@
      */
     private String mProhibitedPhoneNumberRegexp;
 
-    private boolean mShowOptionsMenu;
-
 
     // Last number dialed, retrieved asynchronously from the call DB
     // in onCreate. This number is displayed when the user hits the
     // send key and cleared in onPause.
-    CallLogAsync mCallLog = new CallLogAsync();
+    private final CallLogAsync mCallLog = new CallLogAsync();
     private String mLastNumberDialed = EMPTY_NUMBER;
 
     // determines if we want to playback local DTMF tones.
     private boolean mDTMFToneEnabled;
 
     // Vibration (haptic feedback) for dialer key presses.
-    private HapticFeedback mHaptic = new HapticFeedback();
+    private final HapticFeedback mHaptic = new HapticFeedback();
 
     /** Identifier for the "Add Call" intent extra. */
-    static final String ADD_CALL_MODE_KEY = "add_call_mode";
+    private static final String ADD_CALL_MODE_KEY = "add_call_mode";
 
     /**
      * Identifier for intent extra for sending an empty Flash message for
@@ -158,7 +157,7 @@
      * TODO: Keep in sync with the string defined in OutgoingCallBroadcaster.java
      * in Phone app until this is replaced with the ITelephony API.
      */
-    static final String EXTRA_SEND_EMPTY_FLASH
+    private static final String EXTRA_SEND_EMPTY_FLASH
             = "com.android.phone.extra.SEND_EMPTY_FLASH";
 
     private String mCurrentCountryIso;
@@ -188,10 +187,12 @@
 
     private boolean mWasEmptyBeforeTextChange;
 
+    @Override
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {
         mWasEmptyBeforeTextChange = TextUtils.isEmpty(s);
     }
 
+    @Override
     public void onTextChanged(CharSequence input, int start, int before, int changeCount) {
         if (mWasEmptyBeforeTextChange != TextUtils.isEmpty(input)) {
             final Activity activity = getActivity();
@@ -204,6 +205,7 @@
         // the DTMF dialer handles that functionality now.
     }
 
+    @Override
     public void afterTextChanged(Editable input) {
         if (SpecialCharSequenceMgr.handleChars(getActivity(), input.toString(), mDigits)) {
             // A special sequence was entered, clear the digits
@@ -324,7 +326,7 @@
         if (Intent.ACTION_DIAL.equals(action) || Intent.ACTION_VIEW.equals(action)) {
             Uri uri = intent.getData();
             if (uri != null) {
-                if ("tel".equals(uri.getScheme())) {
+                if (Constants.SCHEME_TEL.equals(uri.getScheme())) {
                     // Put the requested number into the input area
                     String data = uri.getSchemeSpecificPart();
                     setFormattedDigits(data, null);
@@ -448,26 +450,30 @@
     }
 
     private void setupKeypad(View fragmentView) {
-        // Setup the listeners for the buttons
-        View view = fragmentView.findViewById(R.id.one);
-        view.setOnClickListener(this);
-        view.setOnLongClickListener(this);
+        // For numeric buttons, we rely on onTouchListener instead of onClickListener
+        // for faster event handling, while some other buttons since basically
+        // onTouch event conflicts with horizontal swipes.
+        fragmentView.findViewById(R.id.one).setOnTouchListener(this);
+        fragmentView.findViewById(R.id.two).setOnTouchListener(this);
+        fragmentView.findViewById(R.id.three).setOnTouchListener(this);
+        fragmentView.findViewById(R.id.four).setOnTouchListener(this);
+        fragmentView.findViewById(R.id.five).setOnTouchListener(this);
+        fragmentView.findViewById(R.id.six).setOnTouchListener(this);
+        fragmentView.findViewById(R.id.seven).setOnTouchListener(this);
+        fragmentView.findViewById(R.id.eight).setOnTouchListener(this);
+        fragmentView.findViewById(R.id.nine).setOnTouchListener(this);
+        fragmentView.findViewById(R.id.zero).setOnTouchListener(this);
 
-        fragmentView.findViewById(R.id.two).setOnClickListener(this);
-        fragmentView.findViewById(R.id.three).setOnClickListener(this);
-        fragmentView.findViewById(R.id.four).setOnClickListener(this);
-        fragmentView.findViewById(R.id.five).setOnClickListener(this);
-        fragmentView.findViewById(R.id.six).setOnClickListener(this);
-        fragmentView.findViewById(R.id.seven).setOnClickListener(this);
-        fragmentView.findViewById(R.id.eight).setOnClickListener(this);
-        fragmentView.findViewById(R.id.nine).setOnClickListener(this);
+        // Buttons other than numeric ones should use onClick as usual.
         fragmentView.findViewById(R.id.star).setOnClickListener(this);
-
-        view = fragmentView.findViewById(R.id.zero);
-        view.setOnClickListener(this);
-        view.setOnLongClickListener(this);
-
         fragmentView.findViewById(R.id.pound).setOnClickListener(this);
+
+        // Long-pressing one button will initiate Voicemail.
+        fragmentView.findViewById(R.id.one).setOnLongClickListener(this);
+
+        // Long-pressing zero button will enter '+' instead.
+        fragmentView.findViewById(R.id.zero).setOnLongClickListener(this);
+
     }
 
     @Override
@@ -526,7 +532,10 @@
         // another call, but that call is guaranteed to fail.  Perhaps the
         // entire dialer UI should be disabled instead.)
         if (phoneIsInUse()) {
-            mDigits.setHint(R.string.dialerDialpadHintText);
+            final SpannableString hint = new SpannableString(
+                    getActivity().getString(R.string.dialerDialpadHintText));
+            hint.setSpan(new RelativeSizeSpan(0.8f), 0, hint.length(), 0);
+            mDigits.setHint(hint);
         } else {
             // Common case; no hint necessary.
             mDigits.setHint(null);
@@ -560,9 +569,18 @@
     }
 
     @Override
+    public void onStop() {
+        super.onStop();
+        if (mClearDigitsOnStop) {
+            mClearDigitsOnStop = false;
+            mDigits.getText().clear();
+        }
+    }
+
+    @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         super.onCreateOptionsMenu(menu, inflater);
-        if (mShowOptionsMenu && ViewConfiguration.get(getActivity()).hasPermanentMenuKey() &&
+        if (ViewConfiguration.get(getActivity()).hasPermanentMenuKey() &&
                 isLayoutReady() && mDialpadChooser != null) {
             inflater.inflate(R.menu.dialpad_options, menu);
         }
@@ -571,7 +589,7 @@
     @Override
     public void onPrepareOptionsMenu(Menu menu) {
         // Hardware menu key should be available and Views should already be ready.
-        if (mShowOptionsMenu && ViewConfiguration.get(getActivity()).hasPermanentMenuKey() &&
+        if (ViewConfiguration.get(getActivity()).hasPermanentMenuKey() &&
                 isLayoutReady() && mDialpadChooser != null) {
              setupMenuItems(menu);
         }
@@ -668,6 +686,7 @@
         }
     }
 
+    @Override
     public boolean onKey(View view, int keyCode, KeyEvent event) {
         switch (view.getId()) {
             case R.id.digits:
@@ -680,59 +699,120 @@
         return false;
     }
 
+    /**
+     * We handle the key based on the DOWN event, but we wait till the UP event to play the local
+     * DTMF tone (to avoid playing a spurious tone if the user is actually doing a swipe...)
+     */
+    @Override
+    public boolean onTouch(View view, MotionEvent event) {
+        if (event.getAction() == MotionEvent.ACTION_DOWN) {
+            switch (view.getId()) {
+                case R.id.one: {
+                    keyPressed(KeyEvent.KEYCODE_1);
+                    break;
+                }
+                case R.id.two: {
+                    keyPressed(KeyEvent.KEYCODE_2);
+                    break;
+                }
+                case R.id.three: {
+                    keyPressed(KeyEvent.KEYCODE_3);
+                    break;
+                }
+                case R.id.four: {
+                    keyPressed(KeyEvent.KEYCODE_4);
+                    break;
+                }
+                case R.id.five: {
+                    keyPressed(KeyEvent.KEYCODE_5);
+                    break;
+                }
+                case R.id.six: {
+                    keyPressed(KeyEvent.KEYCODE_6);
+                    break;
+                }
+                case R.id.seven: {
+                    keyPressed(KeyEvent.KEYCODE_7);
+                    break;
+                }
+                case R.id.eight: {
+                    keyPressed(KeyEvent.KEYCODE_8);
+                    break;
+                }
+                case R.id.nine: {
+                    keyPressed(KeyEvent.KEYCODE_9);
+                    break;
+                }
+                case R.id.zero: {
+                    keyPressed(KeyEvent.KEYCODE_0);
+                    break;
+                }
+                default: {
+                    Log.wtf(TAG, "Unexpected onTouch(ACTION_DOWN) event from: " + view);
+                    break;
+                }
+            }
+        } else if (event.getAction() == MotionEvent.ACTION_UP) {
+            switch (view.getId()) {
+                case R.id.one: {
+                    playTone(ToneGenerator.TONE_DTMF_1);
+                    break;
+                }
+                case R.id.two: {
+                    playTone(ToneGenerator.TONE_DTMF_2);
+                    break;
+                }
+                case R.id.three: {
+                    playTone(ToneGenerator.TONE_DTMF_3);
+                    break;
+                }
+                case R.id.four: {
+                    playTone(ToneGenerator.TONE_DTMF_4);
+                    break;
+                }
+                case R.id.five: {
+                    playTone(ToneGenerator.TONE_DTMF_5);
+                    break;
+                }
+                case R.id.six: {
+                    playTone(ToneGenerator.TONE_DTMF_6);
+                    break;
+                }
+                case R.id.seven: {
+                    playTone(ToneGenerator.TONE_DTMF_7);
+                    break;
+                }
+                case R.id.eight: {
+                    playTone(ToneGenerator.TONE_DTMF_8);
+                    break;
+                }
+                case R.id.nine: {
+                    playTone(ToneGenerator.TONE_DTMF_9);
+                    break;
+                }
+                case R.id.zero: {
+                    playTone(ToneGenerator.TONE_DTMF_0);
+                    break;
+                }
+                default: {
+                    Log.wtf(TAG, "Unexpected onTouch(ACTION_UP) event from: " + view);
+                    break;
+                }
+            }
+        } else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
+            // This event will be thrown when a user starts dragging the dialpad screen,
+            // intending horizontal swipe. The system will see the event after ACTION_DOWN while
+            // it won't see relevant ACTION_UP event anymore.
+            //
+            // Here, remove the last digit already entered in the last ACTION_DOWN event.
+            removeLastOneDigitIfPossible();
+        }
+        return false;
+    }
+
     @Override
     public void onClick(View view) {
         switch (view.getId()) {
-            case R.id.one: {
-                playTone(ToneGenerator.TONE_DTMF_1);
-                keyPressed(KeyEvent.KEYCODE_1);
-                return;
-            }
-            case R.id.two: {
-                playTone(ToneGenerator.TONE_DTMF_2);
-                keyPressed(KeyEvent.KEYCODE_2);
-                return;
-            }
-            case R.id.three: {
-                playTone(ToneGenerator.TONE_DTMF_3);
-                keyPressed(KeyEvent.KEYCODE_3);
-                return;
-            }
-            case R.id.four: {
-                playTone(ToneGenerator.TONE_DTMF_4);
-                keyPressed(KeyEvent.KEYCODE_4);
-                return;
-            }
-            case R.id.five: {
-                playTone(ToneGenerator.TONE_DTMF_5);
-                keyPressed(KeyEvent.KEYCODE_5);
-                return;
-            }
-            case R.id.six: {
-                playTone(ToneGenerator.TONE_DTMF_6);
-                keyPressed(KeyEvent.KEYCODE_6);
-                return;
-            }
-            case R.id.seven: {
-                playTone(ToneGenerator.TONE_DTMF_7);
-                keyPressed(KeyEvent.KEYCODE_7);
-                return;
-            }
-            case R.id.eight: {
-                playTone(ToneGenerator.TONE_DTMF_8);
-                keyPressed(KeyEvent.KEYCODE_8);
-                return;
-            }
-            case R.id.nine: {
-                playTone(ToneGenerator.TONE_DTMF_9);
-                keyPressed(KeyEvent.KEYCODE_9);
-                return;
-            }
-            case R.id.zero: {
-                playTone(ToneGenerator.TONE_DTMF_0);
-                keyPressed(KeyEvent.KEYCODE_0);
-                return;
-            }
             case R.id.pound: {
                 playTone(ToneGenerator.TONE_DTMF_P);
                 keyPressed(KeyEvent.KEYCODE_POUND);
@@ -770,6 +850,11 @@
                 if (popup != null) {
                     popup.show();
                 }
+                return;
+            }
+            default: {
+                Log.wtf(TAG, "Unexpected onClick() event from: " + view);
+                return;
             }
         }
     }
@@ -787,9 +872,10 @@
         return popupMenu;
     }
 
+    @Override
     public boolean onLongClick(View view) {
         final Editable digits = mDigits.getText();
-        int id = view.getId();
+        final int id = view.getId();
         switch (id) {
             case R.id.deleteButton: {
                 digits.clear();
@@ -800,20 +886,38 @@
                 return true;
             }
             case R.id.one: {
-                if (isDigitsEmpty()) {
+                // '1' may be already entered since we rely on onTouch() event for numeric buttons.
+                // Just for safety we also check if the digits field is empty or not.
+                if (isDigitsEmpty() || TextUtils.equals(mDigits.getText(), "1")) {
+                    // We'll try to initiate voicemail and thus we want to remove irrelevant string.
+                    removeLastOneDigitIfPossible();
+
                     if (isVoicemailAvailable()) {
                         callVoicemail();
                     } else if (getActivity() != null) {
-                        DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
-                                R.string.dialog_voicemail_not_ready_title,
-                                R.string.dialog_voicemail_not_ready_message);
-                        dialogFragment.show(getFragmentManager(), "voicemail_not_ready");
+                        // Voicemail is unavailable maybe because Airplane mode is turned on.
+                        // Check the current status and show the most appropriate error message.
+                        final boolean isAirplaneModeOn =
+                                Settings.System.getInt(getActivity().getContentResolver(),
+                                Settings.System.AIRPLANE_MODE_ON, 0) != 0;
+                        if (isAirplaneModeOn) {
+                            DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
+                                    R.string.dialog_voicemail_airplane_mode_message);
+                            dialogFragment.show(getFragmentManager(),
+                                    "voicemail_request_during_airplane_mode");
+                        } else {
+                            DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
+                                    R.string.dialog_voicemail_not_ready_message);
+                            dialogFragment.show(getFragmentManager(), "voicemail_not_ready");
+                        }
                     }
                     return true;
                 }
                 return false;
             }
             case R.id.zero: {
+                // Remove tentative input ('0') done by onTouch().
+                removeLastOneDigitIfPossible();
                 keyPressed(KeyEvent.KEYCODE_PLUS);
                 return true;
             }
@@ -828,35 +932,36 @@
         return false;
     }
 
+    private void removeLastOneDigitIfPossible() {
+        final Editable editable = mDigits.getText();
+        final int length = editable.length();
+        if (length > 0) {
+            mDigits.getText().delete(length - 1, length);
+        }
+    }
+
     public void callVoicemail() {
-        startActivity(newVoicemailIntent());
-        mDigits.getText().clear(); // TODO: Fix bug 1745781
+        startActivity(ContactsUtils.getVoicemailIntent());
+        mClearDigitsOnStop = true;
         getActivity().finish();
     }
 
     public static class ErrorDialogFragment extends DialogFragment {
         private int mTitleResId;
-        private Integer mMessageResId;  // can be null
+        private int mMessageResId;
 
         private static final String ARG_TITLE_RES_ID = "argTitleResId";
         private static final String ARG_MESSAGE_RES_ID = "argMessageResId";
 
-        public static ErrorDialogFragment newInstance(int titleResId) {
-            return newInstanceInter(titleResId, null);
+        public static ErrorDialogFragment newInstance(int messageResId) {
+            return newInstance(0, messageResId);
         }
 
         public static ErrorDialogFragment newInstance(int titleResId, int messageResId) {
-            return newInstanceInter(titleResId, messageResId);
-        }
-
-        private static ErrorDialogFragment newInstanceInter(
-                int titleResId, Integer messageResId) {
             final ErrorDialogFragment fragment = new ErrorDialogFragment();
             final Bundle args = new Bundle();
             args.putInt(ARG_TITLE_RES_ID, titleResId);
-            if (messageResId != null) {
-                args.putInt(ARG_MESSAGE_RES_ID, messageResId);
-            }
+            args.putInt(ARG_MESSAGE_RES_ID, messageResId);
             fragment.setArguments(args);
             return fragment;
         }
@@ -865,25 +970,25 @@
         public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             mTitleResId = getArguments().getInt(ARG_TITLE_RES_ID);
-            if (getArguments().containsKey(ARG_MESSAGE_RES_ID)) {
-                mMessageResId = getArguments().getInt(ARG_MESSAGE_RES_ID);
-            }
+            mMessageResId = getArguments().getInt(ARG_MESSAGE_RES_ID);
         }
 
         @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-            builder.setTitle(mTitleResId)
-                    .setPositiveButton(android.R.string.ok,
-                            new DialogInterface.OnClickListener() {
-                                @Override
-                                public void onClick(DialogInterface dialog, int which) {
-                                    dismiss();
-                                }
-                            });
-            if (mMessageResId != null) {
+            if (mTitleResId != 0) {
+                builder.setTitle(mTitleResId);
+            }
+            if (mMessageResId != 0) {
                 builder.setMessage(mMessageResId);
             }
+            builder.setPositiveButton(android.R.string.ok,
+                    new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialog, int which) {
+                                dismiss();
+                            }
+                    });
             return builder.create();
         }
     }
@@ -951,20 +1056,18 @@
                 Log.i(TAG, "The phone number is prohibited explicitly by a rule.");
                 if (getActivity() != null) {
                     DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
-                                    R.string.dialog_phone_call_prohibited_title);
+                            R.string.dialog_phone_call_prohibited_message);
                     dialogFragment.show(getFragmentManager(), "phone_prohibited_dialog");
                 }
 
                 // Clear the digits just in case.
                 mDigits.getText().clear();
             } else {
-                final Intent intent = newDialNumberIntent(number);
-                if (getActivity() instanceof DialtactsActivity) {
-                    intent.putExtra(DialtactsActivity.EXTRA_CALL_ORIGIN,
-                            DialtactsActivity.CALL_ORIGIN_DIALTACTS);
-                }
+                final Intent intent = ContactsUtils.getCallIntent(number,
+                        (getActivity() instanceof DialtactsActivity ?
+                                ((DialtactsActivity)getActivity()).getCallOrigin() : null));
                 startActivity(intent);
-                mDigits.getText().clear();  // TODO: Fix bug 1745781
+                mClearDigitsOnStop = true;
                 getActivity().finish();
             }
         }
@@ -1126,6 +1229,7 @@
                     DIALPAD_CHOICE_ADD_NEW_CALL);
         }
 
+        @Override
         public int getCount() {
             return NUM_ITEMS;
         }
@@ -1133,6 +1237,7 @@
         /**
          * Return the ChoiceItem for a given position.
          */
+        @Override
         public Object getItem(int position) {
             return mChoiceItems[position];
         }
@@ -1140,6 +1245,7 @@
         /**
          * Return a unique ID for each possible choice.
          */
+        @Override
         public long getItemId(int position) {
             return position;
         }
@@ -1147,6 +1253,7 @@
         /**
          * Make a view for each row.
          */
+        @Override
         public View getView(int position, View convertView, ViewGroup parent) {
             // When convertView is non-null, we can reuse it (there's no need
             // to reinflate it.)
@@ -1167,7 +1274,8 @@
     /**
      * Handle clicks from the dialpad chooser.
      */
-    public void onItemClick(AdapterView parent, View v, int position, long id) {
+    @Override
+    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
         DialpadChooserAdapter.ChoiceItem item =
                 (DialpadChooserAdapter.ChoiceItem) parent.getItemAtPosition(position);
         int itemId = item.id;
@@ -1409,6 +1517,7 @@
                 new CallLogAsync.GetLastOutgoingCallArgs(
                     getActivity(),
                     new CallLogAsync.OnLastOutgoingCallComplete() {
+                        @Override
                         public void lastOutgoingCall(String number) {
                             // TODO: Filter out emergency numbers if
                             // the carrier does not want redial for
@@ -1420,33 +1529,13 @@
         mCallLog.getLastOutgoingCall(lastCallArgs);
     }
 
-    // Helpers for the call intents.
-    private Intent newVoicemailIntent() {
-        final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                                         Uri.fromParts("voicemail", EMPTY_NUMBER, null));
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        return intent;
-    }
-
     private Intent newFlashIntent() {
-        final Intent intent = newDialNumberIntent(EMPTY_NUMBER);
+        final Intent intent = ContactsUtils.getCallIntent(EMPTY_NUMBER);
         intent.putExtra(EXTRA_SEND_EMPTY_FLASH, true);
         return intent;
     }
 
-    private Intent newDialNumberIntent(String number) {
-        final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                                         Uri.fromParts("tel", number, null));
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        return intent;
-    }
-
     public void setListener(Listener listener) {
         mListener = listener;
     }
-
-    @Override
-    public void onVisibilityChanged(boolean visible) {
-        mShowOptionsMenu = visible;
-    }
 }
diff --git a/src/com/android/contacts/dialpad/DialpadImageButton.java b/src/com/android/contacts/dialpad/DialpadImageButton.java
new file mode 100644
index 0000000..6e01379
--- /dev/null
+++ b/src/com/android/contacts/dialpad/DialpadImageButton.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2012 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.dialpad;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.widget.ImageButton;
+
+/**
+ * Custom {@link ImageButton} for dialpad buttons.
+ *
+ * During horizontal swipe, we want to exit "fading out" animation offered by its background
+ * just after starting the swipe.This class overrides {@link #onTouchEvent(MotionEvent)} to achieve
+ * the behavior.
+ */
+public class DialpadImageButton extends ImageButton {
+
+    public DialpadImageButton(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public DialpadImageButton(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        final boolean ret = super.onTouchEvent(event);
+        if (event.getAction() == MotionEvent.ACTION_CANCEL) {
+            jumpDrawablesToCurrentState();
+        }
+        return ret;
+    }
+}
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index 844f892..2ede872 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -23,6 +23,7 @@
 import com.android.contacts.activities.ContactEditorAccountsChangedActivity;
 import com.android.contacts.activities.ContactEditorActivity;
 import com.android.contacts.activities.JoinContactActivity;
+import com.android.contacts.detail.PhotoSelectionHandler;
 import com.android.contacts.editor.AggregationSuggestionEngine.Suggestion;
 import com.android.contacts.editor.Editor.EditorListener;
 import com.android.contacts.model.AccountType;
@@ -44,7 +45,6 @@
 import android.app.Fragment;
 import android.app.LoaderManager;
 import android.app.LoaderManager.LoaderCallbacks;
-import android.content.ActivityNotFoundException;
 import android.content.ContentUris;
 import android.content.ContentValues;
 import android.content.Context;
@@ -56,10 +56,8 @@
 import android.database.Cursor;
 import android.graphics.Bitmap;
 import android.graphics.Rect;
-import android.media.MediaScannerConnection;
 import android.net.Uri;
 import android.os.Bundle;
-import android.os.Environment;
 import android.os.SystemClock;
 import android.provider.ContactsContract.CommonDataKinds.Email;
 import android.provider.ContactsContract.CommonDataKinds.Event;
@@ -67,11 +65,9 @@
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
 import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.DisplayPhoto;
 import android.provider.ContactsContract.Groups;
 import android.provider.ContactsContract.Intents;
 import android.provider.ContactsContract.RawContacts;
-import android.provider.MediaStore;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -87,11 +83,9 @@
 import android.widget.Toast;
 
 import java.io.File;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.Date;
 import java.util.List;
 
 public class ContactEditorFragment extends Fragment implements
@@ -192,25 +186,17 @@
     }
 
     private static final int REQUEST_CODE_JOIN = 0;
-    private static final int REQUEST_CODE_CAMERA_WITH_DATA = 1;
-    private static final int REQUEST_CODE_PHOTO_PICKED_WITH_DATA = 2;
-    private static final int REQUEST_CODE_ACCOUNTS_CHANGED = 3;
+    private static final int REQUEST_CODE_ACCOUNTS_CHANGED = 1;
 
-    private Bitmap mPhoto = null;
     private long mRawContactIdRequestingPhoto = -1;
-    private long mRawContactIdRequestingPhotoAfterLoad = -1;
+    private PhotoSelectionHandler mPhotoSelectionHandler;
 
     private final EntityDeltaComparator mComparator = new EntityDeltaComparator();
 
-    private static final File PHOTO_DIR = new File(
-            Environment.getExternalStorageDirectory() + "/DCIM/Camera");
-
     private Cursor mGroupMetaData;
 
     private File mCurrentPhotoFile;
-
-    // Height/width (in pixels) to request for the photo - queried from the provider.
-    private int mPhotoPickSize;
+    private final Bundle mUpdatedPhotos = new Bundle();
 
     private Context mContext;
     private String mAction;
@@ -322,7 +308,6 @@
         super.onAttach(activity);
         mContext = activity;
         mEditorUtils = ContactEditorUtils.getInstance(mContext);
-        loadPhotoPickSize();
     }
 
     @Override
@@ -729,8 +714,9 @@
 
             editor.setState(entity, type, mViewIdGenerator, isEditingUserProfile());
 
-            editor.getPhotoEditor().setEditorListener(
-                    new PhotoEditorListener(editor, type.areContactsWritable()));
+            // Set up the photo handler.
+            bindPhotoHandler(editor, type, mState);
+
             if (editor instanceof RawContactEditorView) {
                 final RawContactEditorView rawContactEditor = (RawContactEditorView) editor;
                 EditorListener listener = new EditorListener() {
@@ -776,7 +762,32 @@
         // Activity can be null if we have been detached from the Activity
         final Activity activity = getActivity();
         if (activity != null) activity.invalidateOptionsMenu();
+    }
 
+    private void bindPhotoHandler(BaseRawContactEditorView editor, AccountType type,
+            EntityDeltaList state) {
+        final int mode;
+        if (type.areContactsWritable()) {
+            if (editor.hasSetPhoto()) {
+                if (hasMoreThanOnePhoto()) {
+                    mode = PhotoActionPopup.Modes.PHOTO_ALLOW_PRIMARY;
+                } else {
+                    mode = PhotoActionPopup.Modes.PHOTO_DISALLOW_PRIMARY;
+                }
+            } else {
+                mode = PhotoActionPopup.Modes.NO_PHOTO;
+            }
+        } else {
+            if (editor.hasSetPhoto() && hasMoreThanOnePhoto()) {
+                mode = PhotoActionPopup.Modes.READ_ONLY_ALLOW_PRIMARY;
+            } else {
+                // Read-only and either no photo or the only photo ==> no options
+                return;
+            }
+        }
+        mPhotoSelectionHandler = new PhotoHandler(mContext, editor, mode, state);
+        editor.getPhotoEditor().setEditorListener(
+                (PhotoHandler.PhotoEditorListener) mPhotoSelectionHandler.getListener());
     }
 
     private void bindGroupMetaData() {
@@ -926,32 +937,6 @@
         return save(SaveMode.JOIN);
     }
 
-    private void loadPhotoPickSize() {
-        Cursor c = mContext.getContentResolver().query(DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI,
-                new String[]{DisplayPhoto.DISPLAY_MAX_DIM}, null, null, null);
-        try {
-            c.moveToFirst();
-            mPhotoPickSize = c.getInt(0);
-        } finally {
-            c.close();
-        }
-    }
-
-    /**
-     * Constructs an intent for picking a photo from Gallery, cropping it and returning the bitmap.
-     */
-    public Intent getPhotoPickIntent() {
-        Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
-        intent.setType("image/*");
-        intent.putExtra("crop", "true");
-        intent.putExtra("aspectX", 1);
-        intent.putExtra("aspectY", 1);
-        intent.putExtra("outputX", mPhotoPickSize);
-        intent.putExtra("outputY", mPhotoPickSize);
-        intent.putExtra("return-data", true);
-        return intent;
-    }
-
     /**
      * Check if our internal {@link #mState} is valid, usually checked before
      * performing user actions.
@@ -961,61 +946,6 @@
     }
 
     /**
-     * Create a file name for the icon photo using current time.
-     */
-    private String getPhotoFileName() {
-        Date date = new Date(System.currentTimeMillis());
-        SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");
-        return dateFormat.format(date) + ".jpg";
-    }
-
-    /**
-     * Constructs an intent for capturing a photo and storing it in a temporary file.
-     */
-    public static Intent getTakePickIntent(File f) {
-        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
-        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
-        return intent;
-    }
-
-    /**
-     * Sends a newly acquired photo to Gallery for cropping
-     */
-    protected void doCropPhoto(File f) {
-        try {
-            // Add the image to the media store
-            MediaScannerConnection.scanFile(
-                    mContext,
-                    new String[] { f.getAbsolutePath() },
-                    new String[] { null },
-                    null);
-
-            // Launch gallery to crop the photo
-            final Intent intent = getCropImageIntent(Uri.fromFile(f));
-            mStatus = Status.SUB_ACTIVITY;
-            startActivityForResult(intent, REQUEST_CODE_PHOTO_PICKED_WITH_DATA);
-        } catch (Exception e) {
-            Log.e(TAG, "Cannot crop image", e);
-            Toast.makeText(mContext, R.string.photoPickerNotFoundText, Toast.LENGTH_LONG).show();
-        }
-    }
-
-    /**
-     * Constructs an intent for image cropping.
-     */
-    public Intent getCropImageIntent(Uri photoUri) {
-        Intent intent = new Intent("com.android.camera.action.CROP");
-        intent.setDataAndType(photoUri, "image/*");
-        intent.putExtra("crop", "true");
-        intent.putExtra("aspectX", 1);
-        intent.putExtra("aspectY", 1);
-        intent.putExtra("outputX", mPhotoPickSize);
-        intent.putExtra("outputY", mPhotoPickSize);
-        intent.putExtra("return-data", true);
-        return intent;
-    }
-
-    /**
      * Saves or creates the contact based on the mode, and if successful
      * finishes the activity.
      */
@@ -1044,8 +974,9 @@
 
         // Save contact
         Intent intent = ContactSaveService.createSaveContactIntent(getActivity(), mState,
-                SAVE_MODE_EXTRA_KEY, saveMode, isEditingUserProfile(),
-                getActivity().getClass(), ContactEditorActivity.ACTION_SAVE_COMPLETED);
+                SAVE_MODE_EXTRA_KEY, saveMode, isEditingUserProfile(), getActivity().getClass(),
+                ContactEditorActivity.ACTION_SAVE_COMPLETED, mUpdatedPhotos);
+
         getActivity().startService(intent);
         return true;
     }
@@ -1062,7 +993,6 @@
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             AlertDialog dialog = new AlertDialog.Builder(getActivity())
                     .setIconAttribute(android.R.attr.alertDialogIcon)
-                    .setTitle(R.string.cancel_confirmation_dialog_title)
                     .setMessage(R.string.cancel_confirmation_dialog_message)
                     .setPositiveButton(android.R.string.ok,
                         new DialogInterface.OnClickListener() {
@@ -1456,7 +1386,6 @@
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             return new AlertDialog.Builder(getActivity())
                     .setIconAttribute(android.R.attr.alertDialogIcon)
-                    .setTitle(R.string.aggregation_suggestion_join_dialog_title)
                     .setMessage(R.string.aggregation_suggestion_join_dialog_message)
                     .setPositiveButton(android.R.string.yes,
                         new DialogInterface.OnClickListener() {
@@ -1504,7 +1433,6 @@
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             return new AlertDialog.Builder(getActivity())
                     .setIconAttribute(android.R.attr.alertDialogIcon)
-                    .setTitle(R.string.aggregation_suggestion_edit_dialog_title)
                     .setMessage(R.string.aggregation_suggestion_edit_dialog_message)
                     .setPositiveButton(android.R.string.yes,
                         new DialogInterface.OnClickListener() {
@@ -1594,27 +1522,13 @@
             mStatus = Status.EDITING;
         }
 
-        switch (requestCode) {
-            case REQUEST_CODE_PHOTO_PICKED_WITH_DATA: {
-                // Ignore failed requests
-                if (resultCode != Activity.RESULT_OK) return;
-                // As we are coming back to this view, the editor will be reloaded automatically,
-                // which will cause the photo that is set here to disappear. To prevent this,
-                // we remember to set a flag which is interpreted after loading.
-                // This photo is set here already to reduce flickering.
-                mPhoto = data.getParcelableExtra("data");
-                setPhoto(mRawContactIdRequestingPhoto, mPhoto);
-                mRawContactIdRequestingPhotoAfterLoad = mRawContactIdRequestingPhoto;
-                mRawContactIdRequestingPhoto = -1;
+        // See if the photo selection handler handles this result.
+        if (mPhotoSelectionHandler != null && mPhotoSelectionHandler.handlePhotoActivityResult(
+                requestCode, resultCode, data)) {
+            return;
+        }
 
-                break;
-            }
-            case REQUEST_CODE_CAMERA_WITH_DATA: {
-                // Ignore failed requests
-                if (resultCode != Activity.RESULT_OK) return;
-                doCropPhoto(mCurrentPhotoFile);
-                break;
-            }
+        switch (requestCode) {
             case REQUEST_CODE_JOIN: {
                 // Ignore failed requests
                 if (resultCode != Activity.RESULT_OK) return;
@@ -1650,13 +1564,21 @@
     /**
      * Sets the photo stored in mPhoto and writes it to the RawContact with the given id
      */
-    private void setPhoto(long rawContact, Bitmap photo) {
+    private void setPhoto(long rawContact, Bitmap photo, File photoFile) {
         BaseRawContactEditorView requestingEditor = getRawContactEditorView(rawContact);
+
+        if (photo == null || photo.getHeight() < 0 || photo.getWidth() < 0) {
+            // This is unexpected.
+            Log.w(TAG, "Invalid bitmap passed to setPhoto()");
+        }
+
         if (requestingEditor != null) {
             requestingEditor.setPhotoBitmap(photo);
         } else {
             Log.w(TAG, "The contact that requested the photo is no longer present.");
         }
+
+        mUpdatedPhotos.putString(String.valueOf(rawContact), photoFile.getAbsolutePath());
     }
 
     /**
@@ -1723,12 +1645,6 @@
             setData(data);
             final long setDataEndTime = SystemClock.elapsedRealtime();
 
-            // If we are coming back from the photo trimmer, this will be set.
-            if (mRawContactIdRequestingPhotoAfterLoad != -1) {
-                setPhoto(mRawContactIdRequestingPhotoAfterLoad, mPhoto);
-                mRawContactIdRequestingPhotoAfterLoad = -1;
-                mPhoto = null;
-            }
             Log.v(TAG, "Time needed for setting UI: " + (setDataEndTime-setDataStartTime));
         }
 
@@ -1773,111 +1689,98 @@
         save(SaveMode.SPLIT);
     }
 
-    private final class PhotoEditorListener
-            implements EditorListener, PhotoActionPopup.Listener {
-        private final BaseRawContactEditorView mEditor;
-        private final boolean mAccountWritable;
-
-        private PhotoEditorListener(BaseRawContactEditorView editor, boolean accountWritable) {
-            mEditor = editor;
-            mAccountWritable = accountWritable;
+    /**
+     * Custom photo handler for the editor.  The inner listener that this creates also has a
+     * reference to the editor and acts as an {@link EditorListener}, and uses that editor to hold
+     * state information in several of the listener methods.
+     */
+    private final class PhotoHandler extends PhotoSelectionHandler {
+        public PhotoHandler(Context context, BaseRawContactEditorView editor, int photoMode,
+                EntityDeltaList state) {
+            super(context, editor.getPhotoEditor(), photoMode, false, state);
+            setListener(new PhotoEditorListener(editor));
         }
 
-        @Override
-        public void onRequest(int request) {
-            if (!hasValidState()) return;
+        private final class PhotoEditorListener extends PhotoSelectionHandler.PhotoActionListener
+                implements EditorListener {
+            private final BaseRawContactEditorView mEditor;
 
-            if (request == EditorListener.REQUEST_PICK_PHOTO) {
-                // Determine mode
-                final int mode;
-                if (mAccountWritable) {
-                    if (mEditor.hasSetPhoto()) {
-                        if (hasMoreThanOnePhoto()) {
-                            mode = PhotoActionPopup.MODE_PHOTO_ALLOW_PRIMARY;
-                        } else {
-                            mode = PhotoActionPopup.MODE_PHOTO_DISALLOW_PRIMARY;
-                        }
-                    } else {
-                        mode = PhotoActionPopup.MODE_NO_PHOTO;
-                    }
-                } else {
-                    if (mEditor.hasSetPhoto() && hasMoreThanOnePhoto()) {
-                        mode = PhotoActionPopup.MODE_READ_ONLY_ALLOW_PRIMARY;
-                    } else {
-                        // Read-only and either no photo or the only photo ==> no options
-                        return;
-                    }
-                }
-                PhotoActionPopup.createPopupMenu(mContext, mEditor.getPhotoEditor(), this, mode)
-                        .show();
+            private PhotoEditorListener(BaseRawContactEditorView editor) {
+                mEditor = editor;
             }
-        }
 
-        @Override
-        public void onDeleteRequested(Editor removedEditor) {
-            // The picture cannot be deleted, it can only be removed, which is handled by
-            // onRemovePictureChosen()
-        }
+            @Override
+            public void onRequest(int request) {
+                if (!hasValidState()) return;
 
-        /**
-         * User has chosen to set the selected photo as the (super) primary photo
-         */
-        @Override
-        public void onUseAsPrimaryChosen() {
-            // Set the IsSuperPrimary for each editor
-            int count = mContent.getChildCount();
-            for (int i = 0; i < count; i++) {
-                final View childView = mContent.getChildAt(i);
-                if (childView instanceof BaseRawContactEditorView) {
-                    final BaseRawContactEditorView editor = (BaseRawContactEditorView) childView;
-                    final PhotoEditorView photoEditor = editor.getPhotoEditor();
-                    photoEditor.setSuperPrimary(editor == mEditor);
+                if (request == EditorListener.REQUEST_PICK_PHOTO) {
+                    onClick(mEditor.getPhotoEditor());
                 }
             }
-        }
 
-        /**
-         * User has chosen to remove a picture
-         */
-        @Override
-        public void onRemovePictureChosen() {
-            mEditor.setPhotoBitmap(null);
-        }
-
-        /**
-         * Launches Camera to take a picture and store it in a file.
-         */
-        @Override
-        public void onTakePhotoChosen() {
-            mRawContactIdRequestingPhoto = mEditor.getRawContactId();
-            try {
-                // Launch camera to take photo for selected contact
-                PHOTO_DIR.mkdirs();
-                mCurrentPhotoFile = new File(PHOTO_DIR, getPhotoFileName());
-                final Intent intent = getTakePickIntent(mCurrentPhotoFile);
-
-                mStatus = Status.SUB_ACTIVITY;
-                startActivityForResult(intent, REQUEST_CODE_CAMERA_WITH_DATA);
-            } catch (ActivityNotFoundException e) {
-                Toast.makeText(mContext, R.string.photoPickerNotFoundText,
-                        Toast.LENGTH_LONG).show();
+            @Override
+            public void onDeleteRequested(Editor removedEditor) {
+                // The picture cannot be deleted, it can only be removed, which is handled by
+                // onRemovePictureChosen()
             }
-        }
 
-        /**
-         * Launches Gallery to pick a photo.
-         */
-        @Override
-        public void onPickFromGalleryChosen() {
-            mRawContactIdRequestingPhoto = mEditor.getRawContactId();
-            try {
-                // Launch picker to choose photo for selected contact
-                final Intent intent = getPhotoPickIntent();
+            /**
+             * User has chosen to set the selected photo as the (super) primary photo
+             */
+            @Override
+            public void onUseAsPrimaryChosen() {
+                // Set the IsSuperPrimary for each editor
+                int count = mContent.getChildCount();
+                for (int i = 0; i < count; i++) {
+                    final View childView = mContent.getChildAt(i);
+                    if (childView instanceof BaseRawContactEditorView) {
+                        final BaseRawContactEditorView editor =
+                                (BaseRawContactEditorView) childView;
+                        final PhotoEditorView photoEditor = editor.getPhotoEditor();
+                        photoEditor.setSuperPrimary(editor == mEditor);
+                    }
+                }
+            }
+
+            /**
+             * User has chosen to remove a picture
+             */
+            @Override
+            public void onRemovePictureChosen() {
+                mEditor.setPhotoBitmap(null);
+            }
+
+            @Override
+            public void startTakePhotoActivity(Intent intent, int requestCode, File photoFile) {
+                mRawContactIdRequestingPhoto = mEditor.getRawContactId();
                 mStatus = Status.SUB_ACTIVITY;
-                startActivityForResult(intent, REQUEST_CODE_PHOTO_PICKED_WITH_DATA);
-            } catch (ActivityNotFoundException e) {
-                Toast.makeText(mContext, R.string.photoPickerNotFoundText,
-                        Toast.LENGTH_LONG).show();
+                mCurrentPhotoFile = photoFile;
+                startActivityForResult(intent, requestCode);
+            }
+
+            @Override
+            public void startPickFromGalleryActivity(Intent intent, int requestCode,
+                    File photoFile) {
+                mRawContactIdRequestingPhoto = mEditor.getRawContactId();
+                mStatus = Status.SUB_ACTIVITY;
+                mCurrentPhotoFile = photoFile;
+                startActivityForResult(intent, requestCode);
+            }
+
+            @Override
+            public void onPhotoSelected(Bitmap bitmap) {
+                setPhoto(mRawContactIdRequestingPhoto, bitmap, mCurrentPhotoFile);
+                mRawContactIdRequestingPhoto = -1;
+            }
+
+            @Override
+            public File getCurrentPhotoFile() {
+                return mCurrentPhotoFile;
+            }
+
+            @Override
+            public void onPhotoSelectionDismissed() {
+                // Nothing to do.
             }
         }
     }
diff --git a/src/com/android/contacts/editor/ContactEditorUtils.java b/src/com/android/contacts/editor/ContactEditorUtils.java
index 05a041d..46006a0 100644
--- a/src/com/android/contacts/editor/ContactEditorUtils.java
+++ b/src/com/android/contacts/editor/ContactEditorUtils.java
@@ -19,6 +19,7 @@
 import com.android.contacts.model.AccountType;
 import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.model.AccountWithDataSet;
+import com.android.contacts.test.NeededForTesting;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Sets;
@@ -74,11 +75,13 @@
         return sInstance;
     }
 
+    @NeededForTesting
     void cleanupForTest() {
         mPrefs.edit().remove(KEY_DEFAULT_ACCOUNT).remove(KEY_KNOWN_ACCOUNTS)
                 .remove(KEY_ANYTHING_SAVED).apply();
     }
 
+    @NeededForTesting
     void removeDefaultAccountForTest() {
         mPrefs.edit().remove(KEY_DEFAULT_ACCOUNT).apply();
     }
diff --git a/src/com/android/contacts/editor/EventFieldEditorView.java b/src/com/android/contacts/editor/EventFieldEditorView.java
index 4a5a502..475e172 100644
--- a/src/com/android/contacts/editor/EventFieldEditorView.java
+++ b/src/com/android/contacts/editor/EventFieldEditorView.java
@@ -131,7 +131,9 @@
 
     @Override
     public boolean isEmpty() {
-        return TextUtils.isEmpty(mDateView.getText());
+        final EditField editField = getKind().fieldList.get(0);
+        final String column = editField.column;
+        return TextUtils.isEmpty(getEntry().getAsString(column));
     }
 
     @Override
@@ -243,6 +245,7 @@
                 } else {
                     resultString = kind.dateFormatWithYear.format(outCalendar.getTime());
                 }
+
                 onFieldChanged(column, resultString);
                 rebuildDateView();
             }
diff --git a/src/com/android/contacts/editor/LabeledEditorView.java b/src/com/android/contacts/editor/LabeledEditorView.java
index 2a1ec5e..c9e713b 100644
--- a/src/com/android/contacts/editor/LabeledEditorView.java
+++ b/src/com/android/contacts/editor/LabeledEditorView.java
@@ -286,7 +286,17 @@
         }
 
         // Field changes are saved directly
+        saveValue(column, value);
+
+        // Notify listener if applicable
+        notifyEditorListener();
+    }
+
+    protected void saveValue(String column, String value) {
         mEntry.put(column, value);
+    }
+
+    protected void notifyEditorListener() {
         if (mListener != null) {
             mListener.onRequest(EditorListener.FIELD_CHANGED);
         }
diff --git a/src/com/android/contacts/editor/PhotoActionPopup.java b/src/com/android/contacts/editor/PhotoActionPopup.java
index cca6f9d..9744308 100644
--- a/src/com/android/contacts/editor/PhotoActionPopup.java
+++ b/src/com/android/contacts/editor/PhotoActionPopup.java
@@ -29,15 +29,46 @@
 import java.util.ArrayList;
 
 /**
- * Shows a popup asking the user what to do for a photo. The result is pased back to the Listener
+ * Shows a popup asking the user what to do for a photo. The result is passed back to the Listener
  */
 public class PhotoActionPopup {
     public static final String TAG = "PhotoActionPopup";
 
-    public static final int MODE_NO_PHOTO = 0;
-    public static final int MODE_READ_ONLY_ALLOW_PRIMARY = 1;
-    public static final int MODE_PHOTO_DISALLOW_PRIMARY = 2;
-    public static final int MODE_PHOTO_ALLOW_PRIMARY = 3;
+    /**
+     * Bitmask flags to specify which actions should be presented to the user.
+     */
+    public static final class Flags {
+        /** If set, show choice to use as primary photo. */
+        public static final int ALLOW_PRIMARY = 1;
+        /** If set, show choice to remove photo. */
+        public static final int REMOVE_PHOTO = 2;
+        /** If set, show choices to take a picture with the camera, or pick one from the gallery. */
+        public static final int TAKE_OR_PICK_PHOTO = 4;
+        /**
+         *  If set, modifies the wording in the choices for TAKE_OR_PICK_PHOTO
+         *  to emphasize that the existing photo will be replaced.
+         */
+        public static final int TAKE_OR_PICK_PHOTO_REPLACE_WORDING = 8;
+    }
+
+    /**
+     * Convenient combinations of commonly-used flags (see {@link Flags}).
+     */
+    public static final class Modes {
+        public static final int NO_PHOTO =
+                Flags.TAKE_OR_PICK_PHOTO;
+        public static final int READ_ONLY_ALLOW_PRIMARY =
+                Flags.ALLOW_PRIMARY;
+        public static final int PHOTO_DISALLOW_PRIMARY =
+                Flags.REMOVE_PHOTO |
+                Flags.TAKE_OR_PICK_PHOTO |
+                Flags.TAKE_OR_PICK_PHOTO_REPLACE_WORDING;
+        public static final int PHOTO_ALLOW_PRIMARY =
+                Flags.ALLOW_PRIMARY |
+                Flags.REMOVE_PHOTO |
+                Flags.TAKE_OR_PICK_PHOTO |
+                Flags.TAKE_OR_PICK_PHOTO_REPLACE_WORDING;
+    }
 
     public static ListPopupWindow createPopupMenu(Context context, View anchorView,
             final Listener listener, int mode) {
@@ -45,29 +76,26 @@
         // if there are NO choices (e.g. a read-only picture is already super-primary)
         final ArrayList<ChoiceListItem> choices = new ArrayList<ChoiceListItem>(4);
         // Use as Primary
-        if (mode == MODE_PHOTO_ALLOW_PRIMARY || mode == MODE_READ_ONLY_ALLOW_PRIMARY) {
+        if ((mode & Flags.ALLOW_PRIMARY) > 0) {
             choices.add(new ChoiceListItem(ChoiceListItem.ID_USE_AS_PRIMARY,
                     context.getString(R.string.use_photo_as_primary)));
         }
         // Remove
-        if (mode == MODE_PHOTO_DISALLOW_PRIMARY || mode == MODE_PHOTO_ALLOW_PRIMARY) {
+        if ((mode & Flags.REMOVE_PHOTO) > 0) {
             choices.add(new ChoiceListItem(ChoiceListItem.ID_REMOVE,
                     context.getString(R.string.removePhoto)));
         }
-        // Take photo (if there is already a photo, it says "Take new photo")
-        if (mode == MODE_NO_PHOTO || mode == MODE_PHOTO_ALLOW_PRIMARY
-                || mode == MODE_PHOTO_DISALLOW_PRIMARY) {
-            final int resId = mode == MODE_NO_PHOTO ? R.string.take_photo :R.string.take_new_photo;
-            choices.add(new ChoiceListItem(ChoiceListItem.ID_TAKE_PHOTO,
-                    context.getString(resId)));
+        // Take photo or pick one from the gallery.  Wording differs if there is already a photo.
+        if ((mode & Flags.TAKE_OR_PICK_PHOTO) > 0) {
+            boolean replace = (mode & Flags.TAKE_OR_PICK_PHOTO_REPLACE_WORDING) > 0;
+            final int takePhotoResId = replace ? R.string.take_new_photo : R.string.take_photo;
+            final String takePhotoString = context.getString(takePhotoResId);
+            final int pickPhotoResId = replace ? R.string.pick_new_photo : R.string.pick_photo;
+            final String pickPhotoString = context.getString(pickPhotoResId);
+            choices.add(new ChoiceListItem(ChoiceListItem.ID_TAKE_PHOTO, takePhotoString));
+            choices.add(new ChoiceListItem(ChoiceListItem.ID_PICK_PHOTO, pickPhotoString));
         }
-        // Select from Gallery (or "Select new from Gallery")
-        if (mode == MODE_NO_PHOTO || mode == MODE_PHOTO_ALLOW_PRIMARY
-                || mode == MODE_PHOTO_DISALLOW_PRIMARY) {
-            final int resId = mode == MODE_NO_PHOTO ? R.string.pick_photo :R.string.pick_new_photo;
-            choices.add(new ChoiceListItem(ChoiceListItem.ID_PICK_PHOTO,
-                    context.getString(resId)));
-        }
+
         final ListAdapter adapter = new ArrayAdapter<ChoiceListItem>(context,
                 R.layout.select_dialog_item, choices);
 
@@ -76,8 +104,6 @@
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 final ChoiceListItem choice = choices.get(position);
-                listPopupWindow.dismiss();
-
                 switch (choice.getId()) {
                     case ChoiceListItem.ID_USE_AS_PRIMARY:
                         listener.onUseAsPrimaryChosen();
@@ -92,6 +118,8 @@
                         listener.onPickFromGalleryChosen();
                         break;
                 }
+
+                listPopupWindow.dismiss();
             }
         };
 
diff --git a/src/com/android/contacts/editor/PhotoEditorView.java b/src/com/android/contacts/editor/PhotoEditorView.java
index 086b07f..db29544 100644
--- a/src/com/android/contacts/editor/PhotoEditorView.java
+++ b/src/com/android/contacts/editor/PhotoEditorView.java
@@ -132,25 +132,13 @@
             return;
         }
 
-        final int size = photo.getWidth() * photo.getHeight() * 4;
-        final ByteArrayOutputStream out = new ByteArrayOutputStream(size);
+        mPhotoImageView.setImageBitmap(photo);
+        mFrameView.setEnabled(isEnabled());
+        mHasSetPhoto = true;
+        mEntry.setFromTemplate(false);
 
-        try {
-            photo.compress(Bitmap.CompressFormat.PNG, 100, out);
-            out.flush();
-            out.close();
-
-            mEntry.put(Photo.PHOTO, out.toByteArray());
-            mPhotoImageView.setImageBitmap(photo);
-            mFrameView.setEnabled(isEnabled());
-            mHasSetPhoto = true;
-            mEntry.setFromTemplate(false);
-
-            // When the user chooses a new photo mark it as super primary
-            mEntry.put(Photo.IS_SUPER_PRIMARY, 1);
-        } catch (IOException e) {
-            Log.w(TAG, "Unable to serialize photo: " + e.toString());
-        }
+        // When the user chooses a new photo mark it as super primary
+        mEntry.put(Photo.IS_SUPER_PRIMARY, 1);
     }
 
     /**
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index c9c6699..efb6b13 100644
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -307,6 +307,9 @@
 
         addToDefaultGroupIfNeeded();
 
+
+        final int sectionCount = getSectionViewsWithoutFields().size();
+        mAddFieldButton.setVisibility(sectionCount > 0 ? View.VISIBLE : View.GONE);
         mAddFieldButton.setEnabled(isEnabled());
     }
 
@@ -405,12 +408,14 @@
         return mRawContactId;
     }
 
-    private void showAddInformationPopupWindow() {
+    /**
+     * Return a list of KindSectionViews that have no fields yet...
+     * these are candidates to have fields added in
+     * {@link #showAddInformationPopupWindow()}
+     */
+    private ArrayList<KindSectionView> getSectionViewsWithoutFields() {
         final ArrayList<KindSectionView> fields =
                 new ArrayList<KindSectionView>(mFields.getChildCount());
-
-        final PopupMenu popupMenu = new PopupMenu(getContext(), mAddFieldButton);
-        final Menu menu = popupMenu.getMenu();
         for (int i = 0; i < mFields.getChildCount(); i++) {
             View child = mFields.getChildAt(i);
             if (child instanceof KindSectionView) {
@@ -434,10 +439,19 @@
                     continue;
                 }
 
-                menu.add(Menu.NONE, fields.size(), Menu.NONE, sectionView.getTitle());
                 fields.add(sectionView);
             }
         }
+        return fields;
+    }
+
+    private void showAddInformationPopupWindow() {
+        final ArrayList<KindSectionView> fields = getSectionViewsWithoutFields();
+        final PopupMenu popupMenu = new PopupMenu(getContext(), mAddFieldButton);
+        final Menu menu = popupMenu.getMenu();
+        for (int i = 0; i < fields.size(); i++) {
+            menu.add(Menu.NONE, i, Menu.NONE, fields.get(i).getTitle());
+        }
 
         popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
             @Override
@@ -449,6 +463,13 @@
                 } else {
                     view.addItem();
                 }
+
+                // If this was the last section without an entry, we just added one, and therefore
+                // there's no reason to show the button.
+                if (fields.size() == 1) {
+                    mAddFieldButton.setVisibility(View.GONE);
+                }
+
                 return true;
             }
         });
diff --git a/src/com/android/contacts/editor/StructuredNameEditorView.java b/src/com/android/contacts/editor/StructuredNameEditorView.java
index 6911628..af1b3cf 100644
--- a/src/com/android/contacts/editor/StructuredNameEditorView.java
+++ b/src/com/android/contacts/editor/StructuredNameEditorView.java
@@ -77,11 +77,12 @@
         if (!isFieldChanged(column, value)) {
             return;
         }
-        super.onFieldChanged(column, value);
 
+        // First save the new value for the column.
+        saveValue(column, value);
         mChanged = true;
 
-        // Make sure the display name and the structured name are synced
+        // Next make sure the display name and the structured name are synced
         if (hasShortAndLongForms()) {
             if (areOptionalFieldsVisible()) {
                 rebuildFullName(getValues());
@@ -89,6 +90,10 @@
                 rebuildStructuredName(getValues());
             }
         }
+
+        // Then notify the listener, which will rely on the display and structured names to be
+        // synced (in order to provide aggregate suggestions).
+        notifyEditorListener();
     }
 
     @Override
diff --git a/src/com/android/contacts/format/FormatUtils.java b/src/com/android/contacts/format/FormatUtils.java
index 4b076cf..82bf78d 100644
--- a/src/com/android/contacts/format/FormatUtils.java
+++ b/src/com/android/contacts/format/FormatUtils.java
@@ -28,6 +28,8 @@
  * Assorted utility methods related to text formatting in Contacts.
  */
 public class FormatUtils {
+    private static final char LEFT_TO_RIGHT_EMBEDDING = '\u202A';
+    private static final char POP_DIRECTIONAL_FORMATTING = '\u202C';
 
     /**
      * Finds the earliest point in buffer1 at which the first part of buffer2 matches.  For example,
@@ -180,4 +182,13 @@
 
         return -1;
     }
+
+    /** Returns the given text, forced to be left-to-right. */
+    public static CharSequence forceLeftToRight(CharSequence text) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(LEFT_TO_RIGHT_EMBEDDING);
+        sb.append(text);
+        sb.append(POP_DIRECTIONAL_FORMATTING);
+        return sb.toString();
+    }
 }
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index f0e4175..3a43e66 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -23,6 +23,7 @@
 import com.android.contacts.interactions.GroupDeletionDialogFragment;
 import com.android.contacts.list.ContactTileAdapter;
 import com.android.contacts.list.ContactTileAdapter.DisplayType;
+import com.android.contacts.list.ContactTileView;
 import com.android.contacts.model.AccountType;
 import com.android.contacts.model.AccountTypeManager;
 
@@ -42,6 +43,7 @@
 import android.os.Bundle;
 import android.provider.ContactsContract.Groups;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -203,13 +205,19 @@
         getLoaderManager().restartLoader(LOADER_MEMBERS, null, mGroupMemberListLoaderListener);
     }
 
-    private final ContactTileAdapter.Listener mContactTileListener =
-            new ContactTileAdapter.Listener() {
+    private final ContactTileView.Listener mContactTileListener =
+            new ContactTileView.Listener() {
 
         @Override
         public void onContactSelected(Uri contactUri, Rect targetRect) {
             mListener.onContactSelected(contactUri);
         }
+
+        @Override
+        public void onCallNumberDirectly(String phoneNumber) {
+            // No need to call phone number directly from People app.
+            Log.w(TAG, "unexpected invocation of onCallNumberDirectly()");
+        }
     };
 
     /**
diff --git a/src/com/android/contacts/group/GroupEditorFragment.java b/src/com/android/contacts/group/GroupEditorFragment.java
index a3ebeb0..9d056f4 100644
--- a/src/com/android/contacts/group/GroupEditorFragment.java
+++ b/src/com/android/contacts/group/GroupEditorFragment.java
@@ -550,7 +550,6 @@
         public Dialog onCreateDialog(Bundle savedInstanceState) {
             AlertDialog dialog = new AlertDialog.Builder(getActivity())
                     .setIconAttribute(android.R.attr.alertDialogIcon)
-                    .setTitle(R.string.cancel_confirmation_dialog_title)
                     .setMessage(R.string.cancel_confirmation_dialog_message)
                     .setPositiveButton(android.R.string.ok,
                         new DialogInterface.OnClickListener() {
diff --git a/src/com/android/contacts/interactions/ContactDeletionInteraction.java b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
index 7e880a4..4aa4030 100644
--- a/src/com/android/contacts/interactions/ContactDeletionInteraction.java
+++ b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
@@ -274,7 +274,6 @@
 
     private void showDialog(int messageId, final Uri contactUri) {
         mDialog = new AlertDialog.Builder(getActivity())
-                .setTitle(R.string.deleteConfirmation_title)
                 .setIconAttribute(android.R.attr.alertDialogIcon)
                 .setMessage(messageId)
                 .setNegativeButton(android.R.string.cancel, null)
diff --git a/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java b/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java
index c1f3bd7..09306f2 100644
--- a/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java
+++ b/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java
@@ -52,7 +52,6 @@
 
         return new AlertDialog.Builder(getActivity())
                 .setIconAttribute(android.R.attr.alertDialogIcon)
-                .setTitle(R.string.delete_group_dialog_title)
                 .setMessage(message)
                 .setPositiveButton(android.R.string.ok,
                     new DialogInterface.OnClickListener() {
diff --git a/src/com/android/contacts/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/interactions/ImportExportDialogFragment.java
index 7fdc47e..521d2f0 100644
--- a/src/com/android/contacts/interactions/ImportExportDialogFragment.java
+++ b/src/com/android/contacts/interactions/ImportExportDialogFragment.java
@@ -55,14 +55,18 @@
     public static final String TAG = "ImportExportDialogFragment";
 
     private static final String KEY_RES_ID = "resourceId";
+    private static final String ARG_CONTACTS_ARE_AVAILABLE = "CONTACTS_ARE_AVAILABLE";
 
     private final String[] LOOKUP_PROJECTION = new String[] {
             Contacts.LOOKUP_KEY
     };
 
     /** Preferred way to show this dialog */
-    public static void show(FragmentManager fragmentManager) {
+    public static void show(FragmentManager fragmentManager, boolean contactsAreAvailable) {
         final ImportExportDialogFragment fragment = new ImportExportDialogFragment();
+        Bundle args = new Bundle();
+        args.putBoolean(ARG_CONTACTS_ARE_AVAILABLE, contactsAreAvailable);
+        fragment.setArguments(args);
         fragment.show(fragmentManager, ImportExportDialogFragment.TAG);
     }
 
@@ -72,6 +76,7 @@
         final Resources res = getActivity().getResources();
         final LayoutInflater dialogInflater = (LayoutInflater)getActivity()
                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        final boolean contactsAreAvailable = getArguments().getBoolean(ARG_CONTACTS_ARE_AVAILABLE);
 
         // Adapter that shows a list of string resources
         final ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(getActivity(),
@@ -95,10 +100,14 @@
             adapter.add(R.string.import_from_sdcard);
         }
         if (res.getBoolean(R.bool.config_allow_export_to_sdcard)) {
-            adapter.add(R.string.export_to_sdcard);
+            if (contactsAreAvailable) {
+                adapter.add(R.string.export_to_sdcard);
+            }
         }
         if (res.getBoolean(R.bool.config_allow_share_visible_contacts)) {
-            adapter.add(R.string.share_visible_contacts);
+            if (contactsAreAvailable) {
+                adapter.add(R.string.share_visible_contacts);
+            }
         }
 
         final DialogInterface.OnClickListener clickListener =
@@ -136,7 +145,9 @@
             }
         };
         return new AlertDialog.Builder(getActivity())
-                .setTitle(R.string.dialog_import_export)
+                .setTitle(contactsAreAvailable
+                        ? R.string.dialog_import_export
+                        : R.string.dialog_import)
                 .setSingleChoiceItems(adapter, -1, clickListener)
                 .create();
     }
diff --git a/src/com/android/contacts/interactions/PhoneNumberInteraction.java b/src/com/android/contacts/interactions/PhoneNumberInteraction.java
index 4c75896..401cbb1 100644
--- a/src/com/android/contacts/interactions/PhoneNumberInteraction.java
+++ b/src/com/android/contacts/interactions/PhoneNumberInteraction.java
@@ -47,6 +47,7 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.RawContacts;
@@ -65,6 +66,11 @@
  * Initiates phone calls or a text message. If there are multiple candidates, this class shows a
  * dialog to pick one. Creating one of these interactions should be done through the static
  * factory methods.
+ *
+ * Note that this class initiates not only usual *phone* calls but also *SIP* calls.
+ *
+ * TODO: clean up code and documents since it is quite confusing to use "phone numbers" or
+ *        "phone calls" here while they can be SIP addresses or SIP calls (See also issue 5039627).
  */
 public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> {
     private static final String TAG = PhoneNumberInteraction.class.getSimpleName();
@@ -86,6 +92,8 @@
         String dataSet;
         long type;
         String label;
+        /** {@link Phone#CONTENT_ITEM_TYPE} or {@link SipAddress#CONTENT_ITEM_TYPE}. */
+        String mimeType;
 
         public PhoneItem() {
         }
@@ -97,6 +105,7 @@
             this.dataSet     = in.readString();
             this.type        = in.readLong();
             this.label       = in.readString();
+            this.mimeType    = in.readString();
         }
 
         public void writeToParcel(Parcel dest, int flags) {
@@ -106,6 +115,7 @@
             dest.writeString(dataSet);
             dest.writeLong(type);
             dest.writeString(label);
+            dest.writeString(mimeType);
         }
 
         public int describeContents() {
@@ -260,11 +270,15 @@
             RawContacts.ACCOUNT_TYPE,
             RawContacts.DATA_SET,
             Phone.TYPE,
-            Phone.LABEL
+            Phone.LABEL,
+            Phone.MIMETYPE
     };
 
-    private static final String PHONE_NUMBER_SELECTION = Data.MIMETYPE + "='"
-            + Phone.CONTENT_ITEM_TYPE + "' AND " + Phone.NUMBER + " NOT NULL";
+    private static final String PHONE_NUMBER_SELECTION =
+            Data.MIMETYPE + " IN ('"
+                + Phone.CONTENT_ITEM_TYPE + "', "
+                + "'" + SipAddress.CONTENT_ITEM_TYPE + "') AND "
+                + Data.DATA1 + " NOT NULL";
 
     private final Context mContext;
     private final OnDismissListener mDismissListener;
@@ -308,11 +322,7 @@
                         Intent.ACTION_SENDTO, Uri.fromParts("sms", phoneNumber, null));
                 break;
             default:
-                intent = new Intent(
-                        Intent.ACTION_CALL_PRIVILEGED, Uri.fromParts("tel", phoneNumber, null));
-                if (callOrigin != null) {
-                    intent.putExtra(DialtactsActivity.EXTRA_CALL_ORIGIN, callOrigin);
-                }
+                intent = ContactsUtils.getCallIntent(phoneNumber, callOrigin);
                 break;
         }
         context.startActivity(intent);
@@ -378,6 +388,7 @@
                 item.dataSet = cursor.getString(cursor.getColumnIndex(RawContacts.DATA_SET));
                 item.type = cursor.getInt(cursor.getColumnIndex(Phone.TYPE));
                 item.label = cursor.getString(cursor.getColumnIndex(Phone.LABEL));
+                item.mimeType = cursor.getString(cursor.getColumnIndex(Phone.MIMETYPE));
 
                 phoneList.add(item);
             }
@@ -396,8 +407,9 @@
         if (phoneList.size() == 0) {
             onDismiss();
         } else if (phoneList.size() == 1) {
+            PhoneItem item = phoneList.get(0);
             onDismiss();
-            performAction(phoneList.get(0).phoneNumber);
+            performAction(item.phoneNumber);
         } else {
             // There are multiple candidates. Let the user choose one.
             showDisambiguationDialog(phoneList);
diff --git a/src/com/android/contacts/list/AccountFilterActivity.java b/src/com/android/contacts/list/AccountFilterActivity.java
index 14db634..2624e5d 100644
--- a/src/com/android/contacts/list/AccountFilterActivity.java
+++ b/src/com/android/contacts/list/AccountFilterActivity.java
@@ -56,11 +56,14 @@
     private static final int SUBACTIVITY_CUSTOMIZE_FILTER = 0;
 
     public static final String KEY_EXTRA_CONTACT_LIST_FILTER = "contactListFilter";
+    public static final String KEY_EXTRA_CURRENT_FILTER = "currentFilter";
 
     private static final int FILTER_LOADER_ID = 0;
 
     private ListView mListView;
 
+    private ContactListFilter mCurrentFilter;
+
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
@@ -74,6 +77,8 @@
             actionBar.setDisplayHomeAsUpEnabled(true);
         }
 
+        mCurrentFilter = getIntent().getParcelableExtra(KEY_EXTRA_CURRENT_FILTER);
+
         getLoaderManager().initLoader(FILTER_LOADER_ID, null, new MyLoaderCallbacks());
     }
 
@@ -151,7 +156,8 @@
                 Log.e(TAG, "Failed to load filters");
                 return;
             }
-            mListView.setAdapter(new FilterListAdapter(AccountFilterActivity.this, data));
+            mListView.setAdapter(
+                    new FilterListAdapter(AccountFilterActivity.this, data, mCurrentFilter));
         }
 
         @Override
@@ -197,11 +203,16 @@
     private static class FilterListAdapter extends BaseAdapter {
         private final List<ContactListFilter> mFilters;
         private final LayoutInflater mLayoutInflater;
+        private final AccountTypeManager mAccountTypes;
+        private final ContactListFilter mCurrentFilter;
 
-        public FilterListAdapter(Context context, List<ContactListFilter> filters) {
+        public FilterListAdapter(
+                Context context, List<ContactListFilter> filters, ContactListFilter current) {
             mLayoutInflater = (LayoutInflater) context.getSystemService
                     (Context.LAYOUT_INFLATER_SERVICE);
             mFilters = filters;
+            mCurrentFilter = current;
+            mAccountTypes = AccountTypeManager.getInstance(context);
         }
 
         @Override
@@ -230,8 +241,9 @@
             view.setSingleAccount(mFilters.size() == 1);
             final ContactListFilter filter = mFilters.get(position);
             view.setContactListFilter(filter);
-            view.bindView(true);
+            view.bindView(mAccountTypes);
             view.setTag(filter);
+            view.setActivated(filter.equals(mCurrentFilter));
             return view;
         }
     }
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 4c38efb..a2b61c7 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -300,7 +300,7 @@
      * Sets the new selection for the list.
      */
     public void setSelectedContactUri(Uri uri) {
-        setSelectedContactUri(uri, true, true, true, false);
+        setSelectedContactUri(uri, true, false /* no smooth scroll */, true, false);
     }
 
     @Override
diff --git a/src/com/android/contacts/list/ContactEntryListAdapter.java b/src/com/android/contacts/list/ContactEntryListAdapter.java
index 9c36f05..ac4d399 100644
--- a/src/com/android/contacts/list/ContactEntryListAdapter.java
+++ b/src/com/android/contacts/list/ContactEntryListAdapter.java
@@ -18,7 +18,6 @@
 import com.android.contacts.ContactPhotoManager;
 import com.android.contacts.R;
 import com.android.contacts.widget.IndexerListAdapter;
-import com.android.contacts.widget.TextWithHighlightingFactory;
 
 import android.content.Context;
 import android.content.CursorLoader;
@@ -54,13 +53,8 @@
      */
     private static final boolean LOCAL_INVISIBLE_DIRECTORY_ENABLED = false;
 
-    /**
-     * The animation is used here to allocate animated name text views.
-     */
-    private TextWithHighlightingFactory mTextWithHighlightingFactory;
     private int mDisplayOrder;
     private int mSortOrder;
-    private boolean mNameHighlightingEnabled;
 
     private boolean mDisplayPhotos;
     private boolean mQuickContactEnabled;
@@ -136,6 +130,28 @@
         return partition;
     }
 
+    /**
+     * Remove all directories after the default directory. This is typically used when contacts
+     * list screens are asked to exit the search mode and thus need to remove all remote directory
+     * results for the search.
+     *
+     * This code assumes that the default directory and directories before that should not be
+     * deleted (e.g. Join screen has "suggested contacts" directory before the default director,
+     * and we should not remove the directory).
+     */
+    /* package */ void removeDirectoriesAfterDefault() {
+        final int partitionCount = getPartitionCount();
+        for (int i = partitionCount - 1; i >= 0; i--) {
+            final Partition partition = getPartition(i);
+            if ((partition instanceof DirectoryPartition)
+                    && ((DirectoryPartition) partition).getDirectoryId() == Directory.DEFAULT) {
+                break;
+            } else {
+                removePartition(i);
+            }
+        }
+    }
+
     private int getPartitionByDirectoryId(long id) {
         int count = getPartitionCount();
         for (int i = 0; i < count; i++) {
@@ -602,8 +618,16 @@
 
     // TODO: move sharable logic (bindXX() methods) to here with extra arguments
 
+    /**
+     * Loads the photo for the quick contact view and assigns the contact uri.
+     * @param photoIdColumn Index of the photo id column
+     * @param photoUriColumn Index of the photo uri column. Optional: Can be -1
+     * @param contactIdColumn Index of the contact id column
+     * @param lookUpKeyColumn Index of the lookup key column
+     */
     protected void bindQuickContact(final ContactListItemView view, int partitionIndex,
-            Cursor cursor, int photoIdColumn, int contactIdColumn, int lookUpKeyColumn) {
+            Cursor cursor, int photoIdColumn, int photoUriColumn, int contactIdColumn,
+            int lookUpKeyColumn) {
         long photoId = 0;
         if (!cursor.isNull(photoIdColumn)) {
             photoId = cursor.getLong(photoIdColumn);
@@ -612,7 +636,15 @@
         QuickContactBadge quickContact = view.getQuickContact();
         quickContact.assignContactUri(
                 getContactUri(partitionIndex, cursor, contactIdColumn, lookUpKeyColumn));
-        getPhotoLoader().loadPhoto(quickContact, photoId, false, mDarkTheme);
+
+        if (photoId != 0 || photoUriColumn == -1) {
+            getPhotoLoader().loadPhoto(quickContact, photoId, false, mDarkTheme);
+        } else {
+            final String photoUriString = cursor.getString(photoUriColumn);
+            final Uri photoUri = photoUriString == null ? null : Uri.parse(photoUriString);
+            getPhotoLoader().loadPhoto(quickContact, photoUri, false, mDarkTheme);
+        }
+
     }
 
     protected Uri getContactUri(int partitionIndex, Cursor cursor,
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index 8db477e..5ee25a2 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -613,12 +613,10 @@
 
                 mAdapter.clearPartitions();
                 if (!flag) {
-                    // If we are switching from search to regular display,
-                    // remove all directory partitions (except the default one).
-                    int count = mAdapter.getPartitionCount();
-                    for (int i = count; --i >= 1;) {
-                        mAdapter.removePartition(i);
-                    }
+                    // If we are switching from search to regular display, remove all directory
+                    // partitions after default one, assuming they are remote directories which
+                    // should be cleaned up on exiting the search mode.
+                    mAdapter.removeDirectoriesAfterDefault();
                 }
                 mAdapter.configureDefaultPartition(false, flag);
             }
diff --git a/src/com/android/contacts/list/ContactListAdapter.java b/src/com/android/contacts/list/ContactListAdapter.java
index a8caf3b..81fcb84 100644
--- a/src/com/android/contacts/list/ContactListAdapter.java
+++ b/src/com/android/contacts/list/ContactListAdapter.java
@@ -23,7 +23,6 @@
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.ContactCounts;
 import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Directory;
 import android.provider.ContactsContract.SearchSnippetColumns;
 import android.text.TextUtils;
diff --git a/src/com/android/contacts/list/ContactListFilter.java b/src/com/android/contacts/list/ContactListFilter.java
index 07319f9..172cbe2 100644
--- a/src/com/android/contacts/list/ContactListFilter.java
+++ b/src/com/android/contacts/list/ContactListFilter.java
@@ -18,8 +18,10 @@
 
 import android.content.SharedPreferences;
 import android.graphics.drawable.Drawable;
+import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.provider.ContactsContract.RawContacts;
 import android.text.TextUtils;
 
 /**
@@ -252,6 +254,23 @@
         return mId;
     }
 
+    /**
+     * Adds the account query parameters to the given {@code uriBuilder}.
+     *
+     * @throws IllegalStateException if the filter type is not {@link #FILTER_TYPE_ACCOUNT}.
+     */
+    public Uri.Builder addAccountQueryParameterToUrl(Uri.Builder uriBuilder) {
+        if (filterType != FILTER_TYPE_ACCOUNT) {
+            throw new IllegalStateException("filterType must be FILTER_TYPE_ACCOUNT");
+        }
+        uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName);
+        uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType);
+        if (!TextUtils.isEmpty(dataSet)) {
+            uriBuilder.appendQueryParameter(RawContacts.DATA_SET, dataSet);
+        }
+        return uriBuilder;
+    }
+
     public String toDebugString() {
         final StringBuilder builder = new StringBuilder();
         builder.append("[filter type: " + filterType + " (" + filterTypeToString(filterType) + ")");
diff --git a/src/com/android/contacts/list/ContactListFilterController.java b/src/com/android/contacts/list/ContactListFilterController.java
index 8126c62..9f483f1 100644
--- a/src/com/android/contacts/list/ContactListFilterController.java
+++ b/src/com/android/contacts/list/ContactListFilterController.java
@@ -50,6 +50,9 @@
 
     public abstract void removeListener(ContactListFilterListener listener);
 
+    /**
+     * Return the currently-active filter.
+     */
     public abstract ContactListFilter getFilter();
 
     /**
diff --git a/src/com/android/contacts/list/ContactListFilterView.java b/src/com/android/contacts/list/ContactListFilterView.java
index 398a864..3fa20a1 100644
--- a/src/com/android/contacts/list/ContactListFilterView.java
+++ b/src/com/android/contacts/list/ContactListFilterView.java
@@ -17,6 +17,8 @@
 package com.android.contacts.list;
 
 import com.android.contacts.R;
+import com.android.contacts.model.AccountType;
+import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.util.ThemeUtils;
 
 import android.content.Context;
@@ -32,8 +34,8 @@
 public class ContactListFilterView extends LinearLayout {
 
     private ImageView mIcon;
-    private TextView mLabel;
-    private View mIndent;
+    private TextView mAccountType;
+    private TextView mAccountUserName;
     private ContactListFilter mFilter;
     private boolean mSingleAccount;
     private int mActivatedBackground;
@@ -58,78 +60,70 @@
         this.mSingleAccount = flag;
     }
 
-    public void bindView(boolean dropdown) {
-        if (dropdown) {
-            if (mActivatedBackground == 0) {
-                mActivatedBackground = ThemeUtils.getActivatedBackground(getContext().getTheme());
-            }
-            setBackgroundResource(mActivatedBackground);
+    public void bindView(AccountTypeManager accountTypes) {
+        if (mActivatedBackground == 0) {
+            mActivatedBackground = ThemeUtils.getActivatedBackground(getContext().getTheme());
         }
+        setBackgroundResource(mActivatedBackground);
 
-        if (mLabel == null) {
+        if (mAccountType == null) {
             mIcon = (ImageView) findViewById(R.id.icon);
-            mLabel = (TextView) findViewById(R.id.label);
-            mIndent = findViewById(R.id.indent);
+            mAccountType = (TextView) findViewById(R.id.accountType);
+            mAccountUserName = (TextView) findViewById(R.id.accountUserName);
         }
 
         if (mFilter == null) {
-            mLabel.setText(R.string.contactsList);
+            mAccountType.setText(R.string.contactsList);
             return;
         }
 
+        mAccountUserName.setVisibility(View.GONE);
         switch (mFilter.filterType) {
             case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
-                bindView(R.drawable.ic_menu_contacts_holo_light, R.string.list_filter_all_accounts,
-                        dropdown);
+                bindView(0, R.string.list_filter_all_accounts);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_STARRED: {
-                bindView(R.drawable.ic_menu_star_holo_light, R.string.list_filter_all_starred,
-                        dropdown);
+                bindView(R.drawable.ic_menu_star_holo_light, R.string.list_filter_all_starred);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_CUSTOM: {
-                bindView(R.drawable.ic_menu_settings_holo_light,
-                        dropdown ? R.string.list_filter_customize : R.string.list_filter_custom,
-                        dropdown);
+                bindView(R.drawable.ic_menu_settings_holo_light, R.string.list_filter_customize);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY: {
-                bindView(0, R.string.list_filter_phones, dropdown);
+                bindView(0, R.string.list_filter_phones);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT: {
-                bindView(0, R.string.list_filter_single, dropdown);
+                bindView(0, R.string.list_filter_single);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_ACCOUNT: {
+                mAccountUserName.setVisibility(View.VISIBLE);
                 mIcon.setVisibility(View.VISIBLE);
                 if (mFilter.icon != null) {
                     mIcon.setImageDrawable(mFilter.icon);
                 } else {
                     mIcon.setImageResource(R.drawable.unknown_source);
                 }
-                mLabel.setText(mFilter.accountName);
-                if (dropdown) {
-                    mIndent.setVisibility(View.GONE);
-                }
+                final AccountType accountType =
+                        accountTypes.getAccountType(mFilter.accountType, mFilter.dataSet);
+                mAccountUserName.setText(mFilter.accountName);
+                mAccountType.setText(accountType.getDisplayLabel(getContext()));
                 break;
             }
         }
     }
 
-    private void bindView(int iconResource, int textResource, boolean dropdown) {
+    private void bindView(int iconResource, int textResource) {
         if (iconResource != 0) {
             mIcon.setVisibility(View.VISIBLE);
             mIcon.setImageResource(iconResource);
         } else {
-            mIcon.setVisibility(dropdown ? View.INVISIBLE : View.GONE);
+            mIcon.setVisibility(View.GONE);
         }
 
-        mLabel.setText(textResource);
-
-        if (mIndent != null) {
-            mIndent.setVisibility(View.GONE);
-        }
+        mAccountType.setText(textResource);
     }
 }
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index 490cd92..26df446 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -50,7 +50,7 @@
     private static final String TAG = ContactTileAdapter.class.getSimpleName();
 
     private DisplayType mDisplayType;
-    private Listener mListener;
+    private ContactTileView.Listener mListener;
     private Context mContext;
     private Resources mResources;
     private Cursor mContactCursor = null;
@@ -114,7 +114,7 @@
         GROUP_MEMBERS
     }
 
-    public ContactTileAdapter(Context context, Listener listener, int numCols,
+    public ContactTileAdapter(Context context, ContactTileView.Listener listener, int numCols,
             DisplayType displayType) {
         mListener = listener;
         mContext = context;
@@ -474,16 +474,6 @@
         return getRowCount(mDividerPosition);
     }
 
-    private ContactTileView.Listener mContactTileListener = new ContactTileView.Listener() {
-        @Override
-        public void onClick(ContactTileView contactTileView) {
-            if (mListener != null) {
-                mListener.onContactSelected(contactTileView.getLookupUri(),
-                        ContactsUtils.getTargetRectFromView(mContext, contactTileView));
-            }
-        }
-    };
-
     /**
      * Acts as a row item composed of {@link ContactTileView}
      *
@@ -531,7 +521,7 @@
                         0);
                 contactTile.setLayoutParams(params);
                 contactTile.setPhotoManager(mPhotoManager);
-                contactTile.setListener(mContactTileListener);
+                contactTile.setListener(mListener);
                 addView(contactTile);
             } else {
                 contactTile = (ContactTileView) getChildAt(childIndex);
@@ -667,8 +657,4 @@
         public static final int FREQUENT = 2;
         public static final int STARRED_WITH_SECONDARY_ACTION = 3;
     }
-
-    public interface Listener {
-        public void onContactSelected(Uri contactUri, Rect targetRect);
-    }
 }
diff --git a/src/com/android/contacts/list/ContactTileDarkFrequentView.java b/src/com/android/contacts/list/ContactTileDarkFrequentView.java
deleted file mode 100644
index 78f45bd..0000000
--- a/src/com/android/contacts/list/ContactTileDarkFrequentView.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2011 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.list;
-
-import android.content.Context;
-import android.util.AttributeSet;
-
-/**
- * A dark version of the {@link ContactTileView} (This class is needed to load the proper avatar)
- */
-public class ContactTileDarkFrequentView extends ContactTileView {
-    public ContactTileDarkFrequentView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    @Override
-    protected boolean isDarkTheme() {
-        return true;
-    }
-}
diff --git a/src/com/android/contacts/list/ContactTileListFragment.java b/src/com/android/contacts/list/ContactTileListFragment.java
index d4d961b..fbd7fec 100644
--- a/src/com/android/contacts/list/ContactTileListFragment.java
+++ b/src/com/android/contacts/list/ContactTileListFragment.java
@@ -49,7 +49,8 @@
     private static final String TAG = ContactTileListFragment.class.getSimpleName();
 
     public interface Listener {
-        public void onContactSelected(Uri contactUri, Rect targetRect);
+        void onContactSelected(Uri contactUri, Rect targetRect);
+        void onCallNumberDirectly(String phoneNumber);
     }
 
     private static int LOADER_CONTACTS = 1;
@@ -94,8 +95,7 @@
     @Override
     public void onStart() {
         super.onStart();
-        // TODO: Use initLoader?
-        getLoaderManager().restartLoader(LOADER_CONTACTS, null, mContactTileLoaderListener);
+        getLoaderManager().initLoader(LOADER_CONTACTS, null, mContactTileLoaderListener);
     }
 
     public void setColumnCount(int columnCount) {
@@ -164,13 +164,20 @@
         mListener = listener;
     }
 
-    private ContactTileAdapter.Listener mAdapterListener =
-            new ContactTileAdapter.Listener() {
+    private ContactTileView.Listener mAdapterListener =
+            new ContactTileView.Listener() {
         @Override
         public void onContactSelected(Uri contactUri, Rect targetRect) {
             if (mListener != null) {
                 mListener.onContactSelected(contactUri, targetRect);
             }
         }
+
+        @Override
+        public void onCallNumberDirectly(String phoneNumber) {
+            if (mListener != null) {
+                mListener.onCallNumberDirectly(phoneNumber);
+            }
+        }
     };
 }
diff --git a/src/com/android/contacts/list/ContactTilePhoneFrequentView.java b/src/com/android/contacts/list/ContactTilePhoneFrequentView.java
new file mode 100644
index 0000000..d924b03
--- /dev/null
+++ b/src/com/android/contacts/list/ContactTilePhoneFrequentView.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2011 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.list;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.text.TextUtils;
+
+import com.android.contacts.ContactsUtils;
+import com.android.contacts.list.ContactTileAdapter.ContactEntry;
+
+/**
+ * A dark version of the {@link ContactTileView} that is used in Dialtacts
+ * for frequently called contacts.  Slightly different behavior from superclass...
+ * when you tap it, you want to call the frequently-called number for the
+ * contact, even if that is not the default number for that contact.
+ */
+public class ContactTilePhoneFrequentView extends ContactTileView {
+    private String mPhoneNumberString;
+
+    public ContactTilePhoneFrequentView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected boolean isDarkTheme() {
+        return true;
+    }
+
+    @Override
+    public void loadFromContact(ContactEntry entry) {
+        super.loadFromContact(entry);
+        mPhoneNumberString = null; // ... in case we're reusing the view
+        if (entry != null) {
+            // Grab the phone-number to call directly... see {@link onClick()}
+            mPhoneNumberString = entry.phoneNumber;
+        }
+    }
+
+    @Override
+    protected OnClickListener createClickListener() {
+        return new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mListener == null) return;
+                if (TextUtils.isEmpty(mPhoneNumberString)) {
+                    // Copy "superclass" implementation
+                    mListener.onContactSelected(getLookupUri(), ContactsUtils.getTargetRectFromView(
+                            mContext, ContactTilePhoneFrequentView.this));
+                } else {
+                    // When you tap a frequently-called contact, you want to
+                    // call them at the number that you usually talk to them
+                    // at (i.e. the one displayed in the UI), regardless of
+                    // whether that's their default number.
+                    mListener.onCallNumberDirectly(mPhoneNumberString);
+                }
+            }
+        };
+    }
+}
diff --git a/src/com/android/contacts/list/ContactTileView.java b/src/com/android/contacts/list/ContactTileView.java
index 0b90c44..e73b9c1 100644
--- a/src/com/android/contacts/list/ContactTileView.java
+++ b/src/com/android/contacts/list/ContactTileView.java
@@ -16,10 +16,12 @@
 package com.android.contacts.list;
 
 import com.android.contacts.ContactPhotoManager;
+import com.android.contacts.ContactsUtils;
 import com.android.contacts.R;
 import com.android.contacts.list.ContactTileAdapter.ContactEntry;
 
 import android.content.Context;
+import android.graphics.Rect;
 import android.net.Uri;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -45,7 +47,7 @@
     private ContactPhotoManager mPhotoManager = null;
     private View mPushState;
     private View mHorizontalDivider;
-    private Listener mListener;
+    protected Listener mListener;
 
     public ContactTileView(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -64,14 +66,8 @@
         mPushState = findViewById(R.id.contact_tile_push_state);
         mHorizontalDivider = findViewById(R.id.contact_tile_horizontal_divider);
 
-        OnClickListener listener = new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (mListener != null) {
-                    mListener.onClick(ContactTileView.this);
-                }
-            }
-        };
+
+        OnClickListener listener = createClickListener();
 
         if(mPushState != null) {
             mPushState.setOnClickListener(listener);
@@ -80,6 +76,18 @@
         }
     }
 
+    protected OnClickListener createClickListener() {
+        return new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mListener == null) return;
+                mListener.onContactSelected(
+                        getLookupUri(),
+                        ContactsUtils.getTargetRectFromView(mContext, ContactTileView.this));
+            }
+        };
+    }
+
     public void setPhotoManager(ContactPhotoManager photoManager) {
         mPhotoManager = photoManager;
     }
@@ -165,6 +173,13 @@
     }
 
     public interface Listener {
-        void onClick(ContactTileView contactTileView);
+        /**
+         * Notification that the contact was selected; no specific action is dictated.
+         */
+        void onContactSelected(Uri contactLookupUri, Rect viewRect);
+        /**
+         * Notification that the specified number is to be called.
+         */
+        void onCallNumberDirectly(String phoneNumber);
     }
 }
diff --git a/src/com/android/contacts/list/ContactsIntentResolver.java b/src/com/android/contacts/list/ContactsIntentResolver.java
index 8d14591..9199766 100644
--- a/src/com/android/contacts/list/ContactsIntentResolver.java
+++ b/src/com/android/contacts/list/ContactsIntentResolver.java
@@ -18,6 +18,7 @@
 
 import com.android.contacts.CallContactActivity;
 import com.android.contacts.ContactsSearchManager;
+import com.android.contacts.ContactsUtils;
 
 import android.app.Activity;
 import android.app.SearchManager;
@@ -33,6 +34,7 @@
 import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Intents;
+import android.provider.ContactsContract.Intents.Insert;
 import android.provider.ContactsContract.Intents.UI;
 import android.text.TextUtils;
 import android.util.Log;
@@ -124,16 +126,22 @@
         } else if (Intent.ACTION_INSERT_OR_EDIT.equals(action)) {
             request.setActionCode(ContactsRequest.ACTION_INSERT_OR_EDIT_CONTACT);
         } else if (Intent.ACTION_SEARCH.equals(action)) {
+            String query = intent.getStringExtra(SearchManager.QUERY);
             // See if the suggestion was clicked with a search action key (call button)
             if ("call".equals(intent.getStringExtra(SearchManager.ACTION_MSG))) {
-                String query = intent.getStringExtra(SearchManager.QUERY);
                 if (!TextUtils.isEmpty(query)) {
-                    Intent newIntent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                            Uri.fromParts("tel", query, null));
-                    request.setRedirectIntent(newIntent);
+                    request.setRedirectIntent(ContactsUtils.getCallIntent(query));
                 }
             } else {
-                request.setQueryString(intent.getStringExtra(SearchManager.QUERY));
+                // If the {@link SearchManager.QUERY} is empty, then check if a phone number
+                // or email is specified, in that priority.
+                if (TextUtils.isEmpty(query)) {
+                    query = intent.getStringExtra(Insert.PHONE);
+                }
+                if (TextUtils.isEmpty(query)) {
+                    query = intent.getStringExtra(Insert.EMAIL);
+                }
+                request.setQueryString(query);
                 request.setSearchMode(true);
             }
         } else if (Intent.ACTION_VIEW.equals(action)) {
@@ -182,7 +190,7 @@
                 intent.setData(null);
             }
         } else if (Intents.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED.equals(action)) {
-            request.setRedirectIntent(new Intent(Intent.ACTION_CALL_PRIVILEGED, intent.getData()));
+            request.setRedirectIntent(ContactsUtils.getCallIntent(intent.getData()));
         } else if (Intents.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED.equals(action)) {
             // TODO actually support this in EditContactActivity.
             String number = intent.getData().getSchemeSpecificPart();
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 4bf1a04..79dec09 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -60,7 +60,9 @@
         @Override
         public void onClick(View view) {
             AccountFilterUtil.startAccountFilterActivityForResult(
-                        DefaultContactBrowseListFragment.this, REQUEST_CODE_ACCOUNT_FILTER);
+                        DefaultContactBrowseListFragment.this,
+                        REQUEST_CODE_ACCOUNT_FILTER,
+                        getFilter());
         }
     }
     private OnClickListener mFilterHeaderClickListener = new FilterHeaderClickListener();
diff --git a/src/com/android/contacts/list/DefaultContactListAdapter.java b/src/com/android/contacts/list/DefaultContactListAdapter.java
index 348abb9..72a5c88 100644
--- a/src/com/android/contacts/list/DefaultContactListAdapter.java
+++ b/src/com/android/contacts/list/DefaultContactListAdapter.java
@@ -26,9 +26,7 @@
 import android.net.Uri.Builder;
 import android.preference.PreferenceManager;
 import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
 import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Directory;
 import android.provider.ContactsContract.RawContacts;
 import android.provider.ContactsContract.SearchSnippetColumns;
@@ -124,9 +122,13 @@
         if (filter != null
                 && filter.filterType != ContactListFilter.FILTER_TYPE_CUSTOM
                 && filter.filterType != ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
-            uri = uri.buildUpon().appendQueryParameter(
-                    ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT))
-                    .build();
+            final Uri.Builder builder = uri.buildUpon();
+            builder.appendQueryParameter(
+                    ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT));
+            if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
+                filter.addAccountQueryParameterToUrl(builder);
+            }
+            uri = builder.build();
         }
 
         loader.setUri(uri);
@@ -172,22 +174,7 @@
                 break;
             }
             case ContactListFilter.FILTER_TYPE_ACCOUNT: {
-                // TODO: avoid the use of private API
-                selection.append(
-                        Contacts._ID + " IN ("
-                                + "SELECT DISTINCT " + RawContacts.CONTACT_ID
-                                + " FROM raw_contacts"
-                                + " WHERE " + RawContacts.ACCOUNT_TYPE + "=?"
-                                + " AND " + RawContacts.ACCOUNT_NAME + "=?");
-                selectionArgs.add(filter.accountType);
-                selectionArgs.add(filter.accountName);
-                if (filter.dataSet != null) {
-                    selection.append(" AND " + RawContacts.DATA_SET + "=?");
-                    selectionArgs.add(filter.dataSet);
-                } else {
-                    selection.append(" AND " + RawContacts.DATA_SET + " IS NULL");
-                }
-                selection.append(")");
+                // We use query parameters for account filter, so no selection to add here.
                 break;
             }
         }
@@ -209,7 +196,8 @@
 
         if (isQuickContactEnabled()) {
             bindQuickContact(view, partition, cursor, ContactQuery.CONTACT_PHOTO_ID,
-                    ContactQuery.CONTACT_ID, ContactQuery.CONTACT_LOOKUP_KEY);
+                    ContactQuery.CONTACT_PHOTO_URI, ContactQuery.CONTACT_ID,
+                    ContactQuery.CONTACT_LOOKUP_KEY);
         } else {
             bindPhoto(view, partition, cursor);
         }
diff --git a/src/com/android/contacts/list/EmailAddressListAdapter.java b/src/com/android/contacts/list/EmailAddressListAdapter.java
index 93f435e..13853a1 100644
--- a/src/com/android/contacts/list/EmailAddressListAdapter.java
+++ b/src/com/android/contacts/list/EmailAddressListAdapter.java
@@ -78,6 +78,9 @@
             builder.appendPath(TextUtils.isEmpty(query) ? "" : query);
         } else {
             builder = Email.CONTENT_URI.buildUpon();
+            if (isSectionHeaderDisplayEnabled()) {
+                builder.appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true");
+            }
         }
         builder.appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
                 String.valueOf(directoryId));
@@ -97,11 +100,6 @@
         }
     }
 
-    protected static Builder buildSectionIndexerUri(Uri uri) {
-        return uri.buildUpon()
-                .appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true");
-    }
-
     @Override
     public String getContactDisplayName(int position) {
         return ((Cursor) getItem(position)).getString(EmailQuery.EMAIL_DISPLAY_NAME);
@@ -112,7 +110,7 @@
      * position.
      */
     public Uri getDataUri(int position) {
-        long id = ((Cursor)getItem(position)).getLong(EmailQuery.EMAIL_ID);
+        long id = ((Cursor) getItem(position)).getLong(EmailQuery.EMAIL_ID);
         return ContentUris.withAppendedId(Data.CONTENT_URI, id);
     }
 
diff --git a/src/com/android/contacts/list/EmailAddressPickerFragment.java b/src/com/android/contacts/list/EmailAddressPickerFragment.java
index 14b6c23..13fe541 100644
--- a/src/com/android/contacts/list/EmailAddressPickerFragment.java
+++ b/src/com/android/contacts/list/EmailAddressPickerFragment.java
@@ -58,6 +58,13 @@
         return inflater.inflate(R.layout.contact_list_content, null);
     }
 
+    @Override
+    protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
+        super.onCreateView(inflater, container);
+
+        setVisibleScrollbarEnabled(!isLegacyCompatibilityMode());
+    }
+
     private void pickEmailAddress(Uri uri) {
         mListener.onPickEmailAddressAction(uri);
     }
diff --git a/src/com/android/contacts/list/JoinContactListAdapter.java b/src/com/android/contacts/list/JoinContactListAdapter.java
index bfe8c53..80ddc83 100644
--- a/src/com/android/contacts/list/JoinContactListAdapter.java
+++ b/src/com/android/contacts/list/JoinContactListAdapter.java
@@ -20,7 +20,6 @@
 import android.content.Context;
 import android.content.CursorLoader;
 import android.database.Cursor;
-import android.database.MatrixCursor;
 import android.net.Uri;
 import android.net.Uri.Builder;
 import android.provider.ContactsContract;
@@ -53,7 +52,6 @@
 
     @Override
     protected void addPartitions() {
-
         // Partition 0: suggestions
         addPartition(false, true);
 
@@ -69,11 +67,11 @@
     public void configureLoader(CursorLoader cursorLoader, long directoryId) {
         JoinContactLoader loader = (JoinContactLoader) cursorLoader;
 
-        Builder builder = Contacts.CONTENT_URI.buildUpon();
+        final Builder builder = Contacts.CONTENT_URI.buildUpon();
         builder.appendEncodedPath(String.valueOf(mTargetContactId));
         builder.appendEncodedPath(AggregationSuggestions.CONTENT_DIRECTORY);
 
-        String filter = getQueryString();
+        final String filter = getQueryString();
         if (!TextUtils.isEmpty(filter)) {
             builder.appendEncodedPath(Uri.encode(filter));
         }
@@ -84,13 +82,22 @@
 
         // TODO simplify projection
         loader.setProjection(getProjection(false));
-        Uri allContactsUri = buildSectionIndexerUri(Contacts.CONTENT_URI).buildUpon()
+        final Uri allContactsUri;
+        if (!TextUtils.isEmpty(filter)) {
+            allContactsUri = buildSectionIndexerUri(Contacts.CONTENT_FILTER_URI).buildUpon()
+                .appendEncodedPath(Uri.encode(filter))
                 .appendQueryParameter(
                         ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT))
                 .build();
+        } else {
+            allContactsUri = buildSectionIndexerUri(Contacts.CONTENT_URI).buildUpon()
+                .appendQueryParameter(
+                        ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT))
+                .build();
+        }
         loader.setUri(allContactsUri);
         loader.setSelection(Contacts._ID + "!=?");
-        loader.setSelectionArgs(new String[]{String.valueOf(mTargetContactId)});
+        loader.setSelectionArgs(new String[]{ String.valueOf(mTargetContactId) });
         if (getSortOrder() == ContactsContract.Preferences.SORT_ORDER_PRIMARY) {
             loader.setSortOrder(Contacts.SORT_KEY_PRIMARY);
         } else {
@@ -120,7 +127,7 @@
 
     @Override
     public int getViewTypeCount() {
-        return super.getViewTypeCount() + 1;
+        return super.getViewTypeCount();
     }
 
     @Override
@@ -173,14 +180,14 @@
     protected void bindView(View itemView, int partition, Cursor cursor, int position) {
         switch (partition) {
             case PARTITION_SUGGESTIONS: {
-                final ContactListItemView view = (ContactListItemView)itemView;
+                final ContactListItemView view = (ContactListItemView) itemView;
                 view.setSectionHeader(null);
                 bindPhoto(view, partition, cursor);
                 bindName(view, cursor);
                 break;
             }
             case PARTITION_ALL_CONTACTS: {
-                final ContactListItemView view = (ContactListItemView)itemView;
+                final ContactListItemView view = (ContactListItemView) itemView;
                 bindSectionHeaderAndDivider(view, position, cursor);
                 bindPhoto(view, partition, cursor);
                 bindName(view, cursor);
diff --git a/src/com/android/contacts/list/JoinContactListFragment.java b/src/com/android/contacts/list/JoinContactListFragment.java
index 5b27bdf..7c6767b 100644
--- a/src/com/android/contacts/list/JoinContactListFragment.java
+++ b/src/com/android/contacts/list/JoinContactListFragment.java
@@ -26,6 +26,7 @@
 import android.database.Cursor;
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -103,7 +104,10 @@
         configureAdapter();
 
         getLoaderManager().initLoader(DISPLAY_NAME_LOADER, null, mLoaderCallbacks);
-        getLoaderManager().initLoader(JoinContactListAdapter.PARTITION_ALL_CONTACTS,
+
+        // When this method is called, Uri to be used may be changed. We should use restartLoader()
+        // to load the parameter again.
+        getLoaderManager().restartLoader(JoinContactListAdapter.PARTITION_ALL_CONTACTS,
                 null, mLoaderCallbacks);
     }
 
@@ -167,4 +171,11 @@
             mTargetContactId = savedState.getLong(KEY_TARGET_CONTACT_ID);
         }
     }
+
+    @Override
+    public void setQueryString(String queryString, boolean delaySelection) {
+        super.setQueryString(queryString, delaySelection);
+
+        setSearchMode(!TextUtils.isEmpty(queryString));
+    }
 }
diff --git a/src/com/android/contacts/list/JoinContactLoader.java b/src/com/android/contacts/list/JoinContactLoader.java
index 2f1f9b0..c43560e 100644
--- a/src/com/android/contacts/list/JoinContactLoader.java
+++ b/src/com/android/contacts/list/JoinContactLoader.java
@@ -20,6 +20,7 @@
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.net.Uri;
+import android.util.Log;
 
 /**
  * A specialized loader for the Join Contacts UI.  It executes two queries:
@@ -29,7 +30,7 @@
 
     private String[] mProjection;
     private Uri mSuggestionUri;
-    private MatrixCursor mSuggestionsCursor;
+    private Cursor mSuggestionsCursor;
 
     public JoinContactLoader(Context context) {
         super(context, null, null, null, null, null);
@@ -53,28 +54,8 @@
     public Cursor loadInBackground() {
         // First execute the suggestions query, then call super.loadInBackground
         // to load the entire list
-        mSuggestionsCursor = loadSuggestions();
+        mSuggestionsCursor = getContext().getContentResolver()
+                .query(mSuggestionUri, mProjection, null, null, null);
         return super.loadInBackground();
     }
-
-    /**
-     * Loads join suggestions into a MatrixCursor.
-     */
-    private MatrixCursor loadSuggestions() {
-        Cursor cursor = getContext().getContentResolver().query(mSuggestionUri, mProjection,
-                null, null, null);
-        try {
-            MatrixCursor matrix = new MatrixCursor(mProjection);
-            Object[] row = new Object[mProjection.length];
-            while (cursor.moveToNext()) {
-                for (int i = 0; i < row.length; i++) {
-                    row[i] = cursor.getString(i);
-                }
-                matrix.addRow(row);
-            }
-            return matrix;
-        } finally {
-            cursor.close();
-        }
-    }
 }
\ No newline at end of file
diff --git a/src/com/android/contacts/list/PhoneFavoriteFragment.java b/src/com/android/contacts/list/PhoneFavoriteFragment.java
index b6e8dd6..921ff6f 100644
--- a/src/com/android/contacts/list/PhoneFavoriteFragment.java
+++ b/src/com/android/contacts/list/PhoneFavoriteFragment.java
@@ -18,6 +18,7 @@
 import com.android.contacts.ContactPhotoManager;
 import com.android.contacts.ContactTileLoaderFactory;
 import com.android.contacts.R;
+import com.android.contacts.interactions.ImportExportDialogFragment;
 import com.android.contacts.preference.ContactsPreferences;
 import com.android.contacts.util.AccountFilterUtil;
 
@@ -32,9 +33,14 @@
 import android.graphics.Rect;
 import android.net.Uri;
 import android.os.Bundle;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.Directory;
+import android.provider.Settings;
 import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
@@ -69,6 +75,7 @@
 
     public interface Listener {
         public void onContactSelected(Uri contactUri);
+        public void onCallNumberDirectly(String phoneNumber);
     }
 
     private class ContactTileLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
@@ -130,20 +137,29 @@
         }
     }
 
-    private class ContactTileAdapterListener implements ContactTileAdapter.Listener {
+    private class ContactTileAdapterListener implements ContactTileView.Listener {
         @Override
         public void onContactSelected(Uri contactUri, Rect targetRect) {
             if (mListener != null) {
                 mListener.onContactSelected(contactUri);
             }
         }
+
+        @Override
+        public void onCallNumberDirectly(String phoneNumber) {
+            if (mListener != null) {
+                mListener.onCallNumberDirectly(phoneNumber);
+            }
+        }
     }
 
     private class FilterHeaderClickListener implements OnClickListener {
         @Override
         public void onClick(View view) {
             AccountFilterUtil.startAccountFilterActivityForResult(
-                    PhoneFavoriteFragment.this, REQUEST_CODE_ACCOUNT_FILTER);
+                    PhoneFavoriteFragment.this,
+                    REQUEST_CODE_ACCOUNT_FILTER,
+                    mFilter);
         }
     }
 
@@ -204,7 +220,7 @@
     private FrameLayout mAccountFilterHeaderContainer;
     private View mAccountFilterHeader;
 
-    private final ContactTileAdapter.Listener mContactTileAdapterListener =
+    private final ContactTileView.Listener mContactTileAdapterListener =
             new ContactTileAdapterListener();
     private final LoaderManager.LoaderCallbacks<Cursor> mContactTileLoaderListener =
             new ContactTileLoaderListener();
@@ -221,6 +237,7 @@
         if (savedState != null) {
             mFilter = savedState.getParcelable(KEY_FILTER);
         }
+        setHasOptionsMenu(true);
     }
 
     @Override
@@ -299,6 +316,8 @@
         // Put photos on left for consistency with "frequent" contacts section.
         mAllContactsAdapter.setPhotoPosition(ContactListItemView.PhotoPosition.LEFT);
 
+        mAllContactsAdapter.setUseCallableUri(true);
+
         if (mFilter != null) {
             mAllContactsAdapter.setFilter(mFilter);
         }
@@ -317,6 +336,34 @@
     }
 
     @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        super.onCreateOptionsMenu(menu, inflater);
+        inflater.inflate(R.menu.phone_favorite_options, menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_import_export:
+                // We hard-code the "contactsAreAvailable" argument because doing it properly would
+                // involve querying a {@link ProviderStatusLoader}, which we don't want to do right
+                // now in Dialtacts for (potential) performance reasons.  Compare with how it is
+                // done in {@link PeopleActivity}.
+                ImportExportDialogFragment.show(getFragmentManager(), true);
+                return true;
+            case R.id.menu_accounts:
+                final Intent intent = new Intent(Settings.ACTION_SYNC_SETTINGS);
+                intent.putExtra(Settings.EXTRA_AUTHORITIES, new String[] {
+                    ContactsContract.AUTHORITY
+                });
+                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+                startActivity(intent);
+                return true;
+        }
+        return false;
+    }
+
+    @Override
     public void onStart() {
         super.onStart();
 
@@ -451,4 +498,4 @@
     public void setListener(Listener listener) {
         mListener = listener;
     }
-}
\ No newline at end of file
+}
diff --git a/src/com/android/contacts/list/PhoneNumberListAdapter.java b/src/com/android/contacts/list/PhoneNumberListAdapter.java
index 1d077b7..2b231a7 100644
--- a/src/com/android/contacts/list/PhoneNumberListAdapter.java
+++ b/src/com/android/contacts/list/PhoneNumberListAdapter.java
@@ -22,7 +22,9 @@
 import android.net.Uri;
 import android.net.Uri.Builder;
 import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Callable;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
 import android.provider.ContactsContract.ContactCounts;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
@@ -37,7 +39,12 @@
 import java.util.List;
 
 /**
- * A cursor adapter for the {@link Phone#CONTENT_TYPE} content type.
+ * A cursor adapter for the {@link Phone#CONTENT_ITEM_TYPE} and
+ * {@link SipAddress#CONTENT_ITEM_TYPE}.
+ *
+ * By default this adapter just handles phone numbers. When {@link #setUseCallableUri(boolean)} is
+ * called with "true", this adapter starts handling SIP addresses too, by using {@link Callable}
+ * API instead of {@link Phone}.
  */
 public class PhoneNumberListAdapter extends ContactEntryListAdapter {
     private static final String TAG = PhoneNumberListAdapter.class.getSimpleName();
@@ -79,6 +86,8 @@
 
     private ContactListItemView.PhotoPosition mPhotoPosition;
 
+    private boolean mUseCallableUri;
+
     public PhoneNumberListAdapter(Context context) {
         super(context);
 
@@ -91,40 +100,37 @@
 
     @Override
     public void configureLoader(CursorLoader loader, long directoryId) {
-        Uri uri;
-
         if (directoryId != Directory.DEFAULT) {
             Log.w(TAG, "PhoneNumberListAdapter is not ready for non-default directory ID ("
                     + "directoryId: " + directoryId + ")");
         }
 
+        final Builder builder;
         if (isSearchMode()) {
-            String query = getQueryString();
-            Builder builder = Phone.CONTENT_FILTER_URI.buildUpon();
+            final Uri baseUri =
+                    mUseCallableUri ? Callable.CONTENT_FILTER_URI : Phone.CONTENT_FILTER_URI;
+            builder = baseUri.buildUpon();
+            final String query = getQueryString();
             if (TextUtils.isEmpty(query)) {
                 builder.appendPath("");
             } else {
                 builder.appendPath(query);      // Builder will encode the query
             }
-
             builder.appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
                     String.valueOf(directoryId));
-            uri = builder.build();
         } else {
-            uri = Phone.CONTENT_URI.buildUpon().appendQueryParameter(
-                    ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT))
-                    .build();
+            final Uri baseUri = mUseCallableUri ? Callable.CONTENT_URI : Phone.CONTENT_URI;
+            builder = baseUri.buildUpon().appendQueryParameter(
+                    ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT));
             if (isSectionHeaderDisplayEnabled()) {
-                uri = buildSectionIndexerUri(uri);
+                builder.appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true");
             }
-            configureSelection(loader, directoryId, getFilter());
+            applyFilter(loader, builder, directoryId, getFilter());
         }
 
         // Remove duplicates when it is possible.
-        uri = uri.buildUpon()
-                .appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true")
-                .build();
-        loader.setUri(uri);
+        builder.appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true");
+        loader.setUri(builder.build());
 
         // TODO a projection that includes the search snippet
         if (getContactNameDisplayOrder() == ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY) {
@@ -140,8 +146,12 @@
         }
     }
 
-    private void configureSelection(
-            CursorLoader loader, long directoryId, ContactListFilter filter) {
+    /**
+     * Configure {@code loader} and {@code uriBuilder} according to {@code directoryId} and {@code
+     * filter}.
+     */
+    private void applyFilter(CursorLoader loader, Uri.Builder uriBuilder, long directoryId,
+            ContactListFilter filter) {
         if (filter == null || directoryId != Directory.DEFAULT) {
             return;
         }
@@ -156,19 +166,7 @@
                 break;
             }
             case ContactListFilter.FILTER_TYPE_ACCOUNT: {
-                selection.append("(");
-
-                selection.append(RawContacts.ACCOUNT_TYPE + "=?"
-                        + " AND " + RawContacts.ACCOUNT_NAME + "=?");
-                selectionArgs.add(filter.accountType);
-                selectionArgs.add(filter.accountName);
-                if (filter.dataSet != null) {
-                    selection.append(" AND " + RawContacts.DATA_SET + "=?");
-                    selectionArgs.add(filter.dataSet);
-                } else {
-                    selection.append(" AND " + RawContacts.DATA_SET + " IS NULL");
-                }
-                selection.append(")");
+                filter.addAccountQueryParameterToUrl(uriBuilder);
                 break;
             }
             case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS:
@@ -187,11 +185,6 @@
         loader.setSelectionArgs(selectionArgs.toArray(new String[0]));
     }
 
-    protected static Uri buildSectionIndexerUri(Uri uri) {
-        return uri.buildUpon()
-                .appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true").build();
-    }
-
     @Override
     public String getContactDisplayName(int position) {
         return ((Cursor) getItem(position)).getString(PhoneQuery.PHONE_DISPLAY_NAME);
@@ -227,6 +220,8 @@
     protected void bindView(View itemView, int partition, Cursor cursor, int position) {
         ContactListItemView view = (ContactListItemView)itemView;
 
+        view.setHighlightedPrefix(isSearchMode() ? getUpperCaseQueryString() : null);
+
         // Look at elements before and after this position, checking if contact IDs are same.
         // If they have one same contact ID, it means they can be grouped.
         //
@@ -259,7 +254,9 @@
         if (isFirstEntry) {
             bindName(view, cursor);
             if (isQuickContactEnabled()) {
-                bindQuickContact(view, partition, cursor, PhoneQuery.PHONE_PHOTO_ID,
+                // No need for photo uri here, because we can not have directory results. If we
+                // ever do, we need to add photo uri to the query
+                bindQuickContact(view, partition, cursor, PhoneQuery.PHONE_PHOTO_ID, -1,
                         PhoneQuery.PHONE_CONTACT_ID, PhoneQuery.PHONE_LOOKUP_KEY);
             } else {
                 bindPhoto(view, cursor);
@@ -322,4 +319,12 @@
     public ContactListItemView.PhotoPosition getPhotoPosition() {
         return mPhotoPosition;
     }
+
+    public void setUseCallableUri(boolean useCallableUri) {
+        mUseCallableUri = useCallableUri;
+    }
+
+    public boolean usesCallableUri() {
+        return mUseCallableUri;
+    }
 }
diff --git a/src/com/android/contacts/list/PhoneNumberPickerFragment.java b/src/com/android/contacts/list/PhoneNumberPickerFragment.java
index c96956b..6886e81 100644
--- a/src/com/android/contacts/list/PhoneNumberPickerFragment.java
+++ b/src/com/android/contacts/list/PhoneNumberPickerFragment.java
@@ -38,6 +38,8 @@
 
     private static final int REQUEST_CODE_ACCOUNT_FILTER = 1;
 
+    private static final String KEY_SHORTCUT_ACTION = "shortcutAction";
+
     private OnPhoneNumberPickerActionListener mListener;
     private String mShortcutAction;
 
@@ -55,6 +57,8 @@
     /** true if the loader has started at least once. */
     private boolean mLoaderStarted;
 
+    private boolean mUseCallableUri;
+
     private ContactListItemView.PhotoPosition mPhotoPosition =
             ContactListItemView.DEFAULT_PHOTO_POSITION;
 
@@ -62,7 +66,9 @@
         @Override
         public void onClick(View view) {
             AccountFilterUtil.startAccountFilterActivityForResult(
-                    PhoneNumberPickerFragment.this, REQUEST_CODE_ACCOUNT_FILTER);
+                    PhoneNumberPickerFragment.this,
+                    REQUEST_CODE_ACCOUNT_FILTER,
+                    mFilter);
         }
     }
     private OnClickListener mFilterHeaderClickListener = new FilterHeaderClickListener();
@@ -127,12 +133,14 @@
         }
 
         mFilter = savedState.getParcelable(KEY_FILTER);
+        mShortcutAction = savedState.getString(KEY_SHORTCUT_ACTION);
     }
 
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putParcelable(KEY_FILTER, mFilter);
+        outState.putString(KEY_SHORTCUT_ACTION, mShortcutAction);
     }
 
     @Override
@@ -180,11 +188,20 @@
         super.startLoading();
     }
 
+    public void setUseCallableUri(boolean useCallableUri) {
+        mUseCallableUri = useCallableUri;
+    }
+
+    public boolean usesCallableUri() {
+        return mUseCallableUri;
+    }
+
     @Override
     protected ContactEntryListAdapter createListAdapter() {
         if (!isLegacyCompatibilityMode()) {
             PhoneNumberListAdapter adapter = new PhoneNumberListAdapter(getActivity());
             adapter.setDisplayPhotos(true);
+            adapter.setUseCallableUri(mUseCallableUri);
             return adapter;
         } else {
             LegacyPhoneNumberListAdapter adapter = new LegacyPhoneNumberListAdapter(getActivity());
diff --git a/src/com/android/contacts/list/PostalAddressListAdapter.java b/src/com/android/contacts/list/PostalAddressListAdapter.java
index 41591de..2750e11 100644
--- a/src/com/android/contacts/list/PostalAddressListAdapter.java
+++ b/src/com/android/contacts/list/PostalAddressListAdapter.java
@@ -20,10 +20,11 @@
 import android.content.CursorLoader;
 import android.database.Cursor;
 import android.net.Uri;
+import android.net.Uri.Builder;
 import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
 import android.provider.ContactsContract.ContactCounts;
 import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -69,11 +70,12 @@
 
     @Override
     public void configureLoader(CursorLoader loader, long directoryId) {
-        Uri uri = buildSectionIndexerUri(StructuredPostal.CONTENT_URI)
-                .buildUpon()
-                .appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true")
-                .build();
-        loader.setUri(uri);
+        final Builder builder = StructuredPostal.CONTENT_URI.buildUpon()
+                .appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true");
+        if (isSectionHeaderDisplayEnabled()) {
+            builder.appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true");
+        }
+        loader.setUri(builder.build());
 
         if (getContactNameDisplayOrder() == ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY) {
             loader.setProjection(PostalQuery.PROJECTION_PRIMARY);
@@ -88,11 +90,6 @@
         }
     }
 
-    protected static Uri buildSectionIndexerUri(Uri uri) {
-        return uri.buildUpon()
-                .appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true").build();
-    }
-
     @Override
     public String getContactDisplayName(int position) {
         return ((Cursor) getItem(position)).getString(PostalQuery.POSTAL_DISPLAY_NAME);
diff --git a/src/com/android/contacts/list/PostalAddressPickerFragment.java b/src/com/android/contacts/list/PostalAddressPickerFragment.java
index 85fc155..ddb8e9a 100644
--- a/src/com/android/contacts/list/PostalAddressPickerFragment.java
+++ b/src/com/android/contacts/list/PostalAddressPickerFragment.java
@@ -73,6 +73,13 @@
         return inflater.inflate(R.layout.contact_list_content, null);
     }
 
+    @Override
+    protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
+        super.onCreateView(inflater, container);
+
+        setVisibleScrollbarEnabled(!isLegacyCompatibilityMode());
+    }
+
     private void pickPostalAddress(Uri uri) {
         mListener.onPickPostalAddressAction(uri);
     }
diff --git a/src/com/android/contacts/model/AccountType.java b/src/com/android/contacts/model/AccountType.java
index 22ea884..3cc54f1 100644
--- a/src/com/android/contacts/model/AccountType.java
+++ b/src/com/android/contacts/model/AccountType.java
@@ -25,7 +25,6 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.pm.PackageManager;
-import android.database.Cursor;
 import android.graphics.drawable.Drawable;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
@@ -270,6 +269,7 @@
      * {@link Comparator} to sort by {@link DataKind#weight}.
      */
     private static Comparator<DataKind> sWeightComparator = new Comparator<DataKind>() {
+        @Override
         public int compare(DataKind object1, DataKind object2) {
             return object1.weight - object2.weight;
         }
@@ -460,13 +460,12 @@
     }
 
     /**
-     * Generic method of inflating a given {@link Cursor} into a user-readable
+     * Generic method of inflating a given {@link ContentValues} into a user-readable
      * {@link CharSequence}. For example, an inflater could combine the multiple
      * columns of {@link StructuredPostal} together using a string resource
      * before presenting to the user.
      */
     public interface StringInflater {
-        public CharSequence inflateUsing(Context context, Cursor cursor);
         public CharSequence inflateUsing(Context context, ContentValues values);
     }
 
diff --git a/src/com/android/contacts/model/BaseAccountType.java b/src/com/android/contacts/model/BaseAccountType.java
index cd113eb..1e830e2 100644
--- a/src/com/android/contacts/model/BaseAccountType.java
+++ b/src/com/android/contacts/model/BaseAccountType.java
@@ -17,18 +17,14 @@
 package com.android.contacts.model;
 
 import com.android.contacts.R;
-import com.android.contacts.model.AccountType.DefinitionException;
+import com.android.contacts.test.NeededForTesting;
 import com.android.contacts.util.DateUtils;
 import com.google.android.collect.Lists;
 import com.google.android.collect.Maps;
 
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.res.Resources;
-import android.database.Cursor;
 import android.provider.ContactsContract.CommonDataKinds.BaseTypes;
 import android.provider.ContactsContract.CommonDataKinds.Email;
 import android.provider.ContactsContract.CommonDataKinds.Event;
@@ -48,6 +44,9 @@
 import android.util.Log;
 import android.view.inputmethod.EditorInfo;
 
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.util.List;
 import java.util.Locale;
@@ -79,6 +78,12 @@
     protected static final int FLAGS_RELATION = EditorInfo.TYPE_CLASS_TEXT
             | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS | EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME;
 
+    // Specify the maximum number of lines that can be used to display various field types.  If no
+    // value is specified for a particular type, we use the default value from {@link DataKind}.
+    protected static final int MAX_LINES_FOR_POSTAL_ADDRESS = 10;
+    protected static final int MAX_LINES_FOR_GROUP = 10;
+    protected static final int MAX_LINES_FOR_NOTE = 100;
+
     private interface Tag {
         static final String DATA_KIND = "DataKind";
         static final String TYPE = "Type";
@@ -323,6 +328,8 @@
                 new EditField(StructuredPostal.FORMATTED_ADDRESS, R.string.postal_address,
                         FLAGS_POSTAL));
 
+        kind.maxLinesForDisplay = MAX_LINES_FOR_POSTAL_ADDRESS;
+
         return kind;
     }
 
@@ -391,6 +398,8 @@
         kind.fieldList = Lists.newArrayList();
         kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
 
+        kind.maxLinesForDisplay = MAX_LINES_FOR_NOTE;
+
         return kind;
     }
 
@@ -430,6 +439,8 @@
         kind.fieldList = Lists.newArrayList();
         kind.fieldList.add(new EditField(GroupMembership.GROUP_ROW_ID, -1, -1));
 
+        kind.maxLinesForDisplay = MAX_LINES_FOR_GROUP;
+
         return kind;
     }
 
@@ -454,25 +465,7 @@
             mColumnName = columnName;
         }
 
-        public CharSequence inflateUsing(Context context, Cursor cursor) {
-            final int index = mColumnName != null ? cursor.getColumnIndex(mColumnName) : -1;
-            final boolean validString = mStringRes > 0;
-            final boolean validColumn = index != -1;
-
-            final CharSequence stringValue = validString ? context.getText(mStringRes) : null;
-            final CharSequence columnValue = validColumn ? cursor.getString(index) : null;
-
-            if (validString && validColumn) {
-                return String.format(stringValue.toString(), columnValue);
-            } else if (validString) {
-                return stringValue;
-            } else if (validColumn) {
-                return columnValue;
-            } else {
-                return null;
-            }
-        }
-
+        @Override
         public CharSequence inflateUsing(Context context, ContentValues values) {
             final boolean validColumn = values.containsKey(mColumnName);
             final boolean validString = mStringRes > 0;
@@ -498,6 +491,7 @@
                     + " mColumnName" + mColumnName;
         }
 
+        @NeededForTesting
         public String getColumnNameForTest() {
             return mColumnName;
         }
@@ -529,12 +523,7 @@
             }
         }
 
-        public CharSequence inflateUsing(Context context, Cursor cursor) {
-            final Integer type = cursor.getInt(cursor.getColumnIndex(getTypeColumn()));
-            final String label = cursor.getString(cursor.getColumnIndex(getLabelColumn()));
-            return getTypeLabel(context.getResources(), type, label);
-        }
-
+        @Override
         public CharSequence inflateUsing(Context context, ContentValues values) {
             final Integer type = values.getAsInteger(getTypeColumn());
             final String label = values.getAsString(getLabelColumn());
@@ -1210,6 +1199,7 @@
                             R.string.postal_country, FLAGS_POSTAL).setOptional(true));
                 }
             } else {
+                kind.maxLinesForDisplay= MAX_LINES_FOR_POSTAL_ADDRESS;
                 kind.fieldList.add(
                         new EditField(StructuredPostal.FORMATTED_ADDRESS, R.string.postal_address,
                                 FLAGS_POSTAL));
@@ -1344,6 +1334,7 @@
                     new SimpleInflater(R.string.label_notes), new SimpleInflater(Note.NOTE));
 
             kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
+            kind.maxLinesForDisplay = MAX_LINES_FOR_NOTE;
 
             throwIfList(kind);
 
@@ -1417,6 +1408,7 @@
                     R.string.groupsLabel, Weight.GROUP_MEMBERSHIP, -1, null, null);
 
             kind.fieldList.add(new EditField(GroupMembership.GROUP_ROW_ID, -1, -1));
+            kind.maxLinesForDisplay = MAX_LINES_FOR_GROUP;
 
             throwIfList(kind);
 
diff --git a/src/com/android/contacts/model/DataKind.java b/src/com/android/contacts/model/DataKind.java
index 857f3e4..c697e6f 100644
--- a/src/com/android/contacts/model/DataKind.java
+++ b/src/com/android/contacts/model/DataKind.java
@@ -83,8 +83,16 @@
      */
     public SimpleDateFormat dateFormatWithYear;
 
+    /**
+     * The number of lines available for displaying this kind of data in a
+     * {@link ContactDetailFragment} (and possibly elsewhere)
+     * Defaults to 1.
+     */
+    public int maxLinesForDisplay;
+
     public DataKind() {
         editorLayoutResourceId = R.layout.text_fields_editor_view;
+        maxLinesForDisplay = 1;
     }
 
     public DataKind(String mimeType, int titleRes, int weight, boolean editable,
@@ -95,6 +103,7 @@
         this.editable = editable;
         this.typeOverallMax = -1;
         this.editorLayoutResourceId = editorLayoutResourceId;
+        maxLinesForDisplay = 1;
     }
 
     @Override
diff --git a/src/com/android/contacts/model/EntityDelta.java b/src/com/android/contacts/model/EntityDelta.java
index 8244e9c..2cbfa26 100644
--- a/src/com/android/contacts/model/EntityDelta.java
+++ b/src/com/android/contacts/model/EntityDelta.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts.model;
 
+import com.android.contacts.test.NeededForTesting;
 import com.google.android.collect.Lists;
 import com.google.android.collect.Maps;
 import com.google.android.collect.Sets;
@@ -183,6 +184,7 @@
      *     doesn't exist (may be a primary, or just a random item
      * @return
      */
+    @NeededForTesting
     public ValuesDelta getSuperPrimaryEntry(String mimeType, boolean forceSelection) {
         final ArrayList<ValuesDelta> mimeEntries = getMimeEntries(mimeType, false);
         if (mimeEntries == null) return null;
@@ -564,6 +566,7 @@
             return entry;
         }
 
+        @NeededForTesting
         public ContentValues getAfter() {
             return mAfter;
         }
diff --git a/src/com/android/contacts/model/EntityModifier.java b/src/com/android/contacts/model/EntityModifier.java
index 289ca54..ef5d304 100644
--- a/src/com/android/contacts/model/EntityModifier.java
+++ b/src/com/android/contacts/model/EntityModifier.java
@@ -103,19 +103,28 @@
     /**
      * Ensure that at least one of the given {@link DataKind} exists in the
      * given {@link EntityDelta} state, and try creating one if none exist.
+     * @return The child (either newly created or the first existing one), or null if the
+     *     account doesn't support this {@link DataKind}.
      */
-    public static void ensureKindExists(
+    public static ValuesDelta ensureKindExists(
             EntityDelta state, AccountType accountType, String mimeType) {
         final DataKind kind = accountType.getKindForMimetype(mimeType);
         final boolean hasChild = state.getMimeEntriesCount(mimeType, true) > 0;
 
-        if (!hasChild && kind != null) {
-            // Create child when none exists and valid kind
-            final ValuesDelta child = insertChild(state, kind);
-            if (kind.mimeType.equals(Photo.CONTENT_ITEM_TYPE)) {
-                child.setFromTemplate(true);
+        if (kind != null) {
+            if (hasChild) {
+                // Return the first entry.
+                return state.getMimeEntries(mimeType).get(0);
+            } else {
+                // Create child when none exists and valid kind
+                final ValuesDelta child = insertChild(state, kind);
+                if (kind.mimeType.equals(Photo.CONTENT_ITEM_TYPE)) {
+                    child.setFromTemplate(true);
+                }
+                return child;
             }
         }
+        return null;
     }
 
     /**
diff --git a/src/com/android/contacts/model/ExchangeAccountType.java b/src/com/android/contacts/model/ExchangeAccountType.java
index e5491d2..21a30f8 100644
--- a/src/com/android/contacts/model/ExchangeAccountType.java
+++ b/src/com/android/contacts/model/ExchangeAccountType.java
@@ -169,8 +169,8 @@
 
         kind.typeColumn = Phone.TYPE;
         kind.typeList = Lists.newArrayList();
-        kind.typeList.add(buildPhoneType(Phone.TYPE_HOME).setSpecificMax(2));
         kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE).setSpecificMax(1));
+        kind.typeList.add(buildPhoneType(Phone.TYPE_HOME).setSpecificMax(2));
         kind.typeList.add(buildPhoneType(Phone.TYPE_WORK).setSpecificMax(2));
         kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true)
                 .setSpecificMax(1));
diff --git a/src/com/android/contacts/model/FallbackAccountType.java b/src/com/android/contacts/model/FallbackAccountType.java
index d81f2f5..6ce7a43 100644
--- a/src/com/android/contacts/model/FallbackAccountType.java
+++ b/src/com/android/contacts/model/FallbackAccountType.java
@@ -17,6 +17,7 @@
 package com.android.contacts.model;
 
 import com.android.contacts.R;
+import com.android.contacts.test.NeededForTesting;
 
 import android.content.Context;
 import android.util.Log;
@@ -63,6 +64,7 @@
      * In order to build {@link DataKind}s with the same resource package name,
      * {@code resPackageName} is injectable.
      */
+    @NeededForTesting
     static AccountType createForTest(Context context, String resPackageName) {
         return new FallbackAccountType(context, resPackageName);
     }
diff --git a/src/com/android/contacts/preference/DisplayOrderPreference.java b/src/com/android/contacts/preference/DisplayOrderPreference.java
index fea01c8..bedce48 100644
--- a/src/com/android/contacts/preference/DisplayOrderPreference.java
+++ b/src/com/android/contacts/preference/DisplayOrderPreference.java
@@ -18,6 +18,7 @@
 
 import com.android.contacts.R;
 
+import android.app.AlertDialog.Builder;
 import android.content.Context;
 import android.preference.ListPreference;
 import android.provider.ContactsContract;
@@ -80,4 +81,11 @@
         }
         return true;
     }
+
+    @Override
+    // UX recommendation is not to show cancel button on such lists.
+    protected void onPrepareDialogBuilder(Builder builder) {
+        super.onPrepareDialogBuilder(builder);
+        builder.setNegativeButton(null, null);
+    }
 }
diff --git a/src/com/android/contacts/preference/SortOrderPreference.java b/src/com/android/contacts/preference/SortOrderPreference.java
index 81b034c..2ac9557 100644
--- a/src/com/android/contacts/preference/SortOrderPreference.java
+++ b/src/com/android/contacts/preference/SortOrderPreference.java
@@ -18,6 +18,7 @@
 
 import com.android.contacts.R;
 
+import android.app.AlertDialog.Builder;
 import android.content.Context;
 import android.preference.ListPreference;
 import android.provider.ContactsContract;
@@ -80,4 +81,11 @@
         }
         return true;
     }
+
+    @Override
+    // UX recommendation is not to show cancel button on such lists.
+    protected void onPrepareDialogBuilder(Builder builder) {
+        super.onPrepareDialogBuilder(builder);
+        builder.setNegativeButton(null, null);
+    }
 }
diff --git a/src/com/android/contacts/quickcontact/Action.java b/src/com/android/contacts/quickcontact/Action.java
index b2d869d..3a283fb 100644
--- a/src/com/android/contacts/quickcontact/Action.java
+++ b/src/com/android/contacts/quickcontact/Action.java
@@ -58,4 +58,7 @@
      * row
      */
     public long getDataId();
+
+    /** Returns the presence of this item or -1 if it was never set */
+    public int getPresence();
 }
diff --git a/src/com/android/contacts/quickcontact/DataAction.java b/src/com/android/contacts/quickcontact/DataAction.java
index 266fd02..e839cda 100644
--- a/src/com/android/contacts/quickcontact/DataAction.java
+++ b/src/com/android/contacts/quickcontact/DataAction.java
@@ -21,14 +21,14 @@
 import com.android.contacts.model.AccountType.EditType;
 import com.android.contacts.model.DataKind;
 import com.android.contacts.util.Constants;
-import com.android.contacts.util.StructuredPostalUtils;
 import com.android.contacts.util.PhoneCapabilityTester;
+import com.android.contacts.util.StructuredPostalUtils;
 
 import android.content.ContentUris;
+import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
-import android.database.Cursor;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.net.WebAddress;
@@ -59,6 +59,7 @@
     private Intent mAlternateIntent;
     private int mAlternateIconDescriptionRes;
     private int mAlternateIconRes;
+    private int mPresence = -1;
 
     private Uri mDataUri;
     private long mDataId;
@@ -67,7 +68,8 @@
     /**
      * Create an action from common {@link Data} elements.
      */
-    public DataAction(Context context, String mimeType, DataKind kind, long dataId, Cursor cursor) {
+    public DataAction(Context context, String mimeType, DataKind kind, long dataId,
+            ContentValues entryValues) {
         mContext = context;
         mKind = kind;
         mMimeType = mimeType;
@@ -75,9 +77,8 @@
         // Determine type for subtitle
         mSubtitle = "";
         if (kind.typeColumn != null) {
-            final int typeColumnIndex = cursor.getColumnIndex(kind.typeColumn);
-            if (typeColumnIndex != -1) {
-                final int typeValue = cursor.getInt(typeColumnIndex);
+            if (entryValues.containsKey(kind.typeColumn)) {
+                final int typeValue = entryValues.getAsInteger(kind.typeColumn);
 
                 // get type string
                 for (EditType type : kind.typeList) {
@@ -87,8 +88,7 @@
                             mSubtitle = context.getString(type.labelRes);
                         } else {
                             // Custom type. Read it from the database
-                            mSubtitle = cursor.getString(cursor.getColumnIndexOrThrow(
-                                    type.customColumn));
+                            mSubtitle = entryValues.getAsString(type.customColumn);
                         }
                         break;
                     }
@@ -96,12 +96,11 @@
             }
         }
 
-        if (getAsInt(cursor, Data.IS_SUPER_PRIMARY) != 0) {
-            mIsPrimary = true;
-        }
+        final Integer superPrimary = entryValues.getAsInteger(Data.IS_SUPER_PRIMARY);
+        mIsPrimary = superPrimary != null && superPrimary != 0;
 
         if (mKind.actionBody != null) {
-            mBody = mKind.actionBody.inflateUsing(context, cursor);
+            mBody = mKind.actionBody.inflateUsing(context, entryValues);
         }
 
         mDataId = dataId;
@@ -113,11 +112,11 @@
         // Handle well-known MIME-types with special care
         if (Phone.CONTENT_ITEM_TYPE.equals(mimeType)) {
             if (PhoneCapabilityTester.isPhone(mContext)) {
-                final String number = getAsString(cursor, Phone.NUMBER);
+                final String number = entryValues.getAsString(Phone.NUMBER);
                 if (!TextUtils.isEmpty(number)) {
 
-                    final Intent phoneIntent = hasPhone ? new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                            Uri.fromParts(Constants.SCHEME_TEL, number, null)) : null;
+                    final Intent phoneIntent = hasPhone ? ContactsUtils.getCallIntent(number)
+                            : null;
                     final Intent smsIntent = hasSms ? new Intent(Intent.ACTION_SENDTO,
                             Uri.fromParts(Constants.SCHEME_SMSTO, number, null)) : null;
 
@@ -136,10 +135,10 @@
             }
         } else if (SipAddress.CONTENT_ITEM_TYPE.equals(mimeType)) {
             if (PhoneCapabilityTester.isSipPhone(mContext)) {
-                final String address = getAsString(cursor, SipAddress.SIP_ADDRESS);
+                final String address = entryValues.getAsString(SipAddress.SIP_ADDRESS);
                 if (!TextUtils.isEmpty(address)) {
                     final Uri callUri = Uri.fromParts(Constants.SCHEME_SIP, address, null);
-                    mIntent = new Intent(Intent.ACTION_CALL_PRIVILEGED, callUri);
+                    mIntent = ContactsUtils.getCallIntent(callUri);
                     // Note that this item will get a SIP-specific variant
                     // of the "call phone" icon, rather than the standard
                     // app icon for the Phone app (which we show for
@@ -149,14 +148,14 @@
                 }
             }
         } else if (Email.CONTENT_ITEM_TYPE.equals(mimeType)) {
-            final String address = getAsString(cursor, Email.DATA);
+            final String address = entryValues.getAsString(Email.DATA);
             if (!TextUtils.isEmpty(address)) {
                 final Uri mailUri = Uri.fromParts(Constants.SCHEME_MAILTO, address, null);
                 mIntent = new Intent(Intent.ACTION_SENDTO, mailUri);
             }
 
         } else if (Website.CONTENT_ITEM_TYPE.equals(mimeType)) {
-            final String url = getAsString(cursor, Website.URL);
+            final String url = entryValues.getAsString(Website.URL);
             if (!TextUtils.isEmpty(url)) {
                 WebAddress webAddress = new WebAddress(url);
                 mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(webAddress.toString()));
@@ -164,21 +163,21 @@
 
         } else if (Im.CONTENT_ITEM_TYPE.equals(mimeType)) {
             final boolean isEmail = Email.CONTENT_ITEM_TYPE.equals(
-                    getAsString(cursor, Data.MIMETYPE));
-            if (isEmail || isProtocolValid(cursor)) {
+                    entryValues.getAsString(Data.MIMETYPE));
+            if (isEmail || isProtocolValid(entryValues)) {
                 final int protocol = isEmail ? Im.PROTOCOL_GOOGLE_TALK :
-                        getAsInt(cursor, Im.PROTOCOL);
+                        entryValues.getAsInteger(Im.PROTOCOL);
 
                 if (isEmail) {
                     // Use Google Talk string when using Email, and clear data
                     // Uri so we don't try saving Email as primary.
-                    mSubtitle = context.getText(R.string.chat_gtalk);
+                    mSubtitle = Im.getProtocolLabel(context.getResources(), Im.PROTOCOL_GOOGLE_TALK,
+                            null);
                     mDataUri = null;
                 }
 
-                String host = getAsString(cursor, Im.CUSTOM_PROTOCOL);
-                String data = getAsString(cursor,
-                        isEmail ? Email.DATA : Im.DATA);
+                String host = entryValues.getAsString(Im.CUSTOM_PROTOCOL);
+                String data = entryValues.getAsString(isEmail ? Email.DATA : Im.DATA);
                 if (protocol != Im.PROTOCOL_CUSTOM) {
                     // Try bringing in a well-known host for specific protocols
                     host = ContactsUtils.lookupProviderNameFromId(protocol);
@@ -192,7 +191,8 @@
 
                     // If the address is also available for a video chat, we'll show the capability
                     // as a secondary action.
-                    final int chatCapability = getAsInt(cursor, Data.CHAT_CAPABILITY);
+                    final Integer chatCapabilityObj = entryValues.getAsInteger(Im.CHAT_CAPABILITY);
+                    final int chatCapability = chatCapabilityObj == null ? 0 : chatCapabilityObj;
                     final boolean isVideoChatCapable =
                             (chatCapability & Im.CAPABILITY_HAS_CAMERA) != 0;
                     final boolean isAudioChatCapable =
@@ -211,7 +211,8 @@
                 }
             }
         } else if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimeType)) {
-            final String postalAddress = getAsString(cursor, StructuredPostal.FORMATTED_ADDRESS);
+            final String postalAddress =
+                    entryValues.getAsString(StructuredPostal.FORMATTED_ADDRESS);
             if (!TextUtils.isEmpty(postalAddress)) {
                 mIntent = StructuredPostalUtils.getViewPostalAddressIntent(postalAddress);
             }
@@ -227,25 +228,22 @@
         mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
     }
 
-    /** Read {@link String} from the given {@link Cursor}. */
-    private static String getAsString(Cursor cursor, String columnName) {
-        final int index = cursor.getColumnIndex(columnName);
-        return cursor.getString(index);
+    @Override
+    public int getPresence() {
+        return mPresence;
     }
 
-    /** Read {@link Integer} from the given {@link Cursor}. */
-    private static int getAsInt(Cursor cursor, String columnName) {
-        final int index = cursor.getColumnIndex(columnName);
-        return cursor.getInt(index);
+    public void setPresence(int presence) {
+        mPresence = presence;
     }
 
-    private boolean isProtocolValid(Cursor cursor) {
-        final int columnIndex = cursor.getColumnIndex(Im.PROTOCOL);
-        if (cursor.isNull(columnIndex)) {
+    private boolean isProtocolValid(ContentValues entryValues) {
+        final String protocol = entryValues.getAsString(Im.PROTOCOL);
+        if (protocol == null) {
             return false;
         }
         try {
-            Integer.valueOf(cursor.getString(columnIndex));
+            Integer.valueOf(protocol);
         } catch (NumberFormatException e) {
             return false;
         }
diff --git a/src/com/android/contacts/quickcontact/FloatingChildLayout.java b/src/com/android/contacts/quickcontact/FloatingChildLayout.java
index 5358aca..f1a0fe1 100644
--- a/src/com/android/contacts/quickcontact/FloatingChildLayout.java
+++ b/src/com/android/contacts/quickcontact/FloatingChildLayout.java
@@ -66,8 +66,8 @@
         mChild.setDuplicateParentStateEnabled(true);
 
         // this will be expanded in showChild()
-        mChild.setScaleX(0.0f);
-        mChild.setScaleY(0.0f);
+        mChild.setScaleX(0.5f);
+        mChild.setScaleY(0.5f);
         mChild.setAlpha(0.0f);
     }
 
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 2c62fe4..b603e42 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -17,44 +17,42 @@
 package com.android.contacts.quickcontact;
 
 import com.android.contacts.Collapser;
+import com.android.contacts.ContactLoader;
 import com.android.contacts.ContactPhotoManager;
 import com.android.contacts.R;
 import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.model.DataKind;
 import com.android.contacts.util.DataStatus;
-import com.android.contacts.util.NotifyingAsyncQueryHandler;
-import com.android.contacts.util.NotifyingAsyncQueryHandler.AsyncQueryListener;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.FragmentManager;
+import android.app.LoaderManager.LoaderCallbacks;
 import android.content.ActivityNotFoundException;
 import android.content.ContentUris;
+import android.content.ContentValues;
 import android.content.Context;
+import android.content.Entity;
+import android.content.Entity.NamedContentValues;
 import android.content.Intent;
+import android.content.Loader;
 import android.content.pm.PackageManager;
-import android.content.res.AssetFileDescriptor;
-import android.database.Cursor;
-import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
 import android.provider.ContactsContract.CommonDataKinds.Email;
 import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.Photo;
 import android.provider.ContactsContract.CommonDataKinds.SipAddress;
 import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
 import android.provider.ContactsContract.CommonDataKinds.Website;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.DisplayPhoto;
 import android.provider.ContactsContract.QuickContact;
 import android.provider.ContactsContract.RawContacts;
 import android.support.v13.app.FragmentPagerAdapter;
@@ -74,7 +72,6 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -96,8 +93,6 @@
     @SuppressWarnings("deprecation")
     private static final String LEGACY_AUTHORITY = android.provider.Contacts.AUTHORITY;
 
-    private NotifyingAsyncQueryHandler mHandler;
-
     private Uri mLookupUri;
     private String[] mExcludeMimes;
     private List<String> mSortedActionMimeTypes = Lists.newArrayList();
@@ -147,8 +142,8 @@
     private static final List<String> TRAILING_MIMETYPES = Lists.newArrayList(
             StructuredPostal.CONTENT_ITEM_TYPE, Website.CONTENT_ITEM_TYPE);
 
-    /** Id for the background handler that loads the data */
-    private static final int HANDLER_ID_DATA = 1;
+    /** Id for the background loader */
+    private static final int LOADER_ID = 0;
 
     @Override
     protected void onCreate(Bundle icicle) {
@@ -190,8 +185,6 @@
         mListPager.setAdapter(new ViewPagerAdapter(getFragmentManager()));
         mListPager.setOnPageChangeListener(new PageChangeListener());
 
-        mHandler = new NotifyingAsyncQueryHandler(this, mQueryListener);
-
         show();
     }
 
@@ -225,16 +218,7 @@
         mPhotoContainer = findViewById(R.id.photo_container);
         setHeaderNameText(R.id.name, R.string.missing_name);
 
-        // Start background query for data, but only select photo rows when they
-        // directly match the super-primary PHOTO_ID.
-        final Uri dataUri = Uri.withAppendedPath(lookupUri, Contacts.Data.CONTENT_DIRECTORY);
-        mHandler.cancelOperation(HANDLER_ID_DATA);
-
-        // Select all data items of the contact (except for photos, where we only select the display
-        // photo)
-        mHandler.startQuery(HANDLER_ID_DATA, lookupUri, dataUri, DataQuery.PROJECTION, Data.MIMETYPE
-                + "!=? OR (" + Data.MIMETYPE + "=? AND " + Data._ID + "=" + Contacts.PHOTO_ID
-                + ")", new String[] { Photo.CONTENT_ITEM_TYPE, Photo.CONTENT_ITEM_TYPE }, null);
+        getLoaderManager().initLoader(LOADER_ID, null, mLoaderCallbacks);
     }
 
     private boolean handleOutsideTouch() {
@@ -248,7 +232,7 @@
 
     private void hide(boolean withAnimation) {
         // cancel any pending queries
-        mHandler.cancelOperation(HANDLER_ID_DATA);
+        getLoaderManager().destroyLoader(LOADER_ID);
 
         if (withAnimation) {
             mFloatingLayout.hideChild(new Runnable() {
@@ -268,47 +252,6 @@
         hide(true);
     }
 
-    private final AsyncQueryListener mQueryListener = new AsyncQueryListener() {
-        @Override
-        public synchronized void onQueryComplete(int token, Object cookie, Cursor cursor) {
-            try {
-                if (isFinishing()) {
-                    hide(false);
-                    return;
-                } else if (cursor == null || cursor.getCount() == 0) {
-                    Toast.makeText(QuickContactActivity.this, R.string.invalidContactMessage,
-                            Toast.LENGTH_LONG).show();
-                    hide(false);
-                    return;
-                }
-
-                bindData(cursor);
-
-                if (TRACE_LAUNCH) {
-                    android.os.Debug.stopMethodTracing();
-                }
-
-                // Data bound and ready, pull curtain to show. Put this on the Handler to ensure
-                // that the layout passes are completed
-                mHandler.post(new Runnable() {
-                    @Override
-                    public void run() {
-                        mFloatingLayout.showChild(new Runnable() {
-                            @Override
-                            public void run() {
-                                mHasFinishedAnimatingIn = true;
-                            }
-                        });
-                    }
-                });
-            } finally {
-                if (cursor != null) {
-                    cursor.close();
-                }
-            }
-        }
-    };
-
     /** Assign this string to the view if it is not empty. */
     private void setHeaderNameText(int id, int resId) {
         setHeaderNameText(id, getText(resId));
@@ -325,35 +268,6 @@
     }
 
     /**
-     * Assign this string to the view (if found in {@link #mPhotoContainer}), or hiding this view
-     * if there is no string.
-     */
-    private void setHeaderText(int id, int resId) {
-        setHeaderText(id, getText(resId));
-    }
-
-    /**
-     * Assign this string to the view (if found in {@link #mPhotoContainer}), or hiding this view
-     * if there is no string.
-     */
-    private void setHeaderText(int id, CharSequence value) {
-        final View view = mPhotoContainer.findViewById(id);
-        if (view instanceof TextView) {
-            ((TextView)view).setText(value);
-            view.setVisibility(TextUtils.isEmpty(value) ? View.GONE : View.VISIBLE);
-        }
-    }
-
-    /** Assign this image to the view, if found in {@link #mPhotoContainer}. */
-    private void setHeaderImage(int id, Drawable drawable) {
-        final View view = mPhotoContainer.findViewById(id);
-        if (view instanceof ImageView) {
-            ((ImageView)view).setImageDrawable(drawable);
-            view.setVisibility(drawable == null ? View.GONE : View.VISIBLE);
-        }
-    }
-
-    /**
      * Check if the given MIME-type appears in the list of excluded MIME-types
      * that the most-recent caller requested.
      */
@@ -368,9 +282,9 @@
     }
 
     /**
-     * Handle the result from the {@link #TOKEN_DATA} query.
+     * Handle the result from the ContactLoader
      */
-    private void bindData(Cursor cursor) {
+    private void bindData(ContactLoader.Result data) {
         final ResolveCache cache = ResolveCache.getInstance(this);
         final Context context = this;
 
@@ -379,90 +293,63 @@
 
         mDefaultsMap.clear();
 
-        final DataStatus status = new DataStatus();
         final AccountTypeManager accountTypes = AccountTypeManager.getInstance(
                 context.getApplicationContext());
         final ImageView photoView = (ImageView) mPhotoContainer.findViewById(R.id.photo);
+        final byte[] photo = data.getPhotoBinaryData();
+        if (photo != null) {
+            photoView.setImageBitmap(BitmapFactory.decodeByteArray(photo, 0, photo.length));
+        } else {
+            photoView.setImageResource(
+                    ContactPhotoManager.getDefaultAvatarResId(true, false));
+        }
 
-        Bitmap photoBitmap = null;
-        while (cursor.moveToNext()) {
-            // Handle any social status updates from this row
-            status.possibleUpdate(cursor);
+        for (Entity entity : data.getEntities()) {
+            final ContentValues entityValues = entity.getEntityValues();
+            final String accountType = entityValues.getAsString(RawContacts.ACCOUNT_TYPE);
+            final String dataSet = entityValues.getAsString(RawContacts.DATA_SET);
+            for (NamedContentValues subValue : entity.getSubValues()) {
+                final ContentValues entryValues = subValue.values;
+                final String mimeType = entryValues.getAsString(Data.MIMETYPE);
 
-            final String mimeType = cursor.getString(DataQuery.MIMETYPE);
+                // Skip this data item if MIME-type excluded
+                if (isMimeExcluded(mimeType)) continue;
 
-            // Skip this data item if MIME-type excluded
-            if (isMimeExcluded(mimeType)) continue;
+                final long dataId = entryValues.getAsLong(Data._ID);
+                final Integer primary = entryValues.getAsInteger(Data.IS_PRIMARY);
+                final boolean isPrimary = primary != null && primary != 0;
+                final Integer superPrimary = entryValues.getAsInteger(Data.IS_SUPER_PRIMARY);
+                final boolean isSuperPrimary = superPrimary != null && superPrimary != 0;
 
-            final long dataId = cursor.getLong(DataQuery._ID);
-            final String accountType = cursor.getString(DataQuery.ACCOUNT_TYPE);
-            final String dataSet = cursor.getString(DataQuery.DATA_SET);
-            final boolean isPrimary = cursor.getInt(DataQuery.IS_PRIMARY) != 0;
-            final boolean isSuperPrimary = cursor.getInt(DataQuery.IS_SUPER_PRIMARY) != 0;
+                final DataKind kind =
+                        accountTypes.getKindOrFallback(accountType, dataSet, mimeType);
 
-            // Handle photos included as data row
-            if (Photo.CONTENT_ITEM_TYPE.equals(mimeType)) {
-                final int displayPhotoColumnIndex = cursor.getColumnIndex(Photo.PHOTO_FILE_ID);
-                final boolean hasDisplayPhoto = !cursor.isNull(displayPhotoColumnIndex);
-                if (hasDisplayPhoto) {
-                    final long displayPhotoId = cursor.getLong(displayPhotoColumnIndex);
-                    final Uri displayPhotoUri = ContentUris.withAppendedId(
-                            DisplayPhoto.CONTENT_URI, displayPhotoId);
-                    // Fetch and JPEG uncompress on the background thread
-                    new AsyncTask<Void, Void, Bitmap>() {
-                        @Override
-                        protected Bitmap doInBackground(Void... params) {
-                            try {
-                                AssetFileDescriptor fd = getContentResolver()
-                                        .openAssetFileDescriptor(displayPhotoUri, "r");
-                                return BitmapFactory.decodeStream(fd.createInputStream());
-                            } catch (IOException e) {
-                                Log.e(TAG, "Error getting display photo. Ignoring, as we already " +
-                                        "have the thumbnail", e);
-                                return null;
-                            }
+                if (kind != null) {
+                    // Build an action for this data entry, find a mapping to a UI
+                    // element, build its summary from the cursor, and collect it
+                    // along with all others of this MIME-type.
+                    final Action action = new DataAction(context, mimeType, kind, dataId,
+                            entryValues);
+                    final boolean wasAdded = considerAdd(action, cache);
+                    if (wasAdded) {
+                        // Remember the default
+                        if (isSuperPrimary || (isPrimary && (mDefaultsMap.get(mimeType) == null))) {
+                            mDefaultsMap.put(mimeType, action);
                         }
-
-                        @Override
-                        protected void onPostExecute(Bitmap result) {
-                            if (result == null) return;
-                            photoView.setImageBitmap(result);
-                        }
-                    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void[]) null);
-                }
-                final int photoColumnIndex = cursor.getColumnIndex(Photo.PHOTO);
-                final byte[] photoBlob = cursor.getBlob(photoColumnIndex);
-                if (photoBlob != null) {
-                    photoBitmap = BitmapFactory.decodeByteArray(photoBlob, 0, photoBlob.length);
-                }
-                continue;
-            }
-
-            final DataKind kind = accountTypes.getKindOrFallback(accountType, dataSet, mimeType);
-
-            if (kind != null) {
-                // Build an action for this data entry, find a mapping to a UI
-                // element, build its summary from the cursor, and collect it
-                // along with all others of this MIME-type.
-                final Action action = new DataAction(context, mimeType, kind, dataId, cursor);
-                final boolean wasAdded = considerAdd(action, cache);
-                if (wasAdded) {
-                    // Remember the default
-                    if (isSuperPrimary || (isPrimary && (mDefaultsMap.get(mimeType) == null))) {
-                        mDefaultsMap.put(mimeType, action);
                     }
                 }
-            }
 
-            // Handle Email rows with presence data as Im entry
-            final boolean hasPresence = !cursor.isNull(DataQuery.PRESENCE);
-            if (hasPresence && Email.CONTENT_ITEM_TYPE.equals(mimeType)) {
-                final DataKind imKind = accountTypes.getKindOrFallback(accountType, dataSet,
-                        Im.CONTENT_ITEM_TYPE);
-                if (imKind != null) {
-                    final DataAction action = new DataAction(context, Im.CONTENT_ITEM_TYPE, imKind,
-                            dataId, cursor);
-                    considerAdd(action, cache);
+                // Handle Email rows with presence data as Im entry
+                final DataStatus status = data.getStatuses().get(dataId);
+                if (status != null && Email.CONTENT_ITEM_TYPE.equals(mimeType)) {
+                    final DataKind imKind = accountTypes.getKindOrFallback(accountType, dataSet,
+                            Im.CONTENT_ITEM_TYPE);
+                    if (imKind != null) {
+                        final DataAction action = new DataAction(context, Im.CONTENT_ITEM_TYPE,
+                                imKind, dataId, entryValues);
+                        action.setPresence(status.getPresence());
+                        considerAdd(action, cache);
+                    }
                 }
             }
         }
@@ -472,20 +359,7 @@
             Collapser.collapseList(actionChildren);
         }
 
-        if (cursor.moveToLast()) {
-            // Read contact name from last data row
-            final String name = cursor.getString(DataQuery.DISPLAY_NAME);
-            setHeaderNameText(R.id.name, name);
-        }
-
-        if (photoView != null) {
-            // Place photo when discovered in data, otherwise show generic avatar
-            if (photoBitmap != null) {
-                photoView.setImageBitmap(photoBitmap);
-            } else {
-                photoView.setImageResource(ContactPhotoManager.getDefaultAvatarResId(true, false));
-            }
-        }
+        setHeaderNameText(R.id.name, data.getDisplayName());
 
         // All the mime-types to add.
         final Set<String> containedTypes = new HashSet<String>(mActions.keySet());
@@ -515,6 +389,7 @@
         }
 
         // Add buttons for each mimetype
+        mTrack.removeAllViews();
         for (String mimeType : mSortedActionMimeTypes) {
             final View actionView = inflateAction(mimeType, cache, mTrack);
             mTrack.addView(actionView);
@@ -574,6 +449,61 @@
         listFragment.setListener(mListFragmentListener);
     }
 
+    private LoaderCallbacks<ContactLoader.Result> mLoaderCallbacks =
+            new LoaderCallbacks<ContactLoader.Result>() {
+        @Override
+        public void onLoaderReset(Loader<ContactLoader.Result> loader) {
+        }
+
+        @Override
+        public void onLoadFinished(Loader<ContactLoader.Result> loader, ContactLoader.Result data) {
+            if (isFinishing()) {
+                hide(false);
+                return;
+            }
+            if (data.isError()) {
+                // This shouldn't ever happen, so throw an exception. The {@link ContactLoader}
+                // should log the actual exception.
+                throw new IllegalStateException("Failed to load contact", data.getException());
+            }
+            if (data.isNotFound()) {
+                Log.i(TAG, "No contact found: " + ((ContactLoader)loader).getLookupUri());
+                Toast.makeText(QuickContactActivity.this, R.string.invalidContactMessage,
+                        Toast.LENGTH_LONG).show();
+                hide(false);
+                return;
+            }
+
+            bindData(data);
+
+            if (TRACE_LAUNCH) {
+                android.os.Debug.stopMethodTracing();
+            }
+
+            // Data bound and ready, pull curtain to show. Put this on the Handler to ensure
+            // that the layout passes are completed
+            new Handler().post(new Runnable() {
+                @Override
+                public void run() {
+                    mFloatingLayout.showChild(new Runnable() {
+                        @Override
+                        public void run() {
+                            mHasFinishedAnimatingIn = true;
+                        }
+                    });
+                }
+            });
+        }
+
+        @Override
+        public Loader<ContactLoader.Result> onCreateLoader(int id, Bundle args) {
+            if (mLookupUri == null) {
+                Log.wtf(TAG, "Lookup uri wasn't initialized. Loader was started too early");
+            }
+            return new ContactLoader(getApplicationContext(), mLookupUri);
+        }
+    };
+
     /** A type (e.g. Call/Addresses was clicked) */
     private final OnClickListener mTypeViewClickListener = new OnClickListener() {
         @Override
@@ -653,53 +583,4 @@
             new Handler().post(startAppRunnable);
         }
     };
-
-    private interface DataQuery {
-        final String[] PROJECTION = new String[] {
-                Data._ID,
-
-                RawContacts.ACCOUNT_TYPE,
-                RawContacts.DATA_SET,
-                Contacts.STARRED,
-                Contacts.DISPLAY_NAME,
-
-                Data.STATUS,
-                Data.STATUS_RES_PACKAGE,
-                Data.STATUS_ICON,
-                Data.STATUS_LABEL,
-                Data.STATUS_TIMESTAMP,
-                Data.PRESENCE,
-                Data.CHAT_CAPABILITY,
-
-                Data.RES_PACKAGE,
-                Data.MIMETYPE,
-                Data.IS_PRIMARY,
-                Data.IS_SUPER_PRIMARY,
-                Data.RAW_CONTACT_ID,
-
-                Data.DATA1, Data.DATA2, Data.DATA3, Data.DATA4, Data.DATA5,
-                Data.DATA6, Data.DATA7, Data.DATA8, Data.DATA9, Data.DATA10, Data.DATA11,
-                Data.DATA12, Data.DATA13, Data.DATA14, Data.DATA15,
-        };
-
-        final int _ID = 0;
-
-        final int ACCOUNT_TYPE = 1;
-        final int DATA_SET = 2;
-        final int STARRED = 3;
-        final int DISPLAY_NAME = 4;
-
-        final int STATUS = 5;
-        final int STATUS_RES_PACKAGE = 6;
-        final int STATUS_ICON = 7;
-        final int STATUS_LABEL = 8;
-        final int STATUS_TIMESTAMP = 9;
-        final int PRESENCE = 10;
-        final int CHAT_CAPABILITY = 11;
-
-        final int RES_PACKAGE = 12;
-        final int MIMETYPE = 13;
-        final int IS_PRIMARY = 14;
-        final int IS_SUPER_PRIMARY = 15;
-    }
 }
diff --git a/src/com/android/contacts/quickcontact/QuickContactListFragment.java b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
index c6187e9..117480a 100644
--- a/src/com/android/contacts/quickcontact/QuickContactListFragment.java
+++ b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
@@ -16,14 +16,14 @@
 
 package com.android.contacts.quickcontact;
 
+import com.android.contacts.ContactPresenceIconUtil;
 import com.android.contacts.R;
 
 import android.app.Fragment;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.provider.ContactsContract.CommonDataKinds.Email;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -31,7 +31,7 @@
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.ImageView;
-import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
 import android.widget.ListView;
 import android.widget.TextView;
 
@@ -41,7 +41,7 @@
 public class QuickContactListFragment extends Fragment {
     private ListView mListView;
     private List<Action> mActions;
-    private LinearLayout mFragmentContainer;
+    private RelativeLayout mFragmentContainer;
     private Listener mListener;
 
     public QuickContactListFragment() {
@@ -50,7 +50,7 @@
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
-        mFragmentContainer = (LinearLayout) inflater.inflate(R.layout.quickcontact_list_fragment,
+        mFragmentContainer = (RelativeLayout) inflater.inflate(R.layout.quickcontact_list_fragment,
                 container, false);
         mListView = (ListView) mFragmentContainer.findViewById(R.id.list);
         mListView.setItemsCanFocus(true);
@@ -111,6 +111,8 @@
                 final ImageView alternateActionButton = (ImageView) resultView.findViewById(
                         R.id.secondary_action_button);
                 final View alternateActionDivider = resultView.findViewById(R.id.vertical_divider);
+                final ImageView presenceIconView =
+                        (ImageView) resultView.findViewById(R.id.presence_icon);
 
                 actionsContainer.setOnClickListener(mPrimaryActionClickListener);
                 actionsContainer.setTag(action);
@@ -143,6 +145,14 @@
                         text2.setVisibility(View.VISIBLE);
                     }
                 }
+                final Drawable presenceIcon = ContactPresenceIconUtil.getPresenceIcon(
+                        getActivity(), action.getPresence());
+                if (presenceIcon != null) {
+                    presenceIconView.setImageDrawable(presenceIcon);
+                    presenceIconView.setVisibility(View.VISIBLE);
+                } else {
+                    presenceIconView.setVisibility(View.GONE);
+                }
                 return resultView;
             }
         });
diff --git a/src/com/android/contacts/util/AccountFilterUtil.java b/src/com/android/contacts/util/AccountFilterUtil.java
index 955c195..d63db55 100644
--- a/src/com/android/contacts/util/AccountFilterUtil.java
+++ b/src/com/android/contacts/util/AccountFilterUtil.java
@@ -118,22 +118,26 @@
      *
      * @param activity
      * @param requestCode requestCode for {@link Activity#startActivityForResult(Intent, int)}
+     * @param currentFilter currently-selected filter, so that it can be displayed as activated.
      */
     public static void startAccountFilterActivityForResult(
-            Activity activity, int requestCode) {
+            Activity activity, int requestCode, ContactListFilter currentFilter) {
         final Intent intent = new Intent(activity, AccountFilterActivity.class);
+        intent.putExtra(AccountFilterActivity.KEY_EXTRA_CURRENT_FILTER, currentFilter);
         activity.startActivityForResult(intent, requestCode);
     }
 
     /**
-     * Very similar to {@link #startAccountFilterActivityForResult(Activity, int)} but uses
-     * Fragment instead.
+     * Very similar to
+     * {@link #startAccountFilterActivityForResult(Activity, int, ContactListFilter)}
+     * but uses Fragment instead.
      */
     public static void startAccountFilterActivityForResult(
-            Fragment fragment, int requestCode) {
+            Fragment fragment, int requestCode, ContactListFilter currentFilter) {
         final Activity activity = fragment.getActivity();
         if (activity != null) {
             final Intent intent = new Intent(activity, AccountFilterActivity.class);
+            intent.putExtra(AccountFilterActivity.KEY_EXTRA_CURRENT_FILTER, currentFilter);
             fragment.startActivityForResult(intent, requestCode);
         } else {
             Log.w(TAG, "getActivity() returned null. Ignored");
diff --git a/src/com/android/contacts/vcard/CancelActivity.java b/src/com/android/contacts/vcard/CancelActivity.java
index c890607..5dafa53 100644
--- a/src/com/android/contacts/vcard/CancelActivity.java
+++ b/src/com/android/contacts/vcard/CancelActivity.java
@@ -87,17 +87,13 @@
     protected Dialog onCreateDialog(int id, Bundle bundle) {
         switch (id) {
         case R.id.dialog_cancel_confirmation: {
-            final String title;
             final String message;
             if (mType == VCardService.TYPE_IMPORT) {
-                title = getString(R.string.cancel_import_confirmation_title);
                 message = getString(R.string.cancel_import_confirmation_message, mDisplayName);
             } else {
-                title = getString(R.string.cancel_export_confirmation_title);
                 message = getString(R.string.cancel_export_confirmation_message, mDisplayName);
             }
             final AlertDialog.Builder builder = new AlertDialog.Builder(this)
-                    .setTitle(title)
                     .setMessage(message)
                     .setPositiveButton(android.R.string.ok, new RequestCancelListener())
                     .setOnCancelListener(mCancelListener)
diff --git a/src/com/android/contacts/vcard/ExportVCardActivity.java b/src/com/android/contacts/vcard/ExportVCardActivity.java
index c36cc38..f38c9df 100644
--- a/src/com/android/contacts/vcard/ExportVCardActivity.java
+++ b/src/com/android/contacts/vcard/ExportVCardActivity.java
@@ -235,7 +235,6 @@
             case R.id.dialog_sdcard_not_found: {
                 mProcessOngoing = false;
                 return new AlertDialog.Builder(this)
-                        .setTitle(R.string.no_sdcard_title)
                         .setIconAttribute(android.R.attr.alertDialogIcon)
                         .setMessage(R.string.no_sdcard_message)
                         .setPositiveButton(android.R.string.ok, this).create();
diff --git a/src/com/android/contacts/vcard/ImportVCardActivity.java b/src/com/android/contacts/vcard/ImportVCardActivity.java
index 18b9cc1..2dc92af 100644
--- a/src/com/android/contacts/vcard/ImportVCardActivity.java
+++ b/src/com/android/contacts/vcard/ImportVCardActivity.java
@@ -901,10 +901,9 @@
             }
             case R.id.dialog_searching_vcard: {
                 if (mProgressDialogForScanVCard == null) {
-                    String title = getString(R.string.searching_vcard_title);
                     String message = getString(R.string.searching_vcard_message);
                     mProgressDialogForScanVCard =
-                        ProgressDialog.show(this, title, message, true, false);
+                        ProgressDialog.show(this, "", message, true, false);
                     mProgressDialogForScanVCard.setOnCancelListener(mVCardScanThread);
                     mVCardScanThread.start();
                 }
@@ -912,7 +911,6 @@
             }
             case R.id.dialog_sdcard_not_found: {
                 AlertDialog.Builder builder = new AlertDialog.Builder(this)
-                    .setTitle(R.string.no_sdcard_title)
                     .setIconAttribute(android.R.attr.alertDialogIcon)
                     .setMessage(R.string.no_sdcard_message)
                     .setOnCancelListener(mCancelListener)
@@ -922,7 +920,6 @@
             case R.id.dialog_vcard_not_found: {
                 final String message = getString(R.string.import_failure_no_vcard_file);
                 AlertDialog.Builder builder = new AlertDialog.Builder(this)
-                        .setTitle(R.string.scanning_sdcard_failed_title)
                         .setMessage(message)
                         .setOnCancelListener(mCancelListener)
                         .setPositiveButton(android.R.string.ok, mCancelListener);
@@ -954,7 +951,6 @@
                 String message = (getString(R.string.scanning_sdcard_failed_message,
                         getString(R.string.fail_reason_io_error)));
                 AlertDialog.Builder builder = new AlertDialog.Builder(this)
-                    .setTitle(R.string.scanning_sdcard_failed_title)
                     .setIconAttribute(android.R.attr.alertDialogIcon)
                     .setMessage(message)
                     .setOnCancelListener(mCancelListener)
diff --git a/src/com/android/contacts/vcard/NfcImportVCardActivity.java b/src/com/android/contacts/vcard/NfcImportVCardActivity.java
index d182cfd..c3a55d2 100644
--- a/src/com/android/contacts/vcard/NfcImportVCardActivity.java
+++ b/src/com/android/contacts/vcard/NfcImportVCardActivity.java
@@ -154,25 +154,20 @@
         if (!NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
             Log.w(TAG, "Unknowon intent " + intent);
             finish();
-        }
-
-        NdefMessage msg = (NdefMessage) intent.getParcelableArrayExtra(
-                NfcAdapter.EXTRA_NDEF_MESSAGES)[0];
-        NdefRecord records[] = msg.getRecords();
-        if (records == null || records.length == 0) {
-            Log.w(TAG, "No records " + intent);
-            finish();
-        }
-
-        NdefRecord record = records[0];
-        String type = new String(record.getType(), Charset.forName("UTF8"));
-        if (record.getTnf() != NdefRecord.TNF_MIME_MEDIA ||
-                (!"text/x-vcard".equalsIgnoreCase(type) && !"text/vcard".equals(type))) {
-            Log.w(TAG, "Not a vcard");
-            //setStatus(getString(R.string.fail_reason_not_supported));
             return;
         }
-        mRecord = record;
+
+        String type = intent.getType();
+        if (type == null ||
+                (!"text/x-vcard".equals(type) && !"text/vcard".equals(type))) {
+            Log.w(TAG, "Not a vcard");
+            //setStatus(getString(R.string.fail_reason_not_supported));
+            finish();
+            return;
+        }
+        NdefMessage msg = (NdefMessage) intent.getParcelableArrayExtra(
+                NfcAdapter.EXTRA_NDEF_MESSAGES)[0];
+        mRecord = msg.getRecords()[0];
 
         final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
         final List<AccountWithDataSet> accountList = accountTypes.getAccounts(true);
diff --git a/src/com/android/contacts/widget/CompositeListAdapter.java b/src/com/android/contacts/widget/CompositeListAdapter.java
index 692e073..610b97f 100644
--- a/src/com/android/contacts/widget/CompositeListAdapter.java
+++ b/src/com/android/contacts/widget/CompositeListAdapter.java
@@ -15,6 +15,7 @@
  */
 package com.android.contacts.widget;
 
+import com.android.contacts.test.NeededForTesting;
 import com.google.common.annotations.VisibleForTesting;
 
 import android.database.DataSetObserver;
@@ -27,7 +28,11 @@
  * A general purpose adapter that is composed of multiple sub-adapters. It just
  * appends them in the order they are added. It listens to changes from all
  * sub-adapters and propagates them to its own listeners.
+ *
+ * This class not used for now -- but let's keep running the test in case we want to revive it...
+ * (So NeededForTesting)
  */
+@NeededForTesting
 public class CompositeListAdapter extends BaseAdapter {
 
     private static final int INITIAL_CAPACITY = 2;
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 6ea42d6..2806830 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -119,6 +119,9 @@
                 android:name="android.provider.CONTACTS_STRUCTURE"
                 android:resource="@xml/test_basic_contacts" />
         </service>
+
+        <service android:name=".QueryService" />
+        <service android:name=".PhoneNumberTestService" />
     </application>
 
     <instrumentation android:name="android.test.InstrumentationTestRunner"
diff --git a/tests/res/drawable/ic_contact_picture.png b/tests/res/drawable/ic_contact_picture.png
index 3a338e8..6876777 100644
--- a/tests/res/drawable/ic_contact_picture.png
+++ b/tests/res/drawable/ic_contact_picture.png
Binary files differ
diff --git a/tests/res/values/donottranslate_strings.xml b/tests/res/values/donottranslate_strings.xml
index 19ebde3..c3cbc10 100644
--- a/tests/res/values/donottranslate_strings.xml
+++ b/tests/res/values/donottranslate_strings.xml
@@ -23,7 +23,7 @@
         <!-- List modes -->
         <item>LIST_DEFAULT</item>
         <item>LIST_ALL_CONTACTS_ACTION</item>
-        <item>LIST_CONTACTS_WITH_PHONES_ACTION</item>
+        <item>LIST_CONTACTS_WITH_PHONES_ACTION (deprecated)</item>
         <item>LIST_STARRED_ACTION</item>
         <item>LIST_FREQUENT_ACTION</item>
         <item>LIST_STREQUENT_ACTION</item>
diff --git a/tests/src/com/android/contacts/activities/PeopleActivityTest.java b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
index 66c2c5a..ea7c3dc 100644
--- a/tests/src/com/android/contacts/activities/PeopleActivityTest.java
+++ b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
@@ -48,7 +48,7 @@
 import android.provider.ContactsContract.ProviderStatus;
 import android.provider.Settings;
 import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.Smoke;
+import android.test.suitebuilder.annotation.SmallTest;
 import android.widget.TextView;
 
 /**
@@ -64,7 +64,7 @@
  *     -w com.android.contacts.tests/android.test.InstrumentationTestRunner
  *
  */
-@Smoke
+@SmallTest
 public class PeopleActivityTest
         extends ActivityInstrumentationTestCase2<PeopleActivity>
 {
diff --git a/tests/src/com/android/contacts/calllog/CallLogFragmentTest.java b/tests/src/com/android/contacts/calllog/CallLogFragmentTest.java
index 9cac8fe..89c0a99 100644
--- a/tests/src/com/android/contacts/calllog/CallLogFragmentTest.java
+++ b/tests/src/com/android/contacts/calllog/CallLogFragmentTest.java
@@ -619,14 +619,14 @@
 
     /** Asserts that the number and label text view contains the given text. */
     private void assertNumberAndLabelAre(CallLogListItemViews views, CharSequence number,
-            CharSequence numberLabel) {
+            CharSequence label) {
         assertEquals(View.VISIBLE, views.phoneCallDetailsViews.numberView.getVisibility());
-        final CharSequence expectedText;
-        if (numberLabel == null) {
-            expectedText = number;
-        } else {
-            expectedText = numberLabel + " " + number;
+        assertEquals(number, views.phoneCallDetailsViews.numberView.getText().toString());
+
+        assertEquals(label == null ? View.GONE : View.VISIBLE,
+                views.phoneCallDetailsViews.labelView.getVisibility());
+        if (label != null) {
+            assertEquals(label, views.phoneCallDetailsViews.labelView.getText().toString());
         }
-        assertEquals(expectedText, views.phoneCallDetailsViews.numberView.getText().toString());
     }
 }
diff --git a/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java b/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java
index 19b14d9..131af96 100644
--- a/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java
+++ b/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java
@@ -21,6 +21,7 @@
 import com.google.common.collect.Lists;
 
 import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
 import android.view.View;
 
 import java.util.ArrayList;
@@ -33,6 +34,7 @@
 /**
  * Unit tests for {@link StreamItemAdapter}.
  */
+@SmallTest
 public class StreamItemAdapterTest extends AndroidTestCase {
     private StreamItemAdapter mAdapter;
     private FakeOnClickListener mListener;
diff --git a/tests/src/com/android/contacts/format/PrefixHighligherTest.java b/tests/src/com/android/contacts/format/PrefixHighligherTest.java
index a0c0ff3..668330b 100644
--- a/tests/src/com/android/contacts/format/PrefixHighligherTest.java
+++ b/tests/src/com/android/contacts/format/PrefixHighligherTest.java
@@ -17,11 +17,13 @@
 package com.android.contacts.format;
 
 import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
 import android.widget.TextView;
 
 /**
  * Unit tests for {@link PrefixHighlighter}.
  */
+@SmallTest
 public class PrefixHighligherTest extends AndroidTestCase {
     private static final int TEST_PREFIX_HIGHLIGHT_COLOR = 0xFF0000;
     /** The HTML code used to mark the start of the highlighted part. */
diff --git a/tests/src/com/android/contacts/format/SpannedTestUtils.java b/tests/src/com/android/contacts/format/SpannedTestUtils.java
index 625c6aa..646a7ec 100644
--- a/tests/src/com/android/contacts/format/SpannedTestUtils.java
+++ b/tests/src/com/android/contacts/format/SpannedTestUtils.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts.format;
 
+import android.test.suitebuilder.annotation.SmallTest;
 import android.text.Html;
 import android.text.Spanned;
 import android.text.TextUtils;
@@ -26,6 +27,7 @@
 /**
  * Utility class to check the value of spanned text in text views.
  */
+@SmallTest
 public class SpannedTestUtils {
     /**
      * Checks that the text contained in the text view matches the given HTML text.
diff --git a/tests/src/com/android/contacts/format/TestTextWithHighlightingFactory.java b/tests/src/com/android/contacts/format/TestTextWithHighlightingFactory.java
index f2848d0..2deaef3 100644
--- a/tests/src/com/android/contacts/format/TestTextWithHighlightingFactory.java
+++ b/tests/src/com/android/contacts/format/TestTextWithHighlightingFactory.java
@@ -21,10 +21,12 @@
 
 import android.database.CharArrayBuffer;
 import android.graphics.Typeface;
+import android.test.suitebuilder.annotation.SmallTest;
 import android.text.SpannableStringBuilder;
 import android.text.style.StyleSpan;
 
 /** A factory for {@link TextWithHighlighting} that wraps its parts in italics. */
+@SmallTest
 public final class TestTextWithHighlightingFactory implements TextWithHighlightingFactory {
     /** A {@link TextWithHighlighting} implementation that wraps its parts in italics. */
     private final static class TestTextWithHighlighting extends SpannableStringBuilder
diff --git a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
index 2c4b74c..b37d24f 100644
--- a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
+++ b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
@@ -35,7 +35,7 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Contacts.Entity;
 import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.Smoke;
+import android.test.suitebuilder.annotation.SmallTest;
 
 /**
  * Tests for {@link ContactDeletionInteraction}.
@@ -47,7 +47,7 @@
  *   adb shell am instrument \
  *     -w com.android.contacts.tests/android.test.InstrumentationTestRunner
  */
-@Smoke
+@SmallTest
 public class ContactDeletionInteractionTest
         extends ActivityInstrumentationTestCase2<FragmentTestActivity> {
 
diff --git a/tests/src/com/android/contacts/interactions/PhoneNumberInteractionTest.java b/tests/src/com/android/contacts/interactions/PhoneNumberInteractionTest.java
index e0b443a..2da8859 100644
--- a/tests/src/com/android/contacts/interactions/PhoneNumberInteractionTest.java
+++ b/tests/src/com/android/contacts/interactions/PhoneNumberInteractionTest.java
@@ -29,11 +29,12 @@
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.RawContacts;
 import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.Smoke;
+import android.test.suitebuilder.annotation.SmallTest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -48,7 +49,7 @@
  *   adb shell am instrument \
  *     -w com.android.contacts.tests/android.test.InstrumentationTestRunner
  */
-@Smoke
+@SmallTest
 public class PhoneNumberInteractionTest extends InstrumentationTestCase {
 
     static {
@@ -89,7 +90,8 @@
     public void testSendSmsWhenOnlyOneNumberAvailable() {
         Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
         expectQuery(contactUri)
-                .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null);
+                .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
+                        Phone.CONTENT_ITEM_TYPE);
 
         TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
                 mContext, InteractionType.SMS, null);
@@ -107,7 +109,8 @@
     public void testSendSmsWhenDataIdIsProvided() {
         Uri dataUri = ContentUris.withAppendedId(Data.CONTENT_URI, 1);
         expectQuery(dataUri, true /* isDataUri */ )
-                .returnRow(1, "987", 0, null, null, Phone.TYPE_HOME, null);
+                .returnRow(1, "987", 0, null, null, Phone.TYPE_HOME, null,
+                        Phone.CONTENT_ITEM_TYPE);
 
         TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
                 mContext, InteractionType.SMS, null);
@@ -125,8 +128,10 @@
     public void testSendSmsWhenThereIsPrimaryNumber() {
         Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
         expectQuery(contactUri)
-                .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null)
-                .returnRow(2, "456", 1, null, null, Phone.TYPE_HOME, null);
+                .returnRow(
+                        1, "123", 0, null, null, Phone.TYPE_HOME, null, Phone.CONTENT_ITEM_TYPE)
+                .returnRow(
+                        2, "456", 1, null, null, Phone.TYPE_HOME, null, Phone.CONTENT_ITEM_TYPE);
 
         TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
                 mContext, InteractionType.SMS, null);
@@ -164,8 +169,10 @@
     public void testCallNumberWhenThereAreDuplicates() {
         Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
         expectQuery(contactUri)
-                .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null)
-                .returnRow(2, "123", 0, null, null, Phone.TYPE_WORK, null);
+                .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
+                        Phone.CONTENT_ITEM_TYPE)
+                .returnRow(2, "123", 0, null, null, Phone.TYPE_WORK, null,
+                        Phone.CONTENT_ITEM_TYPE);
 
         TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
                 mContext, InteractionType.PHONE_CALL, null);
@@ -180,11 +187,31 @@
         assertEquals("tel:123", intent.getDataString());
     }
 
+    public void testCallWithSip() {
+        Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
+        expectQuery(contactUri)
+                .returnRow(1, "example@example.com", 0, null, null, Phone.TYPE_HOME, null,
+                        SipAddress.CONTENT_ITEM_TYPE);
+        TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
+                mContext, InteractionType.PHONE_CALL, null);
+
+        interaction.startInteraction(contactUri);
+        interaction.getLoader().waitForLoader();
+
+        Intent intent = mContext.getIntentForStartActivity();
+        assertNotNull(intent);
+
+        assertEquals(Intent.ACTION_CALL_PRIVILEGED, intent.getAction());
+        assertEquals("sip:example%40example.com", intent.getDataString());
+    }
+
     public void testShowDisambigDialogForCalling() {
         Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
         expectQuery(contactUri)
-                .returnRow(1, "123", 0, "account", null, Phone.TYPE_HOME, "label")
-                .returnRow(2, "456", 0, null, null, Phone.TYPE_WORK, null);
+                .returnRow(1, "123", 0, "account", null, Phone.TYPE_HOME, "label",
+                        Phone.CONTENT_ITEM_TYPE)
+                .returnRow(2, "456", 0, null, null, Phone.TYPE_WORK, null,
+                        Phone.CONTENT_ITEM_TYPE);
 
         TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
                 mContext, InteractionType.PHONE_CALL, null);
@@ -224,7 +251,9 @@
                         RawContacts.ACCOUNT_TYPE,
                         RawContacts.DATA_SET,
                         Phone.TYPE,
-                        Phone.LABEL)
-                .withSelection("mimetype='vnd.android.cursor.item/phone_v2' AND data1 NOT NULL");
+                        Phone.LABEL,
+                        Phone.MIMETYPE)
+                .withSelection("mimetype IN ('vnd.android.cursor.item/phone_v2',"
+                        + " 'vnd.android.cursor.item/sip_address') AND data1 NOT NULL");
     }
 }
diff --git a/tests/src/com/android/contacts/tests/PhoneNumberTestService.java b/tests/src/com/android/contacts/tests/PhoneNumberTestService.java
new file mode 100644
index 0000000..894e66e
--- /dev/null
+++ b/tests/src/com/android/contacts/tests/PhoneNumberTestService.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2011 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.tests;
+
+import com.android.i18n.phonenumbers.NumberParseException;
+import com.android.i18n.phonenumbers.PhoneNumberUtil;
+import com.android.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
+import android.app.IntentService;
+import android.content.Context;
+import android.content.Intent;
+import android.location.CountryDetector;
+import android.telephony.PhoneNumberUtils;
+import android.util.Log;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * A service to test various phone number formatters.
+ *
+   Usage:
+     adb shell am startservice -e n PHONE_NUMBER \
+       [-e c OPTIONAL COUNTRY CODE]  \
+       com.android.contacts.tests/.PhoneNumberTestService
+
+   Example:
+
+   adb shell am startservice -e n '6502530000' \
+     com.android.contacts.tests/.PhoneNumberTestService
+ */
+public class PhoneNumberTestService extends IntentService {
+    private static final String TAG = "phonenumber";
+
+    private static final String EXTRA_PHONE_NUMBER = "n";
+    private static final String EXTRA_COUNTRY_CODE = "c";
+
+    public PhoneNumberTestService() {
+        super("PhoneNumberTestService");
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        final String number = intent.getStringExtra(EXTRA_PHONE_NUMBER);
+        final String country = intent.getStringExtra(EXTRA_COUNTRY_CODE);
+        final String defaultCountry = getCurrentCountryCode();
+
+        Log.i(TAG, "Input phone number: " + number);
+        Log.i(TAG, "Input country code: " + country);
+        Log.i(TAG, "Current country code: " + defaultCountry);
+
+        // Dump for the given country, the current country, US, GB and JP.
+        Set<String> countries = new LinkedHashSet<String>();
+        if (country != null) countries.add(country);
+        countries.add(defaultCountry);
+        countries.add("US");
+        countries.add("GB");
+        countries.add("JP");
+
+        for (String c : countries) {
+            dump(number, c);
+        }
+    }
+
+    private void dump(String number, String country) {
+        Log.i(TAG, "Result for: " + number + " / " +country);
+        dump_PhoneNumberUtils_formatNumberToE164(number, country);
+        dump_PhoneNumberUtil_format(number, country, PhoneNumberFormat.E164);
+        dump_PhoneNumberUtil_format(number, country, PhoneNumberFormat.INTERNATIONAL);
+        dump_PhoneNumberUtil_format(number, country, PhoneNumberFormat.NATIONAL);
+        dump_PhoneNumberUtil_format(number, country, PhoneNumberFormat.RFC3966);
+    }
+
+    private void dump_PhoneNumberUtils_formatNumberToE164(String number, String country) {
+        Log.i(TAG, "  formatNumberToE164(" + number + ", " + country
+                + ") = " + PhoneNumberUtils.formatNumberToE164(number, country));
+    }
+
+    private void dump_PhoneNumberUtil_format(String number, String country,
+            PhoneNumberFormat format) {
+        String formatted;
+        boolean isValid = false;
+        try {
+            final PhoneNumberUtil util = PhoneNumberUtil.getInstance();
+            final PhoneNumber pn = util.parse(number, country);
+            isValid = util.isValidNumber(pn);
+            formatted = util.format(pn, format);
+        } catch (NumberParseException e) {
+            formatted = "Error: " + e.toString();
+        }
+        Log.i(TAG, "  PhoneNumberUtil.format(parse(" + number + ", " + country + "), " + format
+                + ") = " + formatted + (isValid ? " (valid)" : " (invalid)"));
+    }
+
+    private String getCurrentCountryCode() {
+        final CountryDetector countryDetector =
+                (CountryDetector) getSystemService(Context.COUNTRY_DETECTOR);
+        return countryDetector.detectCountry().getCountryIso();
+    }
+}
+
diff --git a/tests/src/com/android/contacts/tests/QueryService.java b/tests/src/com/android/contacts/tests/QueryService.java
new file mode 100644
index 0000000..04a95c5
--- /dev/null
+++ b/tests/src/com/android/contacts/tests/QueryService.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2011 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.tests;
+
+import android.app.IntentService;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.text.TextUtils;
+import android.util.Log;
+
+/**
+ * A service that executes a query specified by an intent and dump the result on logcat.  Use the
+ * "am" command to launch it.
+ *
+   Usage:
+     adb shell am startservice -d URI \
+       [-e p OPTIONAL PROJECTION] [-e s OPTIONAL SELECTION] [-e s OPTIONAL ORDER BY]  \
+       com.android.contacts.tests/.QueryService
+
+   Example:
+
+   adb shell am startservice -d content://com.android.contacts/directories \
+     -e p accountName,accountType -e s 'accountName NOT NULL' -e o '_id'  \
+     com.android.contacts.tests/.QueryService
+ */
+public class QueryService extends IntentService {
+    private static final String TAG = "contactsquery";
+
+    private static final String EXTRA_PROJECTION = "p";
+    private static final String EXTRA_SELECTION = "s";
+    private static final String EXTRA_ORDER = "o";
+    private static final String NULL_STRING = "*null*";
+    private static final String SEPARATOR = "|";
+
+    public QueryService() {
+        super("ContactsQueryService");
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        final Uri uri = intent.getData();
+        // Unfortunately "am" doesn't support string arrays...
+        final String projection = intent.getStringExtra(EXTRA_PROJECTION);
+        final String selection = intent.getStringExtra(EXTRA_SELECTION);
+        final String order = intent.getStringExtra(EXTRA_ORDER);
+
+        Log.i(TAG, "URI: " + uri);
+        Log.i(TAG, "Projection: " + projection);
+        Log.i(TAG, "Selection: " + selection);
+
+        try {
+            Cursor c = getContentResolver().query(uri, parseProjection(projection), selection, null,
+                    order);
+            if (c == null) {
+                Log.i(TAG, "(no results)");
+                return;
+            }
+            StringBuilder sb = new StringBuilder();
+            try {
+                Log.i(TAG, "Result count: " + c.getCount());
+
+                final int columnCount = c.getColumnCount();
+
+                sb.setLength(0);
+                for (int i = 0; i < columnCount; i++) {
+                    add(sb, c.getColumnName(i));
+                }
+                Log.i(TAG, sb.toString());
+
+                c.moveToPosition(-1);
+                while (c.moveToNext()) {
+                    sb.setLength(0);
+                    for (int i = 0; i < columnCount; i++) {
+                        add(sb, c.getString(i));
+                    }
+                    Log.i(TAG, sb.toString());
+                }
+            } finally {
+                c.close();
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "Exeption while executing query", e);
+        }
+    }
+
+    private StringBuilder add(StringBuilder sb, String s) {
+        if (sb.length() > 0) {
+            sb.append(SEPARATOR);
+        }
+        sb.append(s == null ? NULL_STRING : s);
+        return sb;
+    }
+
+    private static String[] parseProjection(String projectionString) {
+        if (TextUtils.isEmpty(projectionString)) {
+            return null; // all columns
+        }
+        final String[] columns = projectionString.split(",");
+        if (columns.length == 0) {
+            return null; // all columns
+        }
+        return columns;
+    }
+}
diff --git a/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java b/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java
index 555b339..0d9383f 100644
--- a/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java
+++ b/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java
@@ -290,11 +290,15 @@
                 break;
             }
             case ACTION_SEARCH_EMAIL: {
-                Toast.makeText(this, "Unsupported", Toast.LENGTH_SHORT).show();
+                Intent intent = new Intent(Intent.ACTION_SEARCH);
+                intent.putExtra(Insert.EMAIL, "a");
+                startSearchResultActivity(intent);
                 break;
             }
             case ACTION_SEARCH_PHONE: {
-                Toast.makeText(this, "Unsupported", Toast.LENGTH_SHORT).show();
+                Intent intent = new Intent(Intent.ACTION_SEARCH);
+                intent.putExtra(Insert.PHONE, "800");
+                startSearchResultActivity(intent);
                 break;
             }
             case SEARCH_SUGGESTION_CLICKED_CALL_BUTTON: {
diff --git a/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java b/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
index 51c665f..67b7c0c 100644
--- a/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
+++ b/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
@@ -18,6 +18,7 @@
 
 import com.android.contacts.ContactPhotoManager;
 
+import android.graphics.Bitmap;
 import android.net.Uri;
 import android.widget.ImageView;
 
@@ -56,6 +57,10 @@
     }
 
     @Override
+    public void cacheBitmap(Uri photoUri, Bitmap bitmap, byte[] photoBytes) {
+    }
+
+    @Override
     public void preloadPhotosInBackground() {
     }
 }