Merge "Added menu option to clear frequents in favorites tab of Phone and People"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 826fd3d..a1f8b4a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -645,5 +645,16 @@
             android:name=".calllog.CallLogNotificationsService"
             android:exported="false"
         />
+
+        <!-- Service that is exclusively for the Phone application that sends out a view
+             notification. This service might be removed in future versions of the app  -->
+        <service android:name=".ViewNotificationService"
+            android:permission="android.permission.WRITE_CONTACTS"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="com.android.contacts.VIEW_NOTIFICATION" />
+                <data android:mimeType="vnd.android.cursor.item/contact" />
+            </intent-filter>
+        </service>
     </application>
 </manifest>
diff --git a/res/drawable/btn_call.xml b/res/drawable/btn_call.xml
index 73ff87b..abce983 100644
--- a/res/drawable/btn_call.xml
+++ b/res/drawable/btn_call.xml
@@ -17,8 +17,7 @@
 <!-- Background resource for call button in the various dialpads.
      Almost a copy from framework's item_background_holo_dark.xml, but has different pressed effect
   -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android"
-          android:exitFadeDuration="@android:integer/config_mediumAnimTime">
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item android:state_window_focused="false" android:drawable="@android:color/transparent" />
 
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
index 7498f5a..1d0a285 100644
--- a/res/layout/call_detail.xml
+++ b/res/layout/call_detail.xml
@@ -20,6 +20,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:visibility="gone"
+    android:background="@android:color/black"
 >
     <!--
       The list view is under everything.
@@ -32,7 +33,6 @@
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_alignParentTop="true"
-        android:background="@android:color/black"
     />
 
     <!-- All the controls which are part of the pinned header are in this layout. -->
@@ -128,35 +128,34 @@
             android:layout_height="wrap_content"
             android:paddingBottom="@dimen/call_detail_button_spacing"
             android:layout_below="@id/blue_separator"
-            android:background="@android:color/black"
         >
             <!-- The voicemail fragment will be put here. -->
         </LinearLayout>
-        <FrameLayout android:id="@+id/call_and_sms_container"
+        <FrameLayout
+            android:id="@+id/call_and_sms"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_height="@dimen/call_log_list_item_height"
             android:layout_marginBottom="@dimen/call_detail_button_spacing"
             android:layout_below="@id/voicemail_container"
-            android:background="@android:color/black"
+            android:gravity="center_vertical"
+            android:background="@drawable/dialpad_background"
         >
-            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:id="@+id/call_and_sms"
+            <LinearLayout
+                android:id="@+id/call_and_sms_main_action"
                 android:layout_width="match_parent"
-                android:layout_height="@dimen/call_log_list_item_height"
+                android:layout_height="match_parent"
                 android:orientation="horizontal"
-                android:gravity="center_vertical"
-                android:background="@drawable/dialpad_background"
-            >
+                android:focusable="true"
+                android:background="?android:attr/selectableItemBackground"
+                >
 
-                <LinearLayout android:id="@+id/call_and_sms_main_action"
+                <LinearLayout
                     android:layout_width="0dip"
                     android:layout_height="match_parent"
                     android:layout_weight="1"
                     android:paddingLeft="@dimen/call_log_indent_margin"
                     android:orientation="vertical"
                     android:gravity="center_vertical"
-                    android:focusable="true"
-                    android:background="?android:attr/selectableItemBackground"
                 >
 
                     <TextView android:id="@+id/call_and_sms_text"
@@ -179,7 +178,6 @@
                         android:singleLine="true"
                         android:ellipsize="end"
                     />
-
                 </LinearLayout>
 
                 <View android:id="@+id/call_and_sms_divider"
@@ -213,7 +211,7 @@
         android:layout_height="match_parent"
         android:layout_alignParentLeft="true"
         android:layout_alignParentTop="true"
-        android:background="#000000"
+        android:background="@android:color/black"
         android:visibility="gone"
         android:clickable="true"
     />
diff --git a/res/layout/stream_item_container.xml b/res/layout/stream_item_container.xml
index 6fa15b1..ee32596 100644
--- a/res/layout/stream_item_container.xml
+++ b/res/layout/stream_item_container.xml
@@ -50,20 +50,31 @@
             android:layout_height="wrap_content"
             android:textSize="16sp"
             android:textColor="?android:attr/textColorPrimary" />
-        <TextView android:id="@+id/stream_item_attribution"
-            android:layout_width="wrap_content"
+        <!--
+        Attribution (e.g. timestamp) and comments (e.g. +1, like) should align horizontally.
+        Can't merge this with the parent list view.
+        -->
+        <LinearLayout
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:textColor="?android:attr/textColorSecondary"
-            android:ellipsize="end"
-            android:maxLines="1" />
-        <TextView android:id="@+id/stream_item_comments"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="@dimen/detail_update_section_attribution_comments_padding"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:textColor="?android:attr/textColorSecondary"
-            android:maxLines="1"/>
+            android:orientation="horizontal"
+            >
+            <TextView android:id="@+id/stream_item_attribution"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceSmall"
+                android:textColor="?android:attr/textColorSecondary"
+                android:ellipsize="end"
+                android:maxLines="1" />
+            <TextView android:id="@+id/stream_item_comments"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft=
+                    "@dimen/detail_update_section_attribution_comments_padding"
+                android:textAppearance="?android:attr/textAppearanceSmall"
+                android:textColor="?android:attr/textColorSecondary"
+                android:maxLines="1"/>
+        </LinearLayout>
     </LinearLayout>
 
     <View
diff --git a/res/menu/call_details_cab.xml b/res/menu/call_details_cab.xml
new file mode 100644
index 0000000..7de675f
--- /dev/null
+++ b/res/menu/call_details_cab.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/copy_phone_number"
+        android:icon="?android:attr/actionModeCopyDrawable"
+        android:title="@string/menu_copy"
+    />
+</menu>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 9f60412..4c02c94 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -46,6 +46,7 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Verwyder van gunstelinge"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Redigeer"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Vee uit"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"Kopieer"</string>
     <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Plaas op tuisskerm"</string>
     <string name="menu_call" msgid="3992595586042260618">"Bel kontak"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Teks - kontak"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 76628ea..2cedd03 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -46,6 +46,7 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"ከተወዳጆች አስወግድ"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"አርትዕ"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"ሰርዝ"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"ቅዳ"</string>
     <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"መነሻ የማያ ገጽ ላይ አስቀምጥ"</string>
     <string name="menu_call" msgid="3992595586042260618">"የጥሪ ዕውቂያ"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"ዕውቂያ ፃፍ"</string>
@@ -77,7 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"ኩባንያ"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"አርዕስት"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"ዕውቅያው የለም።"</string>
-    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"የእውቂያ ንዑስ ፕሮግራም መነሻ ማያ ገጽ ላይ ታክሏል።"</string>
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"የእውቂያ መግብር መነሻ ማያ ገጽ ላይ ታክሏል።"</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"አዲስ ዕውቂያ ፍጠር"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"አዲስ እውቂያ ፍጠር"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"ስልክ"</string>
@@ -275,7 +276,7 @@
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 ሰከንድ ፋታ አክል"</string>
     <string name="add_wait" msgid="3360818652790319634">"ጠብቅአክል"</string>
     <string name="call_disambig_title" msgid="1911302597959335178">"ጥሪ በመጠቀም"</string>
-    <string name="call_settings" msgid="7666474782093693667">"ቅንጅቶች"</string>
+    <string name="call_settings" msgid="7666474782093693667">"ቅንብሮች"</string>
     <string name="sms_disambig_title" msgid="4675399294513152364">"ፅሁፍበመጠቀም"</string>
     <string name="make_primary" msgid="5829291915305113983">"ይህን ምርጫ አስታውስ"</string>
     <string name="quickcontact_missing_app" msgid="358168575340921552">"ይህን እርምጃ ለማስተናገድ ምንም መተግበሪያ አልተገኘም፡፡"</string>
@@ -550,7 +551,7 @@
     <string name="add_account" msgid="8201790677994503186">"መለያ አክል"</string>
     <string name="add_new_account" msgid="5748627740680940264">"አዲስ መለያ አክል"</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_not_ready_message" msgid="4384716252789515378">"ድምጽ መልዕክትን ለማደራጀት ወደ ምናሌ &gt; ቅንብሮች  ሂድ::"</string>
     <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"የድምጽ መልዕክት ጥሪ ለማድረግ፣ በመጀመሪያ የአውሮፕላን ሁነታን አጥፋ።"</string>
     <string name="action_menu_overflow_description" msgid="2303272250613084574">"ተጨማሪ አማራጮች"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 5f85bdb..bd6c46b 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"إزالة من المفضلة"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"تعديل"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"حذف"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"نسخ"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"وضع على الشاشة الرئيسية"</string>
     <string name="menu_call" msgid="3992595586042260618">"الاتصال بجهة الاتصال"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"إرسال رسالة لجهة الاتصال"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"فصل"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"شركة"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"المسمى الوظيفي"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"جهة الاتصال غير موجودة."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"تمت إضافة أداة جهات الاتصال إلى الشاشة الرئيسية."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"إنشاء جهة اتصال جديدة"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"إنشاء جهة اتصال جديدة"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"الهاتف"</string>
@@ -380,12 +379,12 @@
     <string name="postal_postcode" msgid="572136414136673751">"الرمز البريدي"</string>
     <string name="postal_country" msgid="7638264508416368690">"البلد"</string>
     <string name="full_name" msgid="6602579550613988977">"الاسم"</string>
-    <string name="name_given" msgid="1687286314106019813">"الاسم الممنوح"</string>
+    <string name="name_given" msgid="1687286314106019813">"الاسم الأول"</string>
     <string name="name_family" msgid="3416695586119999058">"اسم العائلة"</string>
     <string name="name_prefix" msgid="59756378548779822">"بادئة الاسم"</string>
     <string name="name_middle" msgid="8467433655992690326">"الاسم الأوسط"</string>
     <string name="name_suffix" msgid="3855278445375651441">"لاحقة الاسم"</string>
-    <string name="name_phonetic_given" msgid="6853570431394449191">"الاسم الصوتي الممنوح"</string>
+    <string name="name_phonetic_given" msgid="6853570431394449191">"الاسم الأول - صوتي"</string>
     <string name="name_phonetic_middle" msgid="8643721493320405200">"الاسم الصوتي الأوسط"</string>
     <string name="name_phonetic_family" msgid="462095502140180305">"اسم الأسرة الصوتي"</string>
     <string name="name_phonetic" msgid="4259595234312430484">"الاسم"</string>
@@ -401,10 +400,10 @@
     <string name="no_contact_details" msgid="6636856378019344497">"ليس هناك أية معلومات إضافية لجهة الاتصال هذه."</string>
     <string name="group_read_only" msgid="1061762906115697637">"غير قابلة للتعديل على هذا الجهاز."</string>
     <string name="display_options_sort_list_by" msgid="6080091755852211076">"تصنيف القائمة بحسب"</string>
-    <string name="display_options_sort_by_given_name" msgid="184916793466387067">"الاسم الممنوح"</string>
+    <string name="display_options_sort_by_given_name" msgid="184916793466387067">"الاسم الأول"</string>
     <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"اسم العائلة"</string>
-    <string name="display_options_view_names_as" msgid="18022868169627979">"عرض أسماء جهات الاتصال كـ"</string>
-    <string name="display_options_view_given_name_first" msgid="6968288511197363292">"الاسم الممنوح أولاً"</string>
+    <string name="display_options_view_names_as" msgid="18022868169627979">"كيفية عرض الأسماء"</string>
+    <string name="display_options_view_given_name_first" msgid="6968288511197363292">"الاسم الأول أولاً"</string>
     <string name="display_options_view_family_name_first" msgid="1447288164951453714">"الاسم العائلة أولاً"</string>
     <string name="take_photo" msgid="7496128293167402354">"التقاط صورة"</string>
     <string name="take_new_photo" msgid="7341354729436576304">"التقاط صورة جديدة"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 39e02c7..afb0c0e 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Выдаліць з Выбранага"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Рэдагаваць"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Выдаліць"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Размясціць на галоўным экране"</string>
     <string name="menu_call" msgid="3992595586042260618">"Выклікаць кантакт"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Паведамленне кантакту"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Падзяліць"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Кампанія"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Назва"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Кантакт не існуе."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Звязацца з віджэтам, даданым на галоўны экран."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Стварыць новы кантакт"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Стварыць новы кантакт"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Тэлефон"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index c9319da..2f8ecdb 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Премахване от любими"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Редактиране"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Изтриване"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Поставяне на началния екран"</string>
     <string name="menu_call" msgid="3992595586042260618">"Обаждане на контакт"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Изпращaне на SMS на контакт"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Разделяне"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Фирма"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Заглавие"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Контактът не съществува."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Приспособлението за контакти е добавено към началния екран."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Създаване на нов контакт"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Създаване на нов контакт"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Телефон"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 35c530b..7f1983e 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -46,6 +46,7 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Elimina dels preferits"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edita"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Suprimeix"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"Copia"</string>
     <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Posa-ho a la pantalla d\'inici"</string>
     <string name="menu_call" msgid="3992595586042260618">"Truca al contacte"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Envia un SMS al contacte"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 2aa6a8c..3366aaf 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Odebrat z oblíbených položek"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Upravit"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Smazat"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Umístit na plochu"</string>
     <string name="menu_call" msgid="3992595586042260618">"Volat kontakt"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Odeslat zprávu kontaktu"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Oddělit"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Společnost"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Název"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt neexistuje."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget Kontakt byl přidán na plochu."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Vytvořit nový kontakt"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Vytvořit nový kontakt"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index c15ef2c..a901937 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Fjern fra favoritter"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Rediger"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Slet"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Kopiér"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Placer på startskærmen"</string>
     <string name="menu_call" msgid="3992595586042260618">"Ring til kontakt"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Send sms til kontakt"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Opdel"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Virksomhed"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Titel"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kontaktpersonen findes ikke."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktwidgetten føjes til startskærmen."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Opret ny kontakt"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Opret ny kontaktperson"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 67f0dc7..36adf42 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Aus Favoriten entfernen"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Bearbeiten"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Löschen"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Kopieren"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Auf Startbildschirm platzieren"</string>
     <string name="menu_call" msgid="3992595586042260618">"Kontakt anrufen"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"SMS an Kontakt"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Trennen"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Unternehmen"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Titel"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Dieser Kontakt existiert nicht."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontakt-Widget zum Startbildschirm hinzugefügt"</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Neuen Kontakt erstellen"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Neuen Kontakt erstellen"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 775bcf4..620de1c 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Κατάργηση από τα αγαπημένα"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Επεξεργασία"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Διαγραφή"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Αντιγραφή"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Τοποθέτηση στην αρχική οθόνη"</string>
     <string name="menu_call" msgid="3992595586042260618">"Κλήση επαφής"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Αποστολή μηνύματος κειμένου σε επαφή"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Διαχωρισμός"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Εταιρεία"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Τίτλος"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Η επαφή δεν υπάρχει."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Το γραφικό στοιχείο επαφών προστέθηκε στην αρχική οθόνη."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Δημιουργία νέας επαφής"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Δημιουργία νέας επαφής"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Τηλέφωνο"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 8a19b77..ae1e793 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -46,6 +46,7 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Remove from favourites"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edit"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Delete"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"Copy"</string>
     <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Place on Home screen"</string>
     <string name="menu_call" msgid="3992595586042260618">"Call contact"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Text contact"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 7dbbbb5..8bdecf7 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Eliminar de favoritos"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Eliminar"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Copiar"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Colocar en pantalla principal"</string>
     <string name="menu_call" msgid="3992595586042260618">"Llamar al contacto"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Enviar texto al contacto"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Separar"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Empresa"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Título"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"El contacto no existe."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"El widget de contactos se agregó a la pantalla principal."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Crear nuevo contacto"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Crear contacto nuevo"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Teléfono"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index b0a512b..695f5cb 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -46,6 +46,7 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Eliminar de \"Favoritos\""</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Eliminar"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"Copiar"</string>
     <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Añadir al escritorio"</string>
     <string name="menu_call" msgid="3992595586042260618">"Llamar al contacto"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Enviar SMS al contacto"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index f1440f5..bf0978e 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Eemalda lemmikutest"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Muuda"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Kustuta"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Kopeeri"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Paiguta avalehele"</string>
     <string name="menu_call" msgid="3992595586042260618">"Helista kontaktile"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Saada kontaktile SMS"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Eralda"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Ettevõte"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Pealkiri"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakti ei ole olemas."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktividin lisati avalehele."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Loo uus kontakt"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Loo uus kontakt"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 811dfd9..583c19d 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"حذف از موارد دلخواه"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"ویرایش"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"حذف"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"محل بر روی صفحه اصلی"</string>
     <string name="menu_call" msgid="3992595586042260618">"تماس با مخاطب"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"ارسال متن به مخاطب"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"تفکیک"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"شرکت"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"عنوان"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"مخاطبی موجود نیست."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"ابزارک مخاطب به صفحه اصلی شما اضافه شد."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"ایجاد مخاطب جدید"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"ایجاد مخاطب جدید"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"تلفن"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 0df0745..057be46 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Poista suosikeista"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Muokkaa"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Poista"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Paikka aloitusruudussa"</string>
     <string name="menu_call" msgid="3992595586042260618">"Soita"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Lähetä tekstiviesti yhteystiedolle"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Erota"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Yritys"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Nimi"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Yhteystietoa ei ole olemassa."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Yhteystiedot-widget lisätty aloitusruutuun."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Luo uusi yhteystieto"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Luo uusi yhteystieto"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Puhelin"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 830333e..6f3337f 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Supprimer des favoris"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Modifier"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Supprimer"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Copier"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Placer sur l\'écran d\'accueil"</string>
     <string name="menu_call" msgid="3992595586042260618">"Appeler le contact"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Envoyer un SMS au contact"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Séparer"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Entreprise"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Titre"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Ce contact n\'existe pas."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget de contact ajouté à l\'écran d\'accueil."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Créer un nouveau contact"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Créer un nouveau contact"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Téléphone"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 86cd606..e722f45 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"पसंदीदा से निकालें"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"संपादित करें"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"हटाएं"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"मुखपृष्ठ स्क्रीन पर रखें"</string>
     <string name="menu_call" msgid="3992595586042260618">"संपर्क को कॉल करें"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"इस संपर्क को SMS भेजें"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"अलग करें"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"कंपनी"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"शीर्षक"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"संपर्क मौजूद नहीं है."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"मुखपृष्ठ स्क्रीन पर संपर्क विजेट जोड़ा गया."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"नया संपर्क बनाएं"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"नया संपर्क बनाएं"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"फ़ोन"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index bdaa8b5..90a9ce6 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Ukloni iz favorita"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Uredi"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Izbriši"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Mjesto na početnom zaslonu"</string>
     <string name="menu_call" msgid="3992595586042260618">"Nazovi kontakt"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Poruka kontaktu"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Zasebno"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Tvrtka"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Naslov"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt ne postoji."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget za kontakte dodan je na vaš početni zaslon."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Izrada novog kontakta"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Stvori novi kontakt"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index bca1643..4da7367 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -46,8 +46,8 @@
     <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>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Törlés"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Másolás"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Helyezze el a kezdőképernyőn"</string>
     <string name="menu_call" msgid="3992595586042260618">"Ismerős hívása"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"SMS küldése ismerősnek"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Szétválasztás"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Cég"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Beosztás"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"A névjegy nem létezik."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"A Névjegy modul felkerült a kezdőképernyőre."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Új névjegy létrehozása"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Új névjegy létrehozása"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index ffb6600..56cef84 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Hapus dari favorit"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edit"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Hapus"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Letakkan di layar Utama"</string>
     <string name="menu_call" msgid="3992595586042260618">"Hubungi kenalan"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"SMS kenalan"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Pisahkan"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Perusahaan"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Judul"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Data kenalan tidak ada."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget kenalan ditambahkan ke layar Utama."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Buat kenalan baru"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Buat data kenalan baru"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telepon"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 097d5fa..61375de 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Rimuovi dai preferiti"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Modifica"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Elimina"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Copia"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Aggiungi a schermata Home"</string>
     <string name="menu_call" msgid="3992595586042260618">"Chiama"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Invia SMS"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Separa"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Società"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Titolo"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Contatto non esistente."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget del contatto aggiunto alla schermata Home."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Crea nuovo contatto"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Crea nuovo contatto"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefono"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 3f3861c..ada49ed 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"הסר מהמועדפים"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"ערוך"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"מחק"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"העתק"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"הצב במסך הבית"</string>
     <string name="menu_call" msgid="3992595586042260618">"התקשר לאיש קשר"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"שלח הודעת טקסט לאיש קשר"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"הפרד"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"חברה"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"שם"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"איש הקשר לא קיים."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"widget של אנשי קשר נוסף למסך הבית."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"צור איש קשר חדש"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"צור איש קשר חדש"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"טלפון"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index f988dd5..e06f7e8 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"お気に入りから削除"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"編集"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"削除"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"ホーム画面に配置"</string>
     <string name="menu_call" msgid="3992595586042260618">"連絡先に発信"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"連絡先にSMS"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"分割"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"会社"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"役職"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"連絡先が存在しません。"</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"ホーム画面に連絡先ウィジェットを追加しました。"</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"連絡先を新規登録"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"新しい連絡先を作成"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"電話番号"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 29966f5..785ae3a 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"즐겨찾기에서 삭제"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"수정"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"삭제"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"홈 화면에 만들기"</string>
     <string name="menu_call" msgid="3992595586042260618">"연락처로 전화 걸기"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"연락처에 문자 보내기"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"분리"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"회사"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"직함"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"연락처가 없습니다."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"주소록 위젯이 홈 화면에 추가됨"</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"새 연락처 만들기"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"새 연락처 만들기"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"전화"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index d128cd1..bfd4aeb 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Pašalinti iš adresyno"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Redaguoti"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Ištrinti"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Kopijuoti"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Padėti pagrindiniame ekrane"</string>
     <string name="menu_call" msgid="3992595586042260618">"Skambinti adresatui"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Siųsti pranešimą adresatui"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Atskiras"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Įmonė"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Pareigos"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kontaktas neegzistuoja."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktų valdiklis pridėtas prie pagrindinio ekrano."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Kurti naują adresatą"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Kurti naują kontaktą"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefonas"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index b2146e4..315a88b 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Noņemt no izlases"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Rediģēt"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Dzēst"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Kopēt"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Novietot sākuma ekrānā"</string>
     <string name="menu_call" msgid="3992595586042260618">"Zvanīt kontaktpersonai"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Sūtīt īsziņu kontaktpersonai"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Sadalīt"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Uzņēmums"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Nosaukums"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Šāda kontaktpersona nepastāv."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktpersonas logrīks pievienots sākuma ekrānam."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Izveidot jaunu kontaktpersonu"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Izveidot jaunu kontaktpersonu"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Tālrunis"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 41ff452..de613bd 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Alih keluar daripada kegemaran"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edit"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Padam"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Letakkan pada skrin Utama"</string>
     <string name="menu_call" msgid="3992595586042260618">"Panggil kenalan"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"SMS kepada kenalan"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Asingkan"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Syarikat"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Tajuk"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kenalan tidak wujud."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget kenalan telah ditambahkan ke skrin Utama."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Wujudkan kenalan baru"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Buat kenalan baharu"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index f4d68df..d22dc0b 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Fjern fra favoritter"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Rediger"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Slett"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Kopiér"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Plassér på startsiden"</string>
     <string name="menu_call" msgid="3992595586042260618">"Ring kontakt"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Send SMS til kontakt"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Del"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Firma"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Tittel"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakten finnes ikke."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktmodulen ble lagt til på startsiden."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Opprett ny kontakt"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Opprett ny kontakt"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 578db1f..16aa2d9 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Uit favorieten verwijderen"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Bewerken"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Verwijderen"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Kopiëren"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Op startscherm plaatsen"</string>
     <string name="menu_call" msgid="3992595586042260618">"Contact bellen"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Sms\'en naar contact"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Scheiden"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Bedrijf"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Titel"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Het contact bestaat niet."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget voor contacten toegevoegd aan het startscherm."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Nieuw contact maken"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Nieuw contact maken"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefoon"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index fc21c5e..a6ceedc 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Usuń z ulubionych"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Edytuj"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Usuń"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Umieść na ekranie głównym"</string>
     <string name="menu_call" msgid="3992595586042260618">"Zadzwoń do kontaktu"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Wyślij tekst do kontaktu"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Podziel"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Firma"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Stanowisko"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt nie istnieje."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widżet kontaktu dodany do ekranu głównego."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Utwórz nowy kontakt"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Utwórz nowy kontakt"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 1d9ae39..a6404ab 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Remover dos favoritos"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Eliminar"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Colocar no Ecrã principal"</string>
     <string name="menu_call" msgid="3992595586042260618">"Ligar para contacto"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Enviar SMS/MMS para contacto"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Separar"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Empresa"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Título"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"O contacto não existe."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget de contacto adicionado ao seu Ecrã principal."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Criar novo contacto"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Criar novo contacto"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefone"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 0ef5f99..8bc6f8c 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Remover dos favoritos"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Excluir"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Colocar na tela inicial"</string>
     <string name="menu_call" msgid="3992595586042260618">"Chamar contato"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Enviar SMS/MMS para o contato"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Separar"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Empresa"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Título"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"O contato não existe."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget Contato adicionado à tela inicial."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Criar novo contato"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Criar novo contato"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefone"</string>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index dce2282..66f9414 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -55,6 +55,8 @@
     <skip />
     <!-- no translation found for menu_deleteContact (6788644058868189393) -->
     <skip />
+    <!-- no translation found for menu_copy (6108677035381940698) -->
+    <skip />
     <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
     <skip />
     <string name="menu_call" msgid="3992595586042260618">"Telefonar al contact"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 943515b..5e3ba7b 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Eliminaţi din lista de favorite"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Editaţi"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Ştergeţi"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Plasaţi în ecranul de pornire"</string>
     <string name="menu_call" msgid="3992595586042260618">"Apelaţi persoana din agendă"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Trimiteţi mesaj text către o persoană din agendă"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Separaţi"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Companie"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Titlu"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Persoana nu există în agendă."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widgetul Agendă a fost adăugat la ecranul de pornire."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Creaţi o persoană nouă în agendă"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Creaţi o intrare nouă în Agendă"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 5f307d0..81c8de5 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Удалить из избранных"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Изменить"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Удалить"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Копировать"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Поместить на главный экран"</string>
     <string name="menu_call" msgid="3992595586042260618">"Позвонить"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Отправить SMS/MMS"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Разделить"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Название"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Должность"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Контакт удален."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Виджет \"Контакты\" добавлен на главный экран."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Создать новый контакт"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Добавить контакт"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Телефон"</string>
@@ -159,7 +158,7 @@
     <string name="private_num" msgid="6374339738119166953">"Скрытый номер"</string>
     <string name="payphone" msgid="4864313342828942922">"Телефон-автомат"</string>
     <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Наберите номер с клавиатуры"</string>
-    <string name="dialerDialpadHintText" msgid="5824490365898349041">"Наберите номер, чтобы добавить вызов"</string>
+    <string name="dialerDialpadHintText" msgid="5824490365898349041">"Наберите номер"</string>
     <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Загрузка с SIM-карты…"</string>
     <string name="simContacts_title" msgid="27341688347689769">"Контакты на SIM-карте"</string>
     <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Отсутствуют контакты для отображения. (Если аккаунт был только что добавлен, потребуется несколько минут для синхронизации контактов.)"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index fb507d9..d26a5fb 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Odstrániť z obľúbených"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Upraviť"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Odstrániť"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Umiestniť na plochu"</string>
     <string name="menu_call" msgid="3992595586042260618">"Zavolať kontaktu"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Odoslať správu kontaktu"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Oddeliť"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Spoločnosť"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Titul"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt neexistuje."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Miniaplikácia Kontakty bola pridaná na plochu."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Vytvoriť nový kontakt"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Vytvoriť nový kontakt"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefón"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index add09f0..7644981 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Odstrani iz priljubljenih"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Uredi"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Izbriši"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Postavi na začetni zaslon"</string>
     <string name="menu_call" msgid="3992595586042260618">"Pokliči stik"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Pošlji SMS stiku"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Razdruži"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Podjetje"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Naslov"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Stik ne obstaja."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Pripomoček za stik dodan na začetni zaslon."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Ustvari nov stik"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Ustvari nov stik"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index a942eb3..b915a4f 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Уклони из омиљених контаката"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Измени"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Избриши"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Постави на Почетни екран"</string>
     <string name="menu_call" msgid="3992595586042260618">"Позови контакт"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Пошаљи SMS контакту"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Подели"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Предузеће"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Наслов"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Контакт не постоји."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Виџет за контакте је додат на Почетни екран."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Направите нови контакт"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Направи нови контакт"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Телефон"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index db9aa72..c0d5f8f 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Ta bort från Favoriter"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Redigera"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Ta bort"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Kopiera"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Placera på startsidan"</string>
     <string name="menu_call" msgid="3992595586042260618">"Ring upp kontakt"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Skicka SMS till kontakt"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Dela upp"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Företag"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Titel"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakten finns inte."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget för kontakt har lagts till på startsidan."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Skapa ny kontakt"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Skapa ny kontakt"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 037b9fc..db88e7c 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Ondoa kutoka kwa vipendwa vyako"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Hariri"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Futa"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Weka kwenye skrini ya Nyumbani"</string>
     <string name="menu_call" msgid="3992595586042260618">"Mpigie"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Tuma ujumbe kwa anwani"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Kando"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Kampuni"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Jina la heshima"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Mwasiliani hayupo."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Wijeti ya mawasiliano imeongezwa kwenye skrini ya Nyumbani."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Unda akaunti mpya"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Anzisha mwasiliani mpya"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Simu"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 715c9af..d3c5bb6 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"ลบจากรายการโปรด"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"แก้ไข"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"ลบ"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"วางบนหน้าจอหลัก"</string>
     <string name="menu_call" msgid="3992595586042260618">"โทรหารายชื่อในสมุดโทรศัพท์"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"ส่งข้อความถึงรายชื่อในสมุดโทรศัพท์"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"แยก"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"บริษัท"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"ชื่อ"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"ไม่มีรายชื่อติดต่อนี้"</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"เพิ่มวิดเจ็ตสมุดโทรศัพท์ในหน้าจอหลักแล้ว"</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"สร้างรายชื่อในสมุดโทรศัพท์ใหม่"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"สร้างรายชื่อติดต่อใหม่"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"โทรศัพท์"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 83b8a29..5d9c938 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Alisin mula sa mga paborito"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"I-edit"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Tanggalin"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Ilagay sa Home screen"</string>
     <string name="menu_call" msgid="3992595586042260618">"Tawagan ang contact"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Mag-text sa contact"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Hiwalay"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Kumpanya"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Pamagat"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Hindi umiiral ang contact."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Idinagdag sa Home screen ang widget ng contact."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Lumikha ng bagong contact"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Lumikha ng bagong contact"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telepono"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 374502b..2dade84 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Sık kullanılanlardan kaldır"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Düzenle"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Sil"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Ana ekrana yerleştir"</string>
     <string name="menu_call" msgid="3992595586042260618">"Çağrı yap"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Kısa mesaj gönder"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Ayır"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Şirket"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Başlık"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Kişi mevcut değil."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kişi widget\'ı Ana ekranınıza eklendi."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Yeni kişi oluştur"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Yeni kişi oluştur"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 82480df..469f899 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -46,8 +46,8 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Видалити з вибраного"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Редагувати"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Видалити"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
-    <skip />
+    <string name="menu_copy" msgid="6108677035381940698">"Копіювати"</string>
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Місце на головному екрані"</string>
     <string name="menu_call" msgid="3992595586042260618">"Набрати конт."</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Повід. контакт"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Розділити"</string>
@@ -78,8 +78,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Компанія"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Назва"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Контакт не існує."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Віджет контакта додано на головний екран."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Створ. новий контакт"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Створити новий контакт"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Телеф."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index af721df..874744f 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -46,8 +46,9 @@
     <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>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Xóa"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Đặt trên màn hình chính"</string>
     <string name="menu_call" msgid="3992595586042260618">"Gọi liên hệ"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Nhắn tin tới liên hệ"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"Tách"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"Công ty"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"Tiêu đề"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"Địa chỉ liên hệ không tồn tại."</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Đã thêm tiện ích liên hệ vào Màn hình chính."</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"Tạo liên hệ mới"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"Tạo địa chỉ liên hệ mới"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"Điện thoại"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 348dded..3f0ed47 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"从收藏中删除"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"修改"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"删除"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"放在主屏幕上"</string>
     <string name="menu_call" msgid="3992595586042260618">"呼叫联系人"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"向联系人发送短信"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"拆分"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"公司"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"职位"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"该联系人不存在。"</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"“联系人”窗口小部件已添加到主屏幕。"</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"新建联系人"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"创建新联系人"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"电话"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 3318f00..b9cacf1 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -46,8 +46,9 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"從我的最愛中移除"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"編輯"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"刪除"</string>
-    <!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
+    <!-- no translation found for menu_copy (6108677035381940698) -->
     <skip />
+    <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"新增到主螢幕上"</string>
     <string name="menu_call" msgid="3992595586042260618">"去電聯絡人"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"傳送簡訊至聯絡人"</string>
     <string name="menu_splitAggregate" msgid="8368636463748691868">"分割"</string>
@@ -78,8 +79,7 @@
     <string name="ghostData_company" msgid="5414421120553765775">"公司"</string>
     <string name="ghostData_title" msgid="7496735200318496110">"職稱"</string>
     <string name="invalidContactMessage" msgid="8215051456181842274">"聯絡人不存在。"</string>
-    <!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
-    <skip />
+    <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"聯絡人小工具已新增到主螢幕上。"</string>
     <string name="pickerNewContactHeader" msgid="7750705279843568147">"建立新聯絡人"</string>
     <string name="pickerNewContactText" msgid="6166997164401048211">"建立新聯絡人"</string>
     <string name="phoneLabelsGroup" msgid="6468091477851199285">"電話"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 3cabf85..0ceb87a 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -46,6 +46,7 @@
     <string name="menu_removeStar" msgid="5844227078364227030">"Susa ezintandokazini"</string>
     <string name="menu_editContact" msgid="9042415603857662633">"Hlela"</string>
     <string name="menu_deleteContact" msgid="6788644058868189393">"Susa"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"Kopisha"</string>
     <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Indawo esikrinini sekhaya"</string>
     <string name="menu_call" msgid="3992595586042260618">"Shayela othintana naye"</string>
     <string name="menu_sendSMS" msgid="5535886767547006515">"Bhalela othintana naye"</string>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 48e63e5..cb2b1ca 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -75,4 +75,8 @@
 
     <!-- Color of image view placeholder. -->
     <color name="image_placeholder">#DDDDDD</color>
+
+    <!-- Standard color for selected items. -->
+    <color name="item_selected">#660099cc</color>
+
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 25e59e4..c5d0703 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -115,6 +115,9 @@
     <!-- Menu item used to delete a specific contact -->
     <string name="menu_deleteContact">Delete</string>
 
+    <!-- Menu item to copy something [CHAR_LIMIT=10] -->
+    <string name="menu_copy">Copy</string>
+
     <!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
     <string name="menu_create_contact_shortcut">Place on Home screen</string>
 
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
index 12a1592..1fac6c8 100644
--- a/src/com/android/contacts/CallDetailActivity.java
+++ b/src/com/android/contacts/CallDetailActivity.java
@@ -25,6 +25,7 @@
 import com.android.contacts.format.FormatUtils;
 import com.android.contacts.util.AsyncTaskExecutor;
 import com.android.contacts.util.AsyncTaskExecutors;
+import com.android.contacts.util.ClipboardUtils;
 import com.android.contacts.util.Constants;
 import com.android.contacts.voicemail.VoicemailPlaybackFragment;
 import com.android.contacts.voicemail.VoicemailStatusHelper;
@@ -40,6 +41,7 @@
 import android.content.Intent;
 import android.content.res.Resources;
 import android.database.Cursor;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
@@ -53,6 +55,7 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
+import android.view.ActionMode;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -132,6 +135,15 @@
     private ProximitySensorManager mProximitySensorManager;
     private final ProximitySensorListener mProximitySensorListener = new ProximitySensorListener();
 
+    /**
+     * The action mode used when the phone number is selected.  This will be non-null only when the
+     * phone number is selected.
+     */
+    private ActionMode mPhoneNumberActionMode;
+
+    private CharSequence mPhoneNumberLabelToCopy;
+    private CharSequence mPhoneNumberToCopy;
+
     /** Listener to changes in the proximity sensor state. */
     private class ProximitySensorListener implements ProximitySensorManager.Listener {
         /** Used to show a blank view and hide the action bar. */
@@ -202,6 +214,9 @@
     private final View.OnClickListener mPrimaryActionListener = new View.OnClickListener() {
         @Override
         public void onClick(View view) {
+            if (finishPhoneNumerSelectedActionModeIfShown()) {
+                return;
+            }
             startActivity(((ViewEntry) view.getTag()).primaryIntent);
         }
     };
@@ -209,10 +224,25 @@
     private final View.OnClickListener mSecondaryActionListener = new View.OnClickListener() {
         @Override
         public void onClick(View view) {
+            if (finishPhoneNumerSelectedActionModeIfShown()) {
+                return;
+            }
             startActivity(((ViewEntry) view.getTag()).secondaryIntent);
         }
     };
 
+    private final View.OnLongClickListener mPrimaryLongClickListener =
+            new View.OnLongClickListener() {
+        @Override
+        public boolean onLongClick(View v) {
+            if (finishPhoneNumerSelectedActionModeIfShown()) {
+                return true;
+            }
+            startPhoneNumberSelectedActionMode(v);
+            return true;
+        }
+    };
+
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
@@ -497,8 +527,12 @@
                     }
 
                     configureCallButton(entry);
+                    mPhoneNumberToCopy = displayNumber;
+                    mPhoneNumberLabelToCopy = entry.label;
                 } else {
                     disableCallButton();
+                    mPhoneNumberToCopy = null;
+                    mPhoneNumberLabelToCopy = null;
                 }
 
                 mHasEditNumberBeforeCallOption =
@@ -656,6 +690,7 @@
         mainAction.setOnClickListener(mPrimaryActionListener);
         mainAction.setTag(entry);
         mainAction.setContentDescription(entry.primaryDescription);
+        mainAction.setOnLongClickListener(mPrimaryLongClickListener);
 
         if (entry.secondaryIntent != null) {
             icon.setOnClickListener(mSecondaryActionListener);
@@ -829,4 +864,64 @@
     public void disableProximitySensor(boolean waitForFarState) {
         mProximitySensorManager.disable(waitForFarState);
     }
+
+    /**
+     * If the phone number is selected, unselect it and return {@code true}.
+     * Otherwise, just {@code false}.
+     */
+    private boolean finishPhoneNumerSelectedActionModeIfShown() {
+        if (mPhoneNumberActionMode == null) return false;
+        mPhoneNumberActionMode.finish();
+        return true;
+    }
+
+    private void startPhoneNumberSelectedActionMode(View targetView) {
+        mPhoneNumberActionMode = startActionMode(new PhoneNumberActionModeCallback(targetView));
+    }
+
+    private class PhoneNumberActionModeCallback implements ActionMode.Callback {
+        private final View mTargetView;
+        private final Drawable mOriginalViewBackground;
+
+        public PhoneNumberActionModeCallback(View targetView) {
+            mTargetView = targetView;
+
+            // Highlight the phone number view.  Remember the old background, and put a new one.
+            mOriginalViewBackground = mTargetView.getBackground();
+            mTargetView.setBackgroundColor(getResources().getColor(R.color.item_selected));
+        }
+
+        @Override
+        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+            if (TextUtils.isEmpty(mPhoneNumberToCopy)) return false;
+
+            getMenuInflater().inflate(R.menu.call_details_cab, menu);
+            return true;
+        }
+
+        @Override
+        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+            return true;
+        }
+
+        @Override
+        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+            switch (item.getItemId()) {
+                case R.id.copy_phone_number:
+                    ClipboardUtils.copyText(CallDetailActivity.this, mPhoneNumberLabelToCopy,
+                            mPhoneNumberToCopy, true);
+                    mode.finish(); // Close the CAB
+                    return true;
+            }
+            return false;
+        }
+
+        @Override
+        public void onDestroyActionMode(ActionMode mode) {
+            mPhoneNumberActionMode = null;
+
+            // Restore the view background.
+            mTargetView.setBackground(mOriginalViewBackground);
+        }
+    }
 }
diff --git a/src/com/android/contacts/ContactsUtils.java b/src/com/android/contacts/ContactsUtils.java
index ea567fb..9a014f4 100644
--- a/src/com/android/contacts/ContactsUtils.java
+++ b/src/com/android/contacts/ContactsUtils.java
@@ -22,7 +22,6 @@
 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;
 import android.content.Intent;
@@ -129,36 +128,41 @@
         // mimetypes could have more sophisticated matching is the future, e.g. addresses)
         if (!TextUtils.equals(Phone.CONTENT_ITEM_TYPE, mimetype1)) return false;
 
-        // Now do the full phone number thing. split into parts, seperated by waiting symbol
-        // and compare them individually
-        final String[] dataParts1 = data1.toString().split(WAIT_SYMBOL_AS_STRING);
-        final String[] dataParts2 = data2.toString().split(WAIT_SYMBOL_AS_STRING);
-        if (dataParts1.length != dataParts2.length) return false;
-        final PhoneNumberUtil util = PhoneNumberUtil.getInstance();
-        for (int i = 0; i < dataParts1.length; i++) {
-            final String dataPart1 = dataParts1[i];
-            final String dataPart2 = dataParts2[i];
+        return shouldCollapsePhoneNumbers(data1.toString(), data2.toString());
+    }
 
-            // substrings equal? shortcut, don't parse
-            if (TextUtils.equals(dataPart1, dataPart2)) continue;
+    private static final boolean shouldCollapsePhoneNumbers(
+            String number1WithLetters, String number2WithLetters) {
+        final String number1 = PhoneNumberUtils.convertKeypadLettersToDigits(number1WithLetters);
+        final String number2 = PhoneNumberUtils.convertKeypadLettersToDigits(number2WithLetters);
 
-            // do a full parse of the numbers
-            switch (util.isNumberMatch(dataPart1, dataPart2)) {
-                case NOT_A_NUMBER:
-                    // don't understand the numbers? let's play it safe
-                    return false;
-                case NO_MATCH:
-                    return false;
-                case EXACT_MATCH:
-                case SHORT_NSN_MATCH:
-                case NSN_MATCH:
-                    break;
-                default:
-                    throw new IllegalStateException("Unknown result value from phone number " +
-                            "library");
+        int index1 = 0;
+        int index2 = 0;
+        for (;;) {
+            // Skip formatting characters.
+            while (index1 < number1.length() &&
+                    !PhoneNumberUtils.isNonSeparator(number1.charAt(index1))) {
+                index1++;
             }
+            while (index2 < number2.length() &&
+                    !PhoneNumberUtils.isNonSeparator(number2.charAt(index2))) {
+                index2++;
+            }
+            // If both have finished, match.  If only one has finished, not match.
+            final boolean number1End = (index1 == number1.length());
+            final boolean number2End = (index2 == number2.length());
+            if (number1End) {
+                return number2End;
+            }
+            if (number2End) return false;
+
+            // If the non-formatting characters are different, not match.
+            if (number1.charAt(index1) != number2.charAt(index2)) return false;
+
+            // Go to the next characters.
+            index1++;
+            index2++;
         }
-        return true;
     }
 
     /**
diff --git a/src/com/android/contacts/ViewNotificationService.java b/src/com/android/contacts/ViewNotificationService.java
new file mode 100644
index 0000000..a0890f2
--- /dev/null
+++ b/src/com/android/contacts/ViewNotificationService.java
@@ -0,0 +1,73 @@
+/*
+ * 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;
+
+import com.android.contacts.ContactLoader.Result;
+
+import android.app.Service;
+import android.content.Intent;
+import android.content.Loader;
+import android.content.Loader.OnLoadCompleteListener;
+import android.os.IBinder;
+import android.util.Log;
+
+/**
+ * Service that sends out a view notification for a contact. At the moment, this is only
+ * supposed to be used by the Phone app
+ */
+public class ViewNotificationService extends Service {
+    private static final String TAG = ViewNotificationService.class.getSimpleName();
+
+    private static final boolean DEBUG = false;
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, final int startId) {
+        if (DEBUG) { Log.d(TAG, "onHandleIntent(). Intent: " + intent); }
+
+        // We simply need to start a Loader here. When its done, it will send out the
+        // View-Notification automatically.
+        final ContactLoader contactLoader = new ContactLoader(this, intent.getData());
+        contactLoader.registerListener(0, new OnLoadCompleteListener<ContactLoader.Result>() {
+            @Override
+            public void onLoadComplete(Loader<Result> loader, Result data) {
+                try {
+                    loader.reset();
+                } catch (RuntimeException e) {
+                    Log.e(TAG, "Error reseting loader", e);
+                }
+                try {
+                    // This is not 100% accurate actually. If we get several calls quickly,
+                    // we might be stopping out-of-order, in which case the call with the last
+                    // startId will stop this service. In practice, this shouldn't be a problem,
+                    // as this service is supposed to be called by the Phone app which only sends
+                    // out the notification once per phonecall. And even if there is a problem,
+                    // the worst that should happen is a missing view notification
+                    stopSelfResult(startId);
+                } catch (RuntimeException e) {
+                    Log.e(TAG, "Error stopping service", e);
+                }
+            }
+        });
+        contactLoader.startLoading();
+        return START_REDELIVER_INTENT;
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+}
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index ae8fe09..6f13924 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -569,7 +569,7 @@
             Log.d(TAG, "onStart(). current position: " + mPageChangeListener.getCurrentPosition()
                     + ". Reset all menu visibility state.");
         }
-        updateFakeMenuButtonsVisibility(currentPosition == TAB_INDEX_DIALER);
+        updateFakeMenuButtonsVisibility(currentPosition == TAB_INDEX_DIALER && !mInSearchUi);
         for (int i = 0; i < TAB_INDEX_COUNT; i++) {
             sendFragmentVisibilityChange(i, i == currentPosition);
         }
diff --git a/src/com/android/contacts/calllog/CallLogFragment.java b/src/com/android/contacts/calllog/CallLogFragment.java
index c3d5d0b..fcd1780 100644
--- a/src/com/android/contacts/calllog/CallLogFragment.java
+++ b/src/com/android/contacts/calllog/CallLogFragment.java
@@ -33,12 +33,15 @@
 import android.app.ListFragment;
 import android.content.Context;
 import android.content.Intent;
+import android.database.ContentObserver;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.provider.CallLog;
+import android.provider.ContactsContract;
 import android.provider.CallLog.Calls;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
@@ -87,6 +90,21 @@
 
     private final Handler mHandler = new Handler();
 
+    private class CustomContentObserver extends ContentObserver {
+        public CustomContentObserver() {
+            super(mHandler);
+        }
+        @Override
+        public void onChange(boolean selfChange) {
+            mRefreshDataRequired = true;
+        }
+    }
+
+    // See issue 6363009
+    private final ContentObserver mCallLogObserver = new CustomContentObserver();
+    private final ContentObserver mContactsObserver = new CustomContentObserver();
+    private boolean mRefreshDataRequired = true;
+
     // Exactly same variable is in Fragment as a package private.
     private boolean mMenuVisible = true;
 
@@ -97,6 +115,10 @@
         mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(), this);
         mKeyguardManager =
                 (KeyguardManager) getActivity().getSystemService(Context.KEYGUARD_SERVICE);
+        getActivity().getContentResolver().registerContentObserver(
+                CallLog.CONTENT_URI, true, mCallLogObserver);
+        getActivity().getContentResolver().registerContentObserver(
+                ContactsContract.Contacts.CONTENT_URI, true, mContactsObserver);
         setHasOptionsMenu(true);
     }
 
@@ -270,6 +292,8 @@
         super.onDestroy();
         mAdapter.stopRequestProcessing();
         mAdapter.changeCursor(null);
+        getActivity().getContentResolver().unregisterContentObserver(mCallLogObserver);
+        getActivity().getContentResolver().unregisterContentObserver(mContactsObserver);
     }
 
     @Override
@@ -399,12 +423,16 @@
 
     /** Requests updates to the data to be shown. */
     private void refreshData() {
-        // Mark all entries in the contact info cache as out of date, so they will be looked up
-        // again once being shown.
-        mAdapter.invalidateCache();
-        startCallsQuery();
-        startVoicemailStatusQuery();
-        updateOnEntry();
+        // Prevent unnecessary refresh.
+        if (mRefreshDataRequired) {
+            // Mark all entries in the contact info cache as out of date, so they will be looked up
+            // again once being shown.
+            mAdapter.invalidateCache();
+            startCallsQuery();
+            startVoicemailStatusQuery();
+            updateOnEntry();
+            mRefreshDataRequired = false;
+        }
     }
 
     /** Removes the missed call notifications. */
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index ca6fa63..2dc7bc4 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -38,6 +38,7 @@
 import com.android.contacts.model.EntityDeltaList;
 import com.android.contacts.model.EntityModifier;
 import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
+import com.android.contacts.util.ClipboardUtils;
 import com.android.contacts.util.Constants;
 import com.android.contacts.util.DataStatus;
 import com.android.contacts.util.DateUtils;
@@ -601,7 +602,7 @@
                 } else if (Phone.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
                     // Build phone entries
                     String phoneNumberE164 =
-                            entryValues.getAsString(PhoneLookup.NORMALIZED_NUMBER);
+                            entryValues.getAsString(Phone.NORMALIZED_NUMBER);
                     entry.data = PhoneNumberUtils.formatNumber(
                             entry.data, phoneNumberE164, mDefaultCountryIso);
                     final Intent phoneIntent = mHasPhone ?
@@ -1904,17 +1905,7 @@
         // Checking for empty string
         if (TextUtils.isEmpty(textToCopy)) return;
 
-        // Adding item to clipboard
-        ClipboardManager clipboardManager = (ClipboardManager) getActivity().getSystemService(
-                Context.CLIPBOARD_SERVICE);
-        String[] mimeTypes = new String[]{detailViewEntry.mimetype};
-        ClipData.Item clipDataItem = new ClipData.Item(textToCopy);
-        ClipData cd = new ClipData(detailViewEntry.typeString, mimeTypes, clipDataItem);
-        clipboardManager.setPrimaryClip(cd);
-
-        // Display Confirmation Toast
-        String toastText = getString(R.string.toast_text_copied);
-        Toast.makeText(getActivity(), toastText, Toast.LENGTH_SHORT).show();
+        ClipboardUtils.copyText(getActivity(), detailViewEntry.typeString, textToCopy, true);
     }
 
     @Override
diff --git a/src/com/android/contacts/detail/ContactDetailTabCarousel.java b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
index 9e3a352..657a774 100644
--- a/src/com/android/contacts/detail/ContactDetailTabCarousel.java
+++ b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
@@ -19,6 +19,7 @@
 import com.android.contacts.R;
 import com.android.contacts.ContactLoader;
 import com.android.contacts.detail.ContactDetailPhotoSetter;
+import com.android.contacts.util.MoreMath;
 import com.android.contacts.util.PhoneCapabilityTester;
 
 import android.content.Context;
@@ -80,8 +81,7 @@
     private int mTabDisplayLabelHeight;
 
     private boolean mScrollToCurrentTab = false;
-    private int mLastScrollPosition;
-
+    private int mLastScrollPosition = Integer.MIN_VALUE;
     private int mAllowedHorizontalScrollLength = Integer.MIN_VALUE;
     private int mAllowedVerticalScrollLength = Integer.MIN_VALUE;
 
@@ -330,24 +330,31 @@
 
     private void updateAlphaLayers() {
         float alpha = mLastScrollPosition * MAX_ALPHA / mAllowedHorizontalScrollLength;
+        alpha = MoreMath.clamp(alpha, 0.0f, 1.0f);
         mAboutTab.setAlphaLayerValue(alpha);
         mUpdatesTab.setAlphaLayerValue(MAX_ALPHA - alpha);
     }
 
     @Override
-    protected void onScrollChanged(int l, int t, int oldL, int oldT) {
-        super.onScrollChanged(l, t, oldL, oldT);
+    protected void onScrollChanged(int x, int y, int oldX, int oldY) {
+        super.onScrollChanged(x, y, oldX, oldY);
+
+        // Guard against framework issue where onScrollChanged() is called twice
+        // for each touch-move event.  This wreaked havoc on the tab-carousel: the
+        // view-pager moved twice as fast as it should because we called fakeDragBy()
+        // twice with the same value.
+        if (mLastScrollPosition == x) return;
 
         // Since we never completely scroll the about/updates tabs off-screen,
         // the draggable range is less than the width of the carousel. Our
         // listeners don't care about this... if we scroll 75% percent of our
         // draggable range, they want to scroll 75% of the entire carousel
         // width, not the same number of pixels that we scrolled.
-        int scaledL = (int) (l * mScrollScaleFactor);
-        int oldScaledL = (int) (oldL * mScrollScaleFactor);
-        mListener.onScrollChanged(scaledL, t, oldScaledL, oldT);
+        int scaledL = (int) (x * mScrollScaleFactor);
+        int oldScaledL = (int) (oldX * mScrollScaleFactor);
+        mListener.onScrollChanged(scaledL, y, oldScaledL, oldY);
 
-        mLastScrollPosition = l;
+        mLastScrollPosition = x;
         updateAlphaLayers();
     }
 
diff --git a/src/com/android/contacts/dialpad/DialpadFragment.java b/src/com/android/contacts/dialpad/DialpadFragment.java
index 9a3f3e7..89585e8 100644
--- a/src/com/android/contacts/dialpad/DialpadFragment.java
+++ b/src/com/android/contacts/dialpad/DialpadFragment.java
@@ -280,6 +280,7 @@
         mDialButton = fragmentView.findViewById(R.id.dialButton);
         if (r.getBoolean(R.bool.config_show_onscreen_dial_button)) {
             mDialButton.setOnClickListener(this);
+            mDialButton.setOnLongClickListener(this);
         } else {
             mDialButton.setVisibility(View.GONE); // It's VISIBLE by default
             mDialButton = null;
@@ -801,8 +802,11 @@
             view.jumpDrawablesToCurrentState();
             mDialpadPressCount--;
             if (mDialpadPressCount < 0) {
-                // May happen when the user action is detected as horizontal swipe, at which only
-                // "up" event is thrown.
+                // e.g.
+                // - when the user action is detected as horizontal swipe, at which only
+                //   "up" event is thrown.
+                // - when the user long-press '0' button, at which dialpad will decrease this count
+                //   while it still gets press-up event here.
                 if (DEBUG) Log.d(TAG, "mKeyPressCount become negative.");
                 stopTone();
                 mDialpadPressCount = 0;
@@ -897,6 +901,14 @@
                 // Remove tentative input ('0') done by onTouch().
                 removePreviousDigitIfPossible();
                 keyPressed(KeyEvent.KEYCODE_PLUS);
+
+                // Stop tone immediately and decrease the press count, so that possible subsequent
+                // dial button presses won't honor the 0 click any more.
+                // Note: this *will* make mDialpadPressCount negative when the 0 key is released,
+                // which should be handled appropriately.
+                stopTone();
+                if (mDialpadPressCount > 0) mDialpadPressCount--;
+
                 return true;
             }
             case R.id.digits: {
@@ -906,6 +918,16 @@
                 mDigits.setCursorVisible(true);
                 return false;
             }
+            case R.id.dialButton: {
+                if (isDigitsEmpty()) {
+                    handleDialButtonClickWithEmptyDigits();
+                    // This event should be consumed so that onClick() won't do the exactly same
+                    // thing.
+                    return true;
+                } else {
+                    return false;
+                }
+            }
         }
         return false;
     }
@@ -997,35 +1019,7 @@
      */
     public void dialButtonPressed() {
         if (isDigitsEmpty()) { // No number entered.
-            if (phoneIsCdma() && phoneIsOffhook()) {
-                // This is really CDMA specific. On GSM is it possible
-                // to be off hook and wanted to add a 3rd party using
-                // the redial feature.
-                startActivity(newFlashIntent());
-            } else {
-                if (!TextUtils.isEmpty(mLastNumberDialed)) {
-                    // Recall the last number dialed.
-                    mDigits.setText(mLastNumberDialed);
-
-                    // ...and move the cursor to the end of the digits string,
-                    // so you'll be able to delete digits using the Delete
-                    // button (just as if you had typed the number manually.)
-                    //
-                    // Note we use mDigits.getText().length() here, not
-                    // mLastNumberDialed.length(), since the EditText widget now
-                    // contains a *formatted* version of mLastNumberDialed (due to
-                    // mTextWatcher) and its length may have changed.
-                    mDigits.setSelection(mDigits.getText().length());
-                } else {
-                    // There's no "last number dialed" or the
-                    // background query is still running. There's
-                    // nothing useful for the Dial button to do in
-                    // this case.  Note: with a soft dial button, this
-                    // can never happens since the dial button is
-                    // disabled under these conditons.
-                    playTone(ToneGenerator.TONE_PROP_NACK);
-                }
-            }
+            handleDialButtonClickWithEmptyDigits();
         } else {
             final String number = mDigits.getText().toString();
 
@@ -1056,6 +1050,38 @@
         }
     }
 
+    private void handleDialButtonClickWithEmptyDigits() {
+        if (phoneIsCdma() && phoneIsOffhook()) {
+            // This is really CDMA specific. On GSM is it possible
+            // to be off hook and wanted to add a 3rd party using
+            // the redial feature.
+            startActivity(newFlashIntent());
+        } else {
+            if (!TextUtils.isEmpty(mLastNumberDialed)) {
+                // Recall the last number dialed.
+                mDigits.setText(mLastNumberDialed);
+
+                // ...and move the cursor to the end of the digits string,
+                // so you'll be able to delete digits using the Delete
+                // button (just as if you had typed the number manually.)
+                //
+                // Note we use mDigits.getText().length() here, not
+                // mLastNumberDialed.length(), since the EditText widget now
+                // contains a *formatted* version of mLastNumberDialed (due to
+                // mTextWatcher) and its length may have changed.
+                mDigits.setSelection(mDigits.getText().length());
+            } else {
+                // There's no "last number dialed" or the
+                // background query is still running. There's
+                // nothing useful for the Dial button to do in
+                // this case.  Note: with a soft dial button, this
+                // can never happens since the dial button is
+                // disabled under these conditons.
+                playTone(ToneGenerator.TONE_PROP_NACK);
+            }
+        }
+    }
+
     /**
      * Plays the specified tone for TONE_LENGTH_MS milliseconds.
      */
diff --git a/src/com/android/contacts/socialwidget/SocialWidgetProvider.java b/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
index 593c4b2..afc88af 100644
--- a/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
+++ b/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
@@ -76,7 +76,7 @@
             ContactLoader loader = sLoaders.get(appWidgetId);
             if (loader != null) {
                 Log.d(TAG, "Stopping loader for widget with id=" + appWidgetId);
-                loader.stopLoading();
+                loader.reset();
                 sLoaders.delete(appWidgetId);
             }
         }
diff --git a/src/com/android/contacts/util/ClipboardUtils.java b/src/com/android/contacts/util/ClipboardUtils.java
new file mode 100644
index 0000000..a160668
--- /dev/null
+++ b/src/com/android/contacts/util/ClipboardUtils.java
@@ -0,0 +1,54 @@
+/*
+ * 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.util;
+
+import com.android.contacts.R;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+public class ClipboardUtils {
+    private static final String TAG = "ClipboardUtils";
+
+    private ClipboardUtils() { }
+
+    /**
+     * Copy a text to clipboard.
+     *
+     * @param context Context
+     * @param label Label to show to the user describing this clip.
+     * @param text Text to copy.
+     * @param showToast If {@code true}, a toast is shown to the user.
+     */
+    public static void copyText(Context context, CharSequence label, CharSequence text,
+            boolean showToast) {
+        if (TextUtils.isEmpty(text)) return;
+
+        ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(
+                Context.CLIPBOARD_SERVICE);
+        ClipData clipData = ClipData.newPlainText(label == null ? "" : label, text);
+        clipboardManager.setPrimaryClip(clipData);
+
+        if (showToast) {
+            String toastText = context.getString(R.string.toast_text_copied);
+            Toast.makeText(context, toastText, Toast.LENGTH_SHORT).show();
+        }
+    }
+}
diff --git a/src/com/android/contacts/util/StreamItemEntry.java b/src/com/android/contacts/util/StreamItemEntry.java
index 6c8210f..f9c8700 100644
--- a/src/com/android/contacts/util/StreamItemEntry.java
+++ b/src/com/android/contacts/util/StreamItemEntry.java
@@ -39,13 +39,15 @@
     private final long mId;
     private final String mText;
     private final String mComments;
-    private CharSequence mDecodedText;
-    private CharSequence mDecodedComments;
     private final long mTimestamp;
     private final String mAccountType;
     private final String mAccountName;
     private final String mDataSet;
 
+    private boolean mDecoded;
+    private CharSequence mDecodedText;
+    private CharSequence mDecodedComments;
+
     // Package references for label and icon resources.
     private final String mResPackage;
     private final String mIconRes;
@@ -55,7 +57,14 @@
     private List<StreamItemPhotoEntry> mPhotos;
 
     @NeededForTesting
-    public StreamItemEntry(long id, String text, String comments, long timestamp,
+    public static StreamItemEntry createForTest(long id, String text, String comments,
+            long timestamp, String accountType, String accountName, String dataSet,
+            String resPackage, String iconRes, String labelRes) {
+        return new StreamItemEntry(id, text, comments, timestamp, accountType, accountName, dataSet,
+                resPackage, iconRes, labelRes);
+    }
+
+    private StreamItemEntry(long id, String text, String comments, long timestamp,
             String accountType, String accountName, String dataSet, String resPackage,
             String iconRes, String labelRes) {
         mId = id;
@@ -141,6 +150,12 @@
         return mPhotos;
     }
 
+    /**
+     * Make {@link #getDecodedText} and {@link #getDecodedComments} available.  Must be called
+     * before calling those.
+     *
+     * We can't do this automatically in the getters, because it'll require a {@link Context}.
+     */
     public void decodeHtml(Context context) {
         final Html.ImageGetter imageGetter = ContactDetailDisplayUtils.getImageGetter(context);
         if (mText != null) {
@@ -149,16 +164,25 @@
         if (mComments != null) {
             mDecodedComments = HtmlUtils.fromHtml(context, mComments, imageGetter, null);
         }
+        mDecoded = true;
     }
 
     public CharSequence getDecodedText() {
+        checkDecoded();
         return mDecodedText;
     }
 
     public CharSequence getDecodedComments() {
+        checkDecoded();
         return mDecodedComments;
     }
 
+    private void checkDecoded() {
+        if (!mDecoded) {
+            throw new IllegalStateException("decodeHtml must have been called");
+        }
+    }
+
     private static String getString(Cursor cursor, String columnName) {
         return cursor.getString(cursor.getColumnIndex(columnName));
     }
diff --git a/tests/res/layout/fill_call_log_test.xml b/tests/res/layout/fill_call_log_test.xml
index a5f64f5..01ade3e 100644
--- a/tests/res/layout/fill_call_log_test.xml
+++ b/tests/res/layout/fill_call_log_test.xml
@@ -31,7 +31,14 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:inputType="number"
+        android:text="10"
         />
+    <CheckBox
+        android:id="@+id/use_random_numbers"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/useRandomNumbers"
+    />
     <Button
         android:id="@+id/add"
         android:layout_width="match_parent"
diff --git a/tests/res/values/donottranslate_strings.xml b/tests/res/values/donottranslate_strings.xml
index c3cbc10..6db9e8b 100644
--- a/tests/res/values/donottranslate_strings.xml
+++ b/tests/res/values/donottranslate_strings.xml
@@ -96,8 +96,9 @@
     <string name="fillCallLogTest">Fill call log test</string>
     <string name="addToCallLogButton">Add</string>
     <string name="numberOfCallLogEntries">Number of call log entries to add:</string>
+    <string name="useRandomNumbers">Use random numbers</string>
     <string name="addedLogEntriesToast">Added %1$d call log entries.</string>
-    <string name="noLogEntriesToast">No entries in the call log yet.</string>
+    <string name="noLogEntriesToast">No entries in the call log yet.  Need at least one record for the template.  Or use random numbers.</string>
 
     <string name="chooseAContactButton">Choose a contact to add stream items to</string>
     <string name="exitButton">Exit</string>
diff --git a/tests/src/com/android/contacts/ContactDetailTest.java b/tests/src/com/android/contacts/ContactDetailTest.java
index e8d1550..b2c19f4 100644
--- a/tests/src/com/android/contacts/ContactDetailTest.java
+++ b/tests/src/com/android/contacts/ContactDetailTest.java
@@ -21,7 +21,9 @@
 import com.android.contacts.tests.mocks.MockContentProvider;
 
 import android.test.ActivityUnitTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
 
+@SmallTest
 public class ContactDetailTest extends ActivityUnitTestCase<ContactDetailActivity> {
     private ContactsMockContext mContext;
     private MockContentProvider mContactsProvider;
diff --git a/tests/src/com/android/contacts/ContactsUtilsTests.java b/tests/src/com/android/contacts/ContactsUtilsTests.java
index 82d0cb0..d2d5bbb 100644
--- a/tests/src/com/android/contacts/ContactsUtilsTests.java
+++ b/tests/src/com/android/contacts/ContactsUtilsTests.java
@@ -126,7 +126,7 @@
         assertCollapses("72", true,
                 Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234",
                 Phone.CONTENT_ITEM_TYPE, "+49 (8092)1234");
-        assertCollapses("73", true,
+        assertCollapses("73", false,
                 Phone.CONTENT_ITEM_TYPE, "0049 (8092) 1234",
                 Phone.CONTENT_ITEM_TYPE, "+49/80921234");
         assertCollapses("74", false,
@@ -147,14 +147,37 @@
                 Phone.CONTENT_ITEM_TYPE, "1234567;+49 (8092) 1234",
                 Phone.CONTENT_ITEM_TYPE, "1234567;+49/80921234");
 
-        // this makes sure that if if two segments are identical, we don't even try to parse
-        // (and therefore allow invalid phone numbers)
-        assertCollapses("84", true,
-                Phone.CONTENT_ITEM_TYPE, "+49/80921234;a89",
-                Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;a89");
-        assertCollapses("85", false,
-                Phone.CONTENT_ITEM_TYPE, "+49/80921234;a89",
-                Phone.CONTENT_ITEM_TYPE, "+49/80921234;b89");
+        assertCollapses("86", true,
+                Phone.CONTENT_ITEM_TYPE, "",
+                Phone.CONTENT_ITEM_TYPE, "");
+
+        assertCollapses("87", false,
+                Phone.CONTENT_ITEM_TYPE, "1",
+                Phone.CONTENT_ITEM_TYPE, "");
+
+        assertCollapses("88", false,
+                Phone.CONTENT_ITEM_TYPE, "",
+                Phone.CONTENT_ITEM_TYPE, "1");
+
+        assertCollapses("89", true,
+                Phone.CONTENT_ITEM_TYPE, "---",
+                Phone.CONTENT_ITEM_TYPE, "---");
+
+        assertCollapses("90", true,
+                Phone.CONTENT_ITEM_TYPE, "1-/().",
+                Phone.CONTENT_ITEM_TYPE, "--$%1");
+
+        assertCollapses("91", true,
+                Phone.CONTENT_ITEM_TYPE, "abcdefghijklmnopqrstuvwxyz",
+                Phone.CONTENT_ITEM_TYPE, "22233344455566677778889999");
+
+        assertCollapses("92", false,
+                Phone.CONTENT_ITEM_TYPE, "1;2",
+                Phone.CONTENT_ITEM_TYPE, "12");
+
+        assertCollapses("93", false,
+                Phone.CONTENT_ITEM_TYPE, "1,2",
+                Phone.CONTENT_ITEM_TYPE, "12");
     }
 
     private void assertCollapses(String message, boolean expected, CharSequence mimetype1,
@@ -164,12 +187,17 @@
         assertEquals(message, expected,
                 ContactsUtils.shouldCollapse(mimetype2, data2, mimetype1, data1));
 
+        // If data1 and data2 are the same instance, make sure the same test passes with different
+        // instances.
         if (data1 == data2 && data1 != null) {
-            // make sure we also do a test where object equality is not given
-            final CharSequence data2_newref = data2 + "";
+            // Create a different instance
+            final CharSequence data2_newref = new StringBuilder(data2).append("").toString();
 
-            // this just makes sure the test is working
-            assertFalse(data1 == data2_newref);
+            if (data1 == data2_newref) {
+                // In some cases no matter what we do the runtime reuses the same instance, so
+                // we can't do the "different instance" test.
+                return;
+            }
 
             // we have two different instances, now make sure we get the same result as before
             assertEquals(message, expected,
diff --git a/tests/src/com/android/contacts/detail/ContactDetailDisplayUtilsTest.java b/tests/src/com/android/contacts/detail/ContactDetailDisplayUtilsTest.java
index fd30390..419cac8 100644
--- a/tests/src/com/android/contacts/detail/ContactDetailDisplayUtilsTest.java
+++ b/tests/src/com/android/contacts/detail/ContactDetailDisplayUtilsTest.java
@@ -51,19 +51,20 @@
     }
 
     public void testAddStreamItemText_IncludesComments() {
-        StreamItemEntry streamItem = getTestBuilder().setComment("1 comment").build();
+        StreamItemEntry streamItem = getTestBuilder().setComment("1 comment").build(getContext());
         View streamItemView = addStreamItemText(streamItem);
         assertHasText(streamItemView, R.id.stream_item_comments, "1 comment");
     }
 
     public void testAddStreamItemText_IncludesHtmlComments() {
-        StreamItemEntry streamItem = getTestBuilder().setComment("1 <b>comment</b>").build();
+        StreamItemEntry streamItem = getTestBuilder().setComment("1 <b>comment</b>")
+                .build(getContext());
         View streamItemView = addStreamItemText(streamItem);
         assertHasHtmlText(streamItemView, R.id.stream_item_comments, "1 <b>comment<b>");
     }
 
     public void testAddStreamItemText_NoComments() {
-        StreamItemEntry streamItem = getTestBuilder().setComment(null).build();
+        StreamItemEntry streamItem = getTestBuilder().setComment(null).build(getContext());
         View streamItemView = addStreamItemText(streamItem);
         assertGone(streamItemView, R.id.stream_item_comments);
     }
diff --git a/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java b/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java
index 131af96..cd2d6bf 100644
--- a/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java
+++ b/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java
@@ -85,7 +85,7 @@
     private ArrayList<StreamItemEntry> createStreamItemList(int count) {
         ArrayList<StreamItemEntry> list = Lists.newArrayList();
         for (int index = 0; index < count; ++index) {
-            list.add(createStreamItemEntryBuilder().build());
+            list.add(createStreamItemEntryBuilder().build(getContext()));
         }
         return list;
     }
diff --git a/tests/src/com/android/contacts/format/SpannedTestUtils.java b/tests/src/com/android/contacts/format/SpannedTestUtils.java
index 646a7ec..ce228a7 100644
--- a/tests/src/com/android/contacts/format/SpannedTestUtils.java
+++ b/tests/src/com/android/contacts/format/SpannedTestUtils.java
@@ -41,7 +41,7 @@
             // If the text is empty, it does not add the <p></p> bits to it.
             Assert.assertEquals("", actualHtmlText);
         } else {
-            Assert.assertEquals("<p>" + expectedHtmlText + "</p>\n", actualHtmlText);
+            Assert.assertEquals("<p dir=ltr>" + expectedHtmlText + "</p>\n", actualHtmlText);
         }
     }
 
diff --git a/tests/src/com/android/contacts/tests/calllog/FillCallLogTestActivity.java b/tests/src/com/android/contacts/tests/calllog/FillCallLogTestActivity.java
index 189cd1f..3fc44cb 100644
--- a/tests/src/com/android/contacts/tests/calllog/FillCallLogTestActivity.java
+++ b/tests/src/com/android/contacts/tests/calllog/FillCallLogTestActivity.java
@@ -32,11 +32,12 @@
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
+import android.widget.CheckBox;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import java.security.SecureRandom;
+import java.util.Random;
 
 /**
  * Activity to add entries to the call log for testing.
@@ -46,9 +47,15 @@
     /** Identifier of the loader for querying the call log. */
     private static final int CALLLOG_LOADER_ID = 1;
 
+    private static final Random RNG = new Random();
+    private static final int[] CALL_TYPES = new int[] {
+        Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE, Calls.MISSED_TYPE,
+    };
+
     private TextView mNumberTextView;
     private Button mAddButton;
     private ProgressBar mProgressBar;
+    private CheckBox mUseRandomNumbers;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -57,12 +64,23 @@
         mNumberTextView = (TextView) findViewById(R.id.number);
         mAddButton = (Button) findViewById(R.id.add);
         mProgressBar = (ProgressBar) findViewById(R.id.progress);
+        mUseRandomNumbers = (CheckBox) findViewById(R.id.use_random_numbers);
 
         mAddButton.setOnClickListener(new View.OnClickListener(){
             @Override
             public void onClick(View v) {
-                int count = Integer.parseInt(mNumberTextView.getText().toString());
-                addEntriesToCallLog(count);
+                int count;
+                try {
+                    count = Integer.parseInt(mNumberTextView.getText().toString());
+                    if (count > 100) {
+                        throw new RuntimeException("Number too large.  Max=100");
+                    }
+                } catch (RuntimeException e) {
+                    Toast.makeText(FillCallLogTestActivity.this, e.toString(), Toast.LENGTH_LONG)
+                            .show();
+                    return;
+                }
+                addEntriesToCallLog(count, mUseRandomNumbers.isChecked());
                 mNumberTextView.setEnabled(false);
                 mAddButton.setEnabled(false);
                 mProgressBar.setProgress(0);
@@ -78,8 +96,13 @@
      *
      * @param count the number of entries to add
      */
-    private void addEntriesToCallLog(final int count) {
-        getLoaderManager().initLoader(CALLLOG_LOADER_ID, null, new CallLogLoaderListener(count));
+    private void addEntriesToCallLog(final int count, boolean useRandomNumbers) {
+        if (useRandomNumbers) {
+            addRandomNumbers(count);
+        } else {
+            getLoaderManager().initLoader(CALLLOG_LOADER_ID, null,
+                    new CallLogLoaderListener(count));
+        }
     }
 
     /**
@@ -133,6 +156,21 @@
         return values;
     }
 
+    private void addRandomNumbers(int count) {
+        ContentValues[] values = new ContentValues[count];
+        for (int i = 0; i < count; i++) {
+            values[i] = new ContentValues();
+            values[i].put(Calls.NUMBER, generateRandomNumber());
+            values[i].put(Calls.DATE, System.currentTimeMillis()); // Will be randomized later
+            values[i].put(Calls.DURATION, 1); // Will be overwritten later
+        }
+        new AsyncCallLogInserter(values).execute(new Void[0]);
+    }
+
+    private static String generateRandomNumber() {
+        return String.format("5%09d", RNG.nextInt(1000000000));
+    }
+
     /** Invokes {@link AsyncCallLogInserter} when the call log has loaded. */
     private final class CallLogLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
         /** The number of items to insert when done. */
@@ -151,31 +189,29 @@
 
         @Override
         public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
-            Log.d(TAG, "onLoadFinished");
-            // Stores the content values associated with the various entries in call log.
-            // It needs at most as many entries as the number of entries in the templates, or the
-            // number of entries to insert, whichever is smaller.
-            int dataCount = Math.min(data.getCount(), mCount);
+            try {
+                Log.d(TAG, "onLoadFinished");
 
-            if (dataCount == 0) {
-                // If there are no entries in the call log, we cannot generate new ones.
-                insertCompleted(getString(R.string.noLogEntriesToast));
-                return;
-            }
-
-            ContentValues[] values = new ContentValues[dataCount];
-            for (int index = 0; index < dataCount; ++index) {
-                if (!data.moveToNext()) {
-                    throw new IllegalStateException("unexpected end of data");
+                if (data.getCount() == 0) {
+                    // If there are no entries in the call log, we cannot generate new ones.
+                    insertCompleted(getString(R.string.noLogEntriesToast));
+                    return;
                 }
-                if (values[index] == null) {
-                    // Create the content value at most once.
+
+                data.moveToPosition(-1);
+
+                ContentValues[] values = new ContentValues[mCount];
+                for (int index = 0; index < mCount; ++index) {
+                    if (!data.moveToNext()) {
+                        data.moveToFirst();
+                    }
                     values[index] = createContentValuesFromCursor(data);
                 }
+                new AsyncCallLogInserter(values).execute(new Void[0]);
+            } finally {
+                // This is a one shot loader.
+                getLoaderManager().destroyLoader(CALLLOG_LOADER_ID);
             }
-            new AsyncCallLogInserter(mCount, values).execute(new Void[0]);
-            // This is a one shot loader.
-            getLoaderManager().destroyLoader(CALLLOG_LOADER_ID);
         }
 
         @Override
@@ -185,14 +221,10 @@
     /** Inserts a given number of entries in the call log based on the values given. */
     private final class AsyncCallLogInserter extends AsyncTask<Void, Integer, Integer> {
         /** The number of items to insert. */
-        private final int mCount;
         private final ContentValues[] mValues;
-        private final SecureRandom mRandom;
 
-        public AsyncCallLogInserter(int count, ContentValues[] values) {
-            mCount = count;
+        public AsyncCallLogInserter(ContentValues[] values) {
             mValues = values;
-            mRandom = new SecureRandom();
         }
 
         @Override
@@ -221,19 +253,33 @@
         private Integer insertIntoCallLog() {
             int inserted = 0;
 
-            for (int index = 0; index < mCount; ++index) {
-                ContentValues values = mValues[index % mValues.length];
+            for (int index = 0; index < mValues.length; ++index) {
+                ContentValues values = mValues[index];
                 // These should not be set.
                 values.putNull(Calls._ID);
                 // Add some randomness to the date. For each new entry being added, add an extra
                 // day to the maximum possible offset from the original.
                 values.put(Calls.DATE,
                         values.getAsLong(Calls.DATE)
-                        - mRandom.nextInt(24 * 60 * 60 * (index + 1)) * 1000L);
+                        - RNG.nextInt(24 * 60 * 60 * (index + 1)) * 1000L);
                 // Add some randomness to the duration.
                 if (values.getAsLong(Calls.DURATION) > 0) {
-                    values.put(Calls.DURATION, mRandom.nextInt(30 * 60 * 60 * 1000));
+                    values.put(Calls.DURATION, RNG.nextInt(30 * 60 * 60 * 1000));
                 }
+
+                // Overwrite type.
+                values.put(Calls.TYPE, CALL_TYPES[RNG.nextInt(CALL_TYPES.length)]);
+
+                // Clear cached columns.
+                values.putNull(Calls.CACHED_FORMATTED_NUMBER);
+                values.putNull(Calls.CACHED_LOOKUP_URI);
+                values.putNull(Calls.CACHED_MATCHED_NUMBER);
+                values.putNull(Calls.CACHED_NAME);
+                values.putNull(Calls.CACHED_NORMALIZED_NUMBER);
+                values.putNull(Calls.CACHED_NUMBER_LABEL);
+                values.putNull(Calls.CACHED_NUMBER_TYPE);
+                values.putNull(Calls.CACHED_PHOTO_ID);
+
                 // Insert into the call log the newly generated entry.
                 ContentProviderClient contentProvider =
                         getContentResolver().acquireContentProviderClient(
diff --git a/tests/src/com/android/contacts/util/StreamItemEntryBuilder.java b/tests/src/com/android/contacts/util/StreamItemEntryBuilder.java
index 319ba48..d8d8cf5 100644
--- a/tests/src/com/android/contacts/util/StreamItemEntryBuilder.java
+++ b/tests/src/com/android/contacts/util/StreamItemEntryBuilder.java
@@ -16,6 +16,10 @@
 
 package com.android.contacts.util;
 
+import com.android.contacts.util.StreamItemEntry;
+
+import android.content.Context;
+
 /**
  * Builder for {@link StreamItemEntry}s to make writing tests easier.
  */
@@ -58,8 +62,10 @@
         return this;
     }
 
-    public StreamItemEntry build() {
-        return new StreamItemEntry(mId, mText, mComment, mTimestamp, mAccountType, mAccountName,
-                mDataSet, mResPackage, mIconRes, mLabelRes);
+    public StreamItemEntry build(Context context) {
+        StreamItemEntry ret = StreamItemEntry.createForTest(mId, mText, mComment, mTimestamp,
+                mAccountType, mAccountName, mDataSet, mResPackage, mIconRes, mLabelRes);
+        ret.decodeHtml(context);
+        return ret;
     }
 }
\ No newline at end of file