Merge remote-tracking branch 'temp/nyc-dev' into nyc-dev
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..20f3944
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,74 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+incallui_dir := ../InCallUI
+contacts_common_dir := ../ContactsCommon
+phone_common_dir := ../PhoneCommon
+
+ifeq ($(TARGET_BUILD_APPS),)
+support_library_root_dir := frameworks/support
+else
+support_library_root_dir := prebuilts/sdk/current/support
+endif
+
+src_dirs := src \
+    $(incallui_dir)/src \
+    $(contacts_common_dir)/src \
+    $(phone_common_dir)/src
+
+res_dirs := res \
+    $(incallui_dir)/res \
+    $(contacts_common_dir)/res \
+    $(phone_common_dir)/res
+
+src_dirs += \
+    src-N \
+    $(incallui_dir)/src-N \
+    $(contacts_common_dir)/src-N \
+    $(phone_common_dir)/src-N
+
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs)) \
+    $(support_library_root_dir)/v7/cardview/res \
+    $(support_library_root_dir)/v7/recyclerview/res \
+    $(support_library_root_dir)/v7/appcompat/res \
+    $(support_library_root_dir)/design/res
+
+LOCAL_AAPT_FLAGS := \
+    --auto-add-overlay \
+    --extra-packages android.support.v7.appcompat \
+    --extra-packages android.support.v7.cardview \
+    --extra-packages android.support.v7.recyclerview \
+    --extra-packages android.support.design \
+    --extra-packages com.android.incallui \
+    --extra-packages com.android.contacts.common \
+    --extra-packages com.android.phone.common
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+    android-common \
+    android-support-v13 \
+    android-support-v4 \
+    android-support-v7-appcompat \
+    android-support-v7-cardview \
+    android-support-v7-recyclerview \
+    android-support-design \
+    com.android.vcard \
+    guava \
+    libphonenumber
+
+LOCAL_PACKAGE_NAME := Dialer
+LOCAL_CERTIFICATE := shared
+LOCAL_PRIVILEGED_MODULE := true
+
+LOCAL_PROGUARD_FLAG_FILES := proguard.flags $(incallui_dir)/proguard.flags
+
+# Uncomment the following line to build against the current SDK
+# This is required for building an unbundled app.
+LOCAL_SDK_VERSION := system_current
+
+include $(BUILD_PACKAGE)
+
+# Use the following include to make our test apk.
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
new file mode 100644
index 0000000..7d7092d
--- /dev/null
+++ b/AndroidManifest.xml
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2006 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.dialer"
+    coreApp="true"
+    android:versionCode="20401"
+    android:versionName="2.04.01">
+
+    <uses-sdk
+        android:minSdkVersion="23"
+        android:targetSdkVersion="23" />
+
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+    <uses-permission android:name="android.permission.READ_CALL_LOG" />
+    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
+    <uses-permission android:name="android.permission.READ_PROFILE" />
+    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
+    <uses-permission android:name="android.permission.NFC" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+    <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
+    <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
+    <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL" />
+    <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" />
+    <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK" />
+    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <!-- This tells the activity manager to not delay any of our activity
+     start requests, even if they happen immediately after the user
+     presses home. -->
+    <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
+
+    <application
+        android:name="DialerApplication"
+        android:label="@string/applicationLabel"
+        android:icon="@mipmap/ic_launcher_phone"
+        android:hardwareAccelerated="true"
+        android:supportsRtl="true"
+        android:backupAgent='com.android.dialer.DialerBackupAgent'
+        android:usesCleartextTraffic="false"
+        android:forceDeviceEncrypted="true"
+        android:encryptionAware="true">
+
+        <meta-data android:name="com.google.android.backup.api_key"
+            android:value="AEdPqrEAAAAIBXgtCEKQ6W0PXVnW-ZVia2KmlV2AxsTw3GjAeQ" />
+
+        <!-- The entrance point for Phone UI.
+             stateAlwaysHidden is set to suppress keyboard show up on
+             dialpad screen. -->
+        <activity android:name=".DialtactsActivity"
+            android:label="@string/launcherActivityLabel"
+            android:theme="@style/DialtactsActivityTheme"
+            android:launchMode="singleTask"
+            android:clearTaskOnLaunch="true"
+            android:icon="@mipmap/ic_launcher_phone"
+            android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"
+            android:resizeableActivity="true"
+            >
+            <intent-filter>
+                <action android:name="android.intent.action.DIAL" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:mimeType="vnd.android.cursor.item/phone" />
+                <data android:mimeType="vnd.android.cursor.item/person" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.DIAL" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:scheme="voicemail" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.DIAL" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.BROWSABLE" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <action android:name="android.intent.action.DIAL" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:scheme="tel" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:mimeType="vnd.android.cursor.dir/calls" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.CALL_BUTTON" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+            </intent-filter>
+            <!-- This was never intended to be public, but is here for backward
+                 compatibility.  Use Intent.ACTION_DIAL instead. -->
+            <intent-filter>
+                <action android:name="com.android.phone.action.TOUCH_DIALER" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.TAB" />
+            </intent-filter>
+            <intent-filter android:label="@string/callHistoryIconLabel">
+                <action android:name="com.android.phone.action.RECENT_CALLS" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.TAB" />
+            </intent-filter>
+            <meta-data
+                android:name="com.android.keyguard.layout"
+                android:resource="@layout/keyguard_preview" />
+        </activity>
+
+        <activity android:name="com.android.dialer.settings.DialerSettingsActivity"
+              android:label="@string/dialer_settings_label"
+              android:parentActivityName="com.android.dialer.DialtactsActivity"
+              android:theme="@style/SettingsStyle"
+              android:exported="false">
+        </activity>
+
+        <activity android:name="com.android.dialer.filterednumber.BlockedNumbersSettingsActivity"
+            android:label="@string/manage_blocked_numbers_label"
+            android:parentActivityName="com.android.dialer.settings.DialerSettingsActivity"
+            android:theme="@style/ManageBlockedNumbersStyle"
+            android:exported="false">
+        </activity>
+
+        <activity android:name="com.android.dialer.calllog.CallLogActivity"
+            android:label="@string/call_log_activity_title"
+            android:theme="@style/DialtactsThemeWithoutActionBarOverlay"
+            android:icon="@mipmap/ic_launcher_phone">
+        </activity>
+
+        <activity android:name="com.android.dialer.CallDetailActivity"
+            android:label="@string/callDetailTitle"
+            android:theme="@style/CallDetailActivityTheme"
+            android:icon="@mipmap/ic_launcher_phone">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+                <data android:mimeType="vnd.android.cursor.item/calls"/>
+            </intent-filter>
+        </activity>
+
+        <activity android:name="com.android.contacts.common.test.FragmentTestActivity">
+            <intent-filter>
+                <category android:name="android.intent.category.TEST"/>
+            </intent-filter>
+        </activity>
+
+        <activity android:name="com.android.contacts.common.dialog.CallSubjectDialog"
+                  android:theme="@style/Theme.CallSubjectDialogTheme"
+                  android:windowSoftInputMode="stateVisible|adjustResize">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW"/>
+            </intent-filter>
+        </activity>
+
+        <!-- Backwards compatibility: "Phone" from Gingerbread and earlier -->
+        <activity-alias android:name="DialtactsActivity"
+            android:targetActivity=".DialtactsActivity"
+            android:exported="true"
+        />
+
+        <!-- Backwards compatibility: "Call log" from Gingerbread and earlier -->
+        <activity-alias android:name="RecentCallsListActivity"
+            android:targetActivity=".DialtactsActivity"
+            android:exported="true"
+        />
+
+        <!-- Backwards compatibility: "Call log" from ICS -->
+        <activity-alias android:name=".activities.CallLogActivity"
+            android:targetActivity=".DialtactsActivity"
+            android:exported="true"
+        />
+
+        <!-- Used to filter contacts list by account -->
+        <activity
+            android:name="com.android.contacts.common.list.AccountFilterActivity"
+            android:label="@string/activity_title_contacts_filter"
+            android:theme="@style/ContactListFilterTheme"/>
+
+        <!-- Used to select display and sync groups -->
+        <activity
+            android:name="com.android.contacts.common.list.CustomContactListFilterActivity"
+            android:label="@string/custom_list_filter"
+            android:theme="@style/ContactListFilterTheme"/>
+
+        <activity
+            android:name="com.android.contacts.common.activity.RequestImportVCardPermissionsActivity"
+            android:label="@string/launcherActivityLabel"
+            android:theme="@style/BackgroundOnlyTheme"
+            android:exported="false"/>
+
+        <!-- vCard related -->
+        <activity android:name="com.android.contacts.common.vcard.ImportVCardActivity"
+                  android:configChanges="orientation|screenSize|keyboardHidden"
+                  android:theme="@style/BackgroundOnlyTheme">
+        </activity>
+
+        <activity android:name="com.android.contacts.common.vcard.NfcImportVCardActivity"
+                  android:configChanges="orientation|screenSize|keyboardHidden"
+                  android:theme="@style/BackgroundOnlyTheme">
+        </activity>
+
+        <activity android:name="com.android.contacts.common.vcard.CancelActivity"
+                  android:theme="@style/BackgroundOnlyTheme"/>
+
+        <activity android:name="com.android.contacts.common.vcard.SelectAccountActivity"
+                  android:theme="@style/BackgroundOnlyTheme"/>
+
+        <activity android:name="com.android.contacts.common.vcard.ExportVCardActivity"
+                  android:theme="@style/BackgroundOnlyTheme"/>
+
+        <service
+            android:name="com.android.contacts.common.vcard.VCardService"
+            android:exported="false"/>
+        <!-- end vCard related -->
+
+        <receiver android:name=".calllog.CallLogReceiver">
+            <intent-filter>
+                <action android:name="android.intent.action.NEW_VOICEMAIL" />
+                <data
+                    android:scheme="content"
+                    android:host="com.android.voicemail"
+                    android:mimeType="vnd.android.cursor.item/voicemail"
+                />
+            </intent-filter>
+            <intent-filter android:priority="100">
+                 <action android:name="android.intent.action.BOOT_COMPLETED"/>
+            </intent-filter>
+        </receiver>
+
+        <receiver android:name=".interactions.UndemoteOutgoingCallReceiver">
+            <intent-filter>
+                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
+            </intent-filter>
+        </receiver>
+
+        <service
+            android:name=".calllog.CallLogNotificationsService"
+            android:exported="false"
+        />
+
+        <receiver android:name=".calllog.MissedCallNotificationReceiver">
+            <intent-filter>
+                <action android:name="android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION" />
+            </intent-filter>
+        </receiver>
+
+        <!-- Service to update a contact -->
+        <service
+            android:name=".contact.ContactUpdateService"
+            android:exported="false" />
+
+        <!-- Broadcast receiver that passively listens to location updates -->
+        <receiver android:name="com.android.contacts.common.location.CountryDetector$LocationChangedReceiver"/>
+
+        <!-- IntentService to update the user's current country -->
+        <service android:name="com.android.contacts.common.location.UpdateCountryService"
+            android:exported="false"/>
+
+        <!-- Main in-call UI activity.  This is never launched directly
+             from outside the phone app; instead, it's either launched by
+             the OutgoingCallBroadcaster (for outgoing calls), or as the
+             fullScreenIntent of a notification (for incoming calls.) -->
+        <activity android:name="com.android.incallui.InCallActivity"
+                  android:theme="@style/Theme.InCallScreen"
+                  android:label="@string/phoneAppLabel"
+                  android:excludeFromRecents="true"
+                  android:launchMode="singleInstance"
+                  android:configChanges="keyboardHidden"
+                  android:exported="false"
+                  android:screenOrientation="nosensor"
+                  android:encryptionAware="true" >
+        </activity>
+
+        <!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
+        <receiver android:name="com.android.incallui.NotificationBroadcastReceiver"
+                  android:exported="false" />
+
+        <service android:name="com.android.incallui.InCallServiceImpl"
+                 android:permission="android.permission.BIND_INCALL_SERVICE"
+                 android:encryptionAware="true" >
+            <meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
+            <meta-data android:name="android.telecom.IN_CALL_SERVICE_RINGING"
+                android:value="false"/>
+            <intent-filter>
+                <action android:name="android.telecom.InCallService"/>
+            </intent-filter>
+        </service>
+
+        <provider
+            android:name=".database.FilteredNumberProvider"
+            android:authorities="com.android.dialer.database.filterednumberprovider"
+            android:exported="false"
+            android:multiprocess="false"
+            />
+    </application>
+</manifest>
diff --git a/proguard.flags b/proguard.flags
new file mode 100644
index 0000000..6eed998
--- /dev/null
+++ b/proguard.flags
@@ -0,0 +1,22 @@
+# Xml files containing onClick (menus and layouts) require that proguard not
+# remove their handlers.
+-keepclassmembers class * extends android.app.Activity {
+  public void *(android.view.View);
+  public void *(android.view.MenuItem);
+}
+
+-keep class com.android.contacts.common.** { *;}
+
+# Any class or method annotated with NeededForTesting or NeededForReflection.
+-keep @com.android.contacts.common.testing.NeededForTesting class *
+-keepclassmembers class * {
+@com.android.contacts.common.testing.NeededForTesting *;
+@com.android.dialer.NeededForReflection *;
+}
+
+# For design libraries
+-keep public class * extends android.support.design.widget.CoordinatorLayout$Behavior {
+    public <init>(android.content.Context, android.util.AttributeSet);
+}
+
+-verbose
diff --git a/res/color/settings_text_color_primary.xml b/res/color/settings_text_color_primary.xml
new file mode 100644
index 0000000..862d8a2
--- /dev/null
+++ b/res/color/settings_text_color_primary.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 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.
+ */
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="false" android:color="@color/setting_disabled_color" />
+    <item android:color="@color/setting_primary_color" />
+</selector>
diff --git a/res/color/settings_text_color_secondary.xml b/res/color/settings_text_color_secondary.xml
new file mode 100644
index 0000000..0b00e46
--- /dev/null
+++ b/res/color/settings_text_color_secondary.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 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.
+ */
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="false" android:color="@color/setting_disabled_color" />
+    <item android:color="@color/setting_secondary_color" />
+</selector>
diff --git a/res/color/tab_text_color.xml b/res/color/tab_text_color.xml
new file mode 100644
index 0000000..5ef1fe3
--- /dev/null
+++ b/res/color/tab_text_color.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/actionbar_text_color" android:state_selected="true"/>
+    <item android:color="@color/actionbar_unselected_text_color" />
+</selector>
\ No newline at end of file
diff --git a/res/drawable-hdpi/empty_call_log.png b/res/drawable-hdpi/empty_call_log.png
new file mode 100644
index 0000000..d6f6daa
--- /dev/null
+++ b/res/drawable-hdpi/empty_call_log.png
Binary files differ
diff --git a/res/drawable-hdpi/empty_contacts.png b/res/drawable-hdpi/empty_contacts.png
new file mode 100644
index 0000000..d3c0378
--- /dev/null
+++ b/res/drawable-hdpi/empty_contacts.png
Binary files differ
diff --git a/res/drawable-hdpi/empty_speed_dial.png b/res/drawable-hdpi/empty_speed_dial.png
new file mode 100644
index 0000000..3e9232f
--- /dev/null
+++ b/res/drawable-hdpi/empty_speed_dial.png
Binary files differ
diff --git a/res/drawable-hdpi/fab_blue.png b/res/drawable-hdpi/fab_blue.png
new file mode 100644
index 0000000..8ff3d29
--- /dev/null
+++ b/res/drawable-hdpi/fab_blue.png
Binary files differ
diff --git a/res/drawable-hdpi/fab_ic_call.png b/res/drawable-hdpi/fab_ic_call.png
new file mode 100644
index 0000000..7bf83fa
--- /dev/null
+++ b/res/drawable-hdpi/fab_ic_call.png
Binary files differ
diff --git a/res/drawable-hdpi/fab_ic_dial.png b/res/drawable-hdpi/fab_ic_dial.png
new file mode 100644
index 0000000..3cad4c6
--- /dev/null
+++ b/res/drawable-hdpi/fab_ic_dial.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_block_24dp.png b/res/drawable-hdpi/ic_block_24dp.png
new file mode 100644
index 0000000..2ccc89d
--- /dev/null
+++ b/res/drawable-hdpi/ic_block_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_call_arrow.png b/res/drawable-hdpi/ic_call_arrow.png
new file mode 100644
index 0000000..14a33e3
--- /dev/null
+++ b/res/drawable-hdpi/ic_call_arrow.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_content_copy_24dp.png b/res/drawable-hdpi/ic_content_copy_24dp.png
new file mode 100644
index 0000000..70eb073
--- /dev/null
+++ b/res/drawable-hdpi/ic_content_copy_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_delete_24dp.png b/res/drawable-hdpi/ic_delete_24dp.png
new file mode 100644
index 0000000..9fb43b0
--- /dev/null
+++ b/res/drawable-hdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_fork_add_call.png b/res/drawable-hdpi/ic_dialer_fork_add_call.png
new file mode 100755
index 0000000..4e0d564
--- /dev/null
+++ b/res/drawable-hdpi/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_fork_current_call.png b/res/drawable-hdpi/ic_dialer_fork_current_call.png
new file mode 100755
index 0000000..2cf41d5
--- /dev/null
+++ b/res/drawable-hdpi/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
new file mode 100755
index 0000000..043685f
--- /dev/null
+++ b/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_grade_24dp.png b/res/drawable-hdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..86eecdd
--- /dev/null
+++ b/res/drawable-hdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_handle.png b/res/drawable-hdpi/ic_handle.png
new file mode 100644
index 0000000..34310aa
--- /dev/null
+++ b/res/drawable-hdpi/ic_handle.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_history_lt.png b/res/drawable-hdpi/ic_menu_history_lt.png
new file mode 100644
index 0000000..a36323c
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_history_lt.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_mic_grey600.png b/res/drawable-hdpi/ic_mic_grey600.png
new file mode 100644
index 0000000..4b67cf7
--- /dev/null
+++ b/res/drawable-hdpi/ic_mic_grey600.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_more_vert_24dp.png b/res/drawable-hdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..67f07e4
--- /dev/null
+++ b/res/drawable-hdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_not_interested_googblue_24dp.png b/res/drawable-hdpi/ic_not_interested_googblue_24dp.png
new file mode 100644
index 0000000..26a26f9
--- /dev/null
+++ b/res/drawable-hdpi/ic_not_interested_googblue_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_pause_24dp.png b/res/drawable-hdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..4d2ea05
--- /dev/null
+++ b/res/drawable-hdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_people_24dp.png b/res/drawable-hdpi/ic_people_24dp.png
new file mode 100644
index 0000000..ff698af
--- /dev/null
+++ b/res/drawable-hdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_phone_24dp.png b/res/drawable-hdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..b27dfba
--- /dev/null
+++ b/res/drawable-hdpi/ic_phone_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_play_arrow_24dp.png b/res/drawable-hdpi/ic_play_arrow_24dp.png
new file mode 100644
index 0000000..57c9fa5
--- /dev/null
+++ b/res/drawable-hdpi/ic_play_arrow_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_remove.png b/res/drawable-hdpi/ic_remove.png
new file mode 100644
index 0000000..1ee6adf
--- /dev/null
+++ b/res/drawable-hdpi/ic_remove.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_report_24dp.png b/res/drawable-hdpi/ic_report_24dp.png
new file mode 100644
index 0000000..dc0c995
--- /dev/null
+++ b/res/drawable-hdpi/ic_report_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_results_phone.png b/res/drawable-hdpi/ic_results_phone.png
new file mode 100644
index 0000000..3a1a7a7
--- /dev/null
+++ b/res/drawable-hdpi/ic_results_phone.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_schedule_24dp.png b/res/drawable-hdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..f3581d1
--- /dev/null
+++ b/res/drawable-hdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_star.png b/res/drawable-hdpi/ic_star.png
new file mode 100644
index 0000000..62e1f8a
--- /dev/null
+++ b/res/drawable-hdpi/ic_star.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_unblock.png b/res/drawable-hdpi/ic_unblock.png
new file mode 100644
index 0000000..03643b2
--- /dev/null
+++ b/res/drawable-hdpi/ic_unblock.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_videocam_24dp.png b/res/drawable-hdpi/ic_videocam_24dp.png
new file mode 100644
index 0000000..ecfce94
--- /dev/null
+++ b/res/drawable-hdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_sound_off_dis.png b/res/drawable-hdpi/ic_vm_sound_off_dis.png
new file mode 100644
index 0000000..47e3249
--- /dev/null
+++ b/res/drawable-hdpi/ic_vm_sound_off_dis.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_sound_off_dk.png b/res/drawable-hdpi/ic_vm_sound_off_dk.png
new file mode 100644
index 0000000..2bfe0c0
--- /dev/null
+++ b/res/drawable-hdpi/ic_vm_sound_off_dk.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_sound_on_dis.png b/res/drawable-hdpi/ic_vm_sound_on_dis.png
new file mode 100644
index 0000000..90b5238
--- /dev/null
+++ b/res/drawable-hdpi/ic_vm_sound_on_dis.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_vm_sound_on_dk.png b/res/drawable-hdpi/ic_vm_sound_on_dk.png
new file mode 100644
index 0000000..7556637
--- /dev/null
+++ b/res/drawable-hdpi/ic_vm_sound_on_dk.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_voicemail_24dp.png b/res/drawable-hdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..03a62e1
--- /dev/null
+++ b/res/drawable-hdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_volume_down_24dp.png b/res/drawable-hdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..e22e92c
--- /dev/null
+++ b/res/drawable-hdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_volume_up_24dp.png b/res/drawable-hdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..57d7871
--- /dev/null
+++ b/res/drawable-hdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/search_shadow.9.png b/res/drawable-hdpi/search_shadow.9.png
new file mode 100644
index 0000000..3dc1c17
--- /dev/null
+++ b/res/drawable-hdpi/search_shadow.9.png
Binary files differ
diff --git a/res/drawable-hdpi/shadow_contact_photo.png b/res/drawable-hdpi/shadow_contact_photo.png
new file mode 100644
index 0000000..44b06f2
--- /dev/null
+++ b/res/drawable-hdpi/shadow_contact_photo.png
Binary files differ
diff --git a/res/drawable-mdpi/empty_call_log.png b/res/drawable-mdpi/empty_call_log.png
new file mode 100644
index 0000000..3cd59b3
--- /dev/null
+++ b/res/drawable-mdpi/empty_call_log.png
Binary files differ
diff --git a/res/drawable-mdpi/empty_contacts.png b/res/drawable-mdpi/empty_contacts.png
new file mode 100644
index 0000000..2ce7eae
--- /dev/null
+++ b/res/drawable-mdpi/empty_contacts.png
Binary files differ
diff --git a/res/drawable-mdpi/empty_speed_dial.png b/res/drawable-mdpi/empty_speed_dial.png
new file mode 100644
index 0000000..98152e0
--- /dev/null
+++ b/res/drawable-mdpi/empty_speed_dial.png
Binary files differ
diff --git a/res/drawable-mdpi/fab_blue.png b/res/drawable-mdpi/fab_blue.png
new file mode 100644
index 0000000..2ca6b4b
--- /dev/null
+++ b/res/drawable-mdpi/fab_blue.png
Binary files differ
diff --git a/res/drawable-mdpi/fab_ic_call.png b/res/drawable-mdpi/fab_ic_call.png
new file mode 100644
index 0000000..790f935
--- /dev/null
+++ b/res/drawable-mdpi/fab_ic_call.png
Binary files differ
diff --git a/res/drawable-mdpi/fab_ic_dial.png b/res/drawable-mdpi/fab_ic_dial.png
new file mode 100644
index 0000000..4c854e1
--- /dev/null
+++ b/res/drawable-mdpi/fab_ic_dial.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_block_24dp.png b/res/drawable-mdpi/ic_block_24dp.png
new file mode 100644
index 0000000..ec1b33f
--- /dev/null
+++ b/res/drawable-mdpi/ic_block_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_arrow.png b/res/drawable-mdpi/ic_call_arrow.png
new file mode 100644
index 0000000..169cf29
--- /dev/null
+++ b/res/drawable-mdpi/ic_call_arrow.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_content_copy_24dp.png b/res/drawable-mdpi/ic_content_copy_24dp.png
new file mode 100644
index 0000000..80c0695
--- /dev/null
+++ b/res/drawable-mdpi/ic_content_copy_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_delete_24dp.png b/res/drawable-mdpi/ic_delete_24dp.png
new file mode 100644
index 0000000..c903fd1
--- /dev/null
+++ b/res/drawable-mdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_fork_add_call.png b/res/drawable-mdpi/ic_dialer_fork_add_call.png
new file mode 100644
index 0000000..56ac2a3
--- /dev/null
+++ b/res/drawable-mdpi/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_fork_current_call.png b/res/drawable-mdpi/ic_dialer_fork_current_call.png
new file mode 100644
index 0000000..16a44a0
--- /dev/null
+++ b/res/drawable-mdpi/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-mdpi/ic_dialer_fork_tt_keypad.png
new file mode 100644
index 0000000..66df69e
--- /dev/null
+++ b/res/drawable-mdpi/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_grade_24dp.png b/res/drawable-mdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..d2cbe4c
--- /dev/null
+++ b/res/drawable-mdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_handle.png b/res/drawable-mdpi/ic_handle.png
new file mode 100644
index 0000000..81a67ba
--- /dev/null
+++ b/res/drawable-mdpi/ic_handle.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_history_lt.png b/res/drawable-mdpi/ic_menu_history_lt.png
new file mode 100644
index 0000000..3597a5e
--- /dev/null
+++ b/res/drawable-mdpi/ic_menu_history_lt.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_mic_grey600.png b/res/drawable-mdpi/ic_mic_grey600.png
new file mode 100644
index 0000000..2310c73
--- /dev/null
+++ b/res/drawable-mdpi/ic_mic_grey600.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_more_vert_24dp.png b/res/drawable-mdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..017e45e
--- /dev/null
+++ b/res/drawable-mdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_not_interested_googblue_24dp.png b/res/drawable-mdpi/ic_not_interested_googblue_24dp.png
new file mode 100644
index 0000000..d7d5c58
--- /dev/null
+++ b/res/drawable-mdpi/ic_not_interested_googblue_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_pause_24dp.png b/res/drawable-mdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..2272d47
--- /dev/null
+++ b/res/drawable-mdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_people_24dp.png b/res/drawable-mdpi/ic_people_24dp.png
new file mode 100644
index 0000000..270e4de
--- /dev/null
+++ b/res/drawable-mdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_phone_24dp.png b/res/drawable-mdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..c1766b8
--- /dev/null
+++ b/res/drawable-mdpi/ic_phone_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_play_arrow_24dp.png b/res/drawable-mdpi/ic_play_arrow_24dp.png
new file mode 100644
index 0000000..c61e948
--- /dev/null
+++ b/res/drawable-mdpi/ic_play_arrow_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_remove.png b/res/drawable-mdpi/ic_remove.png
new file mode 100644
index 0000000..2c134ea
--- /dev/null
+++ b/res/drawable-mdpi/ic_remove.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_report_24dp.png b/res/drawable-mdpi/ic_report_24dp.png
new file mode 100644
index 0000000..70b82d6
--- /dev/null
+++ b/res/drawable-mdpi/ic_report_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_results_phone.png b/res/drawable-mdpi/ic_results_phone.png
new file mode 100644
index 0000000..74ccf14
--- /dev/null
+++ b/res/drawable-mdpi/ic_results_phone.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_schedule_24dp.png b/res/drawable-mdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..501ee84
--- /dev/null
+++ b/res/drawable-mdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_star.png b/res/drawable-mdpi/ic_star.png
new file mode 100644
index 0000000..d2af0ba
--- /dev/null
+++ b/res/drawable-mdpi/ic_star.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_unblock.png b/res/drawable-mdpi/ic_unblock.png
new file mode 100644
index 0000000..d80fb2f
--- /dev/null
+++ b/res/drawable-mdpi/ic_unblock.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_videocam_24dp.png b/res/drawable-mdpi/ic_videocam_24dp.png
new file mode 100644
index 0000000..cbb5be2
--- /dev/null
+++ b/res/drawable-mdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_sound_off_dis.png b/res/drawable-mdpi/ic_vm_sound_off_dis.png
new file mode 100644
index 0000000..4c671ec
--- /dev/null
+++ b/res/drawable-mdpi/ic_vm_sound_off_dis.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_sound_off_dk.png b/res/drawable-mdpi/ic_vm_sound_off_dk.png
new file mode 100644
index 0000000..41044b4
--- /dev/null
+++ b/res/drawable-mdpi/ic_vm_sound_off_dk.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_sound_on_dis.png b/res/drawable-mdpi/ic_vm_sound_on_dis.png
new file mode 100644
index 0000000..c6040c0
--- /dev/null
+++ b/res/drawable-mdpi/ic_vm_sound_on_dis.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_vm_sound_on_dk.png b/res/drawable-mdpi/ic_vm_sound_on_dk.png
new file mode 100644
index 0000000..ac6a69c
--- /dev/null
+++ b/res/drawable-mdpi/ic_vm_sound_on_dk.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_voicemail_24dp.png b/res/drawable-mdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..e5aa7db
--- /dev/null
+++ b/res/drawable-mdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_volume_down_24dp.png b/res/drawable-mdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..10992ed
--- /dev/null
+++ b/res/drawable-mdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_volume_up_24dp.png b/res/drawable-mdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..7cfd4c7
--- /dev/null
+++ b/res/drawable-mdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/search_shadow.9.png b/res/drawable-mdpi/search_shadow.9.png
new file mode 100644
index 0000000..0c33905
--- /dev/null
+++ b/res/drawable-mdpi/search_shadow.9.png
Binary files differ
diff --git a/res/drawable-mdpi/shadow_contact_photo.png b/res/drawable-mdpi/shadow_contact_photo.png
new file mode 100644
index 0000000..8665d83
--- /dev/null
+++ b/res/drawable-mdpi/shadow_contact_photo.png
Binary files differ
diff --git a/res/drawable-xhdpi/empty_call_log.png b/res/drawable-xhdpi/empty_call_log.png
new file mode 100644
index 0000000..14ec04b
--- /dev/null
+++ b/res/drawable-xhdpi/empty_call_log.png
Binary files differ
diff --git a/res/drawable-xhdpi/empty_contacts.png b/res/drawable-xhdpi/empty_contacts.png
new file mode 100644
index 0000000..65b1de3
--- /dev/null
+++ b/res/drawable-xhdpi/empty_contacts.png
Binary files differ
diff --git a/res/drawable-xhdpi/empty_speed_dial.png b/res/drawable-xhdpi/empty_speed_dial.png
new file mode 100644
index 0000000..a3a7675
--- /dev/null
+++ b/res/drawable-xhdpi/empty_speed_dial.png
Binary files differ
diff --git a/res/drawable-xhdpi/fab_blue.png b/res/drawable-xhdpi/fab_blue.png
new file mode 100644
index 0000000..300b07e
--- /dev/null
+++ b/res/drawable-xhdpi/fab_blue.png
Binary files differ
diff --git a/res/drawable-xhdpi/fab_ic_call.png b/res/drawable-xhdpi/fab_ic_call.png
new file mode 100644
index 0000000..6bd53f5
--- /dev/null
+++ b/res/drawable-xhdpi/fab_ic_call.png
Binary files differ
diff --git a/res/drawable-xhdpi/fab_ic_dial.png b/res/drawable-xhdpi/fab_ic_dial.png
new file mode 100644
index 0000000..398a03c
--- /dev/null
+++ b/res/drawable-xhdpi/fab_ic_dial.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_block_24dp.png b/res/drawable-xhdpi/ic_block_24dp.png
new file mode 100644
index 0000000..7aba97b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_block_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_arrow.png b/res/drawable-xhdpi/ic_call_arrow.png
new file mode 100644
index 0000000..6f13660
--- /dev/null
+++ b/res/drawable-xhdpi/ic_call_arrow.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_content_copy_24dp.png b/res/drawable-xhdpi/ic_content_copy_24dp.png
new file mode 100644
index 0000000..537fd4e
--- /dev/null
+++ b/res/drawable-xhdpi/ic_content_copy_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_delete_24dp.png b/res/drawable-xhdpi/ic_delete_24dp.png
new file mode 100644
index 0000000..be1ee4d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_fork_add_call.png b/res/drawable-xhdpi/ic_dialer_fork_add_call.png
new file mode 100644
index 0000000..aff140f
--- /dev/null
+++ b/res/drawable-xhdpi/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_fork_current_call.png b/res/drawable-xhdpi/ic_dialer_fork_current_call.png
new file mode 100644
index 0000000..8975727
--- /dev/null
+++ b/res/drawable-xhdpi/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.png
new file mode 100644
index 0000000..4d48ea9
--- /dev/null
+++ b/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_grade_24dp.png b/res/drawable-xhdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..d65f39d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_handle.png b/res/drawable-xhdpi/ic_handle.png
new file mode 100644
index 0000000..0ad8392
--- /dev/null
+++ b/res/drawable-xhdpi/ic_handle.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_history_lt.png b/res/drawable-xhdpi/ic_menu_history_lt.png
new file mode 100644
index 0000000..6b411cb
--- /dev/null
+++ b/res/drawable-xhdpi/ic_menu_history_lt.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_mic_grey600.png b/res/drawable-xhdpi/ic_mic_grey600.png
new file mode 100644
index 0000000..a9a83b3
--- /dev/null
+++ b/res/drawable-xhdpi/ic_mic_grey600.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_more_vert_24dp.png b/res/drawable-xhdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..efab8a7
--- /dev/null
+++ b/res/drawable-xhdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_not_interested_googblue_24dp.png b/res/drawable-xhdpi/ic_not_interested_googblue_24dp.png
new file mode 100644
index 0000000..3e6ec07
--- /dev/null
+++ b/res/drawable-xhdpi/ic_not_interested_googblue_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_pause_24dp.png b/res/drawable-xhdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..f49aed7
--- /dev/null
+++ b/res/drawable-xhdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_people_24dp.png b/res/drawable-xhdpi/ic_people_24dp.png
new file mode 100644
index 0000000..323981c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_phone_24dp.png b/res/drawable-xhdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..83167f4
--- /dev/null
+++ b/res/drawable-xhdpi/ic_phone_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_play_arrow_24dp.png b/res/drawable-xhdpi/ic_play_arrow_24dp.png
new file mode 100644
index 0000000..a3c80e7
--- /dev/null
+++ b/res/drawable-xhdpi/ic_play_arrow_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_remove.png b/res/drawable-xhdpi/ic_remove.png
new file mode 100644
index 0000000..be81592
--- /dev/null
+++ b/res/drawable-xhdpi/ic_remove.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_report_24dp.png b/res/drawable-xhdpi/ic_report_24dp.png
new file mode 100644
index 0000000..18e7764
--- /dev/null
+++ b/res/drawable-xhdpi/ic_report_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_results_phone.png b/res/drawable-xhdpi/ic_results_phone.png
new file mode 100644
index 0000000..0e24fa4
--- /dev/null
+++ b/res/drawable-xhdpi/ic_results_phone.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_schedule_24dp.png b/res/drawable-xhdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..2e27936
--- /dev/null
+++ b/res/drawable-xhdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_star.png b/res/drawable-xhdpi/ic_star.png
new file mode 100644
index 0000000..2071f42
--- /dev/null
+++ b/res/drawable-xhdpi/ic_star.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_unblock.png b/res/drawable-xhdpi/ic_unblock.png
new file mode 100644
index 0000000..f7dfa21
--- /dev/null
+++ b/res/drawable-xhdpi/ic_unblock.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_videocam_24dp.png b/res/drawable-xhdpi/ic_videocam_24dp.png
new file mode 100644
index 0000000..814e515
--- /dev/null
+++ b/res/drawable-xhdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_sound_off_dis.png b/res/drawable-xhdpi/ic_vm_sound_off_dis.png
new file mode 100644
index 0000000..36b5e20
--- /dev/null
+++ b/res/drawable-xhdpi/ic_vm_sound_off_dis.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_sound_off_dk.png b/res/drawable-xhdpi/ic_vm_sound_off_dk.png
new file mode 100644
index 0000000..99d7fd5
--- /dev/null
+++ b/res/drawable-xhdpi/ic_vm_sound_off_dk.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_sound_on_dis.png b/res/drawable-xhdpi/ic_vm_sound_on_dis.png
new file mode 100644
index 0000000..468023d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_vm_sound_on_dis.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_vm_sound_on_dk.png b/res/drawable-xhdpi/ic_vm_sound_on_dk.png
new file mode 100644
index 0000000..9703294
--- /dev/null
+++ b/res/drawable-xhdpi/ic_vm_sound_on_dk.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_voicemail_24dp.png b/res/drawable-xhdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..59126d7
--- /dev/null
+++ b/res/drawable-xhdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_volume_down_24dp.png b/res/drawable-xhdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..2621bc1
--- /dev/null
+++ b/res/drawable-xhdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_volume_up_24dp.png b/res/drawable-xhdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..2ed0034
--- /dev/null
+++ b/res/drawable-xhdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/search_shadow.9.png b/res/drawable-xhdpi/search_shadow.9.png
new file mode 100644
index 0000000..5667ab3
--- /dev/null
+++ b/res/drawable-xhdpi/search_shadow.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/shadow_contact_photo.png b/res/drawable-xhdpi/shadow_contact_photo.png
new file mode 100644
index 0000000..8359a50
--- /dev/null
+++ b/res/drawable-xhdpi/shadow_contact_photo.png
Binary files differ
diff --git a/res/drawable-xxhdpi/empty_call_log.png b/res/drawable-xxhdpi/empty_call_log.png
new file mode 100644
index 0000000..501d7f1
--- /dev/null
+++ b/res/drawable-xxhdpi/empty_call_log.png
Binary files differ
diff --git a/res/drawable-xxhdpi/empty_contacts.png b/res/drawable-xxhdpi/empty_contacts.png
new file mode 100644
index 0000000..407d78c
--- /dev/null
+++ b/res/drawable-xxhdpi/empty_contacts.png
Binary files differ
diff --git a/res/drawable-xxhdpi/empty_speed_dial.png b/res/drawable-xxhdpi/empty_speed_dial.png
new file mode 100644
index 0000000..fb2ea5f
--- /dev/null
+++ b/res/drawable-xxhdpi/empty_speed_dial.png
Binary files differ
diff --git a/res/drawable-xxhdpi/fab_blue.png b/res/drawable-xxhdpi/fab_blue.png
new file mode 100644
index 0000000..76d68ac
--- /dev/null
+++ b/res/drawable-xxhdpi/fab_blue.png
Binary files differ
diff --git a/res/drawable-xxhdpi/fab_ic_call.png b/res/drawable-xxhdpi/fab_ic_call.png
new file mode 100644
index 0000000..6866fa4
--- /dev/null
+++ b/res/drawable-xxhdpi/fab_ic_call.png
Binary files differ
diff --git a/res/drawable-xxhdpi/fab_ic_dial.png b/res/drawable-xxhdpi/fab_ic_dial.png
new file mode 100644
index 0000000..5f1cd45
--- /dev/null
+++ b/res/drawable-xxhdpi/fab_ic_dial.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_block_24dp.png b/res/drawable-xxhdpi/ic_block_24dp.png
new file mode 100644
index 0000000..fddfa54
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_block_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_call_arrow.png b/res/drawable-xxhdpi/ic_call_arrow.png
new file mode 100644
index 0000000..0364ee0
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_arrow.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_content_copy_24dp.png b/res/drawable-xxhdpi/ic_content_copy_24dp.png
new file mode 100644
index 0000000..9dff893
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_content_copy_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_delete_24dp.png b/res/drawable-xxhdpi/ic_delete_24dp.png
new file mode 100644
index 0000000..eb63792
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_dialer_fork_add_call.png b/res/drawable-xxhdpi/ic_dialer_fork_add_call.png
new file mode 100644
index 0000000..1657da4
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_dialer_fork_current_call.png b/res/drawable-xxhdpi/ic_dialer_fork_current_call.png
new file mode 100644
index 0000000..f25cce6
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-xxhdpi/ic_dialer_fork_tt_keypad.png
new file mode 100644
index 0000000..7ac4d8b
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_grade_24dp.png b/res/drawable-xxhdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..aa58792
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_handle.png b/res/drawable-xxhdpi/ic_handle.png
new file mode 100644
index 0000000..d07a1d0
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_handle.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_menu_history_lt.png b/res/drawable-xxhdpi/ic_menu_history_lt.png
new file mode 100644
index 0000000..779bc06
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_menu_history_lt.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_mic_grey600.png b/res/drawable-xxhdpi/ic_mic_grey600.png
new file mode 100644
index 0000000..07128dd
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_mic_grey600.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_more_vert_24dp.png b/res/drawable-xxhdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..d322813
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_not_interested_googblue_24dp.png b/res/drawable-xxhdpi/ic_not_interested_googblue_24dp.png
new file mode 100644
index 0000000..7c256b5
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_not_interested_googblue_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_pause_24dp.png b/res/drawable-xxhdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..7192ad4
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_people_24dp.png b/res/drawable-xxhdpi/ic_people_24dp.png
new file mode 100644
index 0000000..6c68435
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_phone_24dp.png b/res/drawable-xxhdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..8fff728
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_phone_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_play_arrow_24dp.png b/res/drawable-xxhdpi/ic_play_arrow_24dp.png
new file mode 100644
index 0000000..547ef30
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_play_arrow_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_remove.png b/res/drawable-xxhdpi/ic_remove.png
new file mode 100644
index 0000000..2722f23
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_remove.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_report_24dp.png b/res/drawable-xxhdpi/ic_report_24dp.png
new file mode 100644
index 0000000..aed7668
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_report_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_results_phone.png b/res/drawable-xxhdpi/ic_results_phone.png
new file mode 100644
index 0000000..9594619
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_results_phone.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_schedule_24dp.png b/res/drawable-xxhdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..bfc7273
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_star.png b/res/drawable-xxhdpi/ic_star.png
new file mode 100644
index 0000000..f3c8304
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_star.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_unblock.png b/res/drawable-xxhdpi/ic_unblock.png
new file mode 100644
index 0000000..828a487
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_unblock.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_videocam_24dp.png b/res/drawable-xxhdpi/ic_videocam_24dp.png
new file mode 100644
index 0000000..c216798
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_sound_off_dis.png b/res/drawable-xxhdpi/ic_vm_sound_off_dis.png
new file mode 100644
index 0000000..bab4a43
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_sound_off_dis.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_sound_off_dk.png b/res/drawable-xxhdpi/ic_vm_sound_off_dk.png
new file mode 100644
index 0000000..1c13101
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_sound_off_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_sound_on_dis.png b/res/drawable-xxhdpi/ic_vm_sound_on_dis.png
new file mode 100644
index 0000000..ed3a173
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_sound_on_dis.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_vm_sound_on_dk.png b/res/drawable-xxhdpi/ic_vm_sound_on_dk.png
new file mode 100644
index 0000000..c04b8d1
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_vm_sound_on_dk.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_voicemail_24dp.png b/res/drawable-xxhdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..28b8e93
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_volume_down_24dp.png b/res/drawable-xxhdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..5eb8b67
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_volume_up_24dp.png b/res/drawable-xxhdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..2e751a4
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/search_shadow.9.png b/res/drawable-xxhdpi/search_shadow.9.png
new file mode 100644
index 0000000..ff55620
--- /dev/null
+++ b/res/drawable-xxhdpi/search_shadow.9.png
Binary files differ
diff --git a/res/drawable-xxhdpi/shadow_contact_photo.png b/res/drawable-xxhdpi/shadow_contact_photo.png
new file mode 100644
index 0000000..bfeb0ff
--- /dev/null
+++ b/res/drawable-xxhdpi/shadow_contact_photo.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/empty_call_log.png b/res/drawable-xxxhdpi/empty_call_log.png
new file mode 100644
index 0000000..fbac1e4
--- /dev/null
+++ b/res/drawable-xxxhdpi/empty_call_log.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/empty_contacts.png b/res/drawable-xxxhdpi/empty_contacts.png
new file mode 100644
index 0000000..5893965
--- /dev/null
+++ b/res/drawable-xxxhdpi/empty_contacts.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/fab_blue.png b/res/drawable-xxxhdpi/fab_blue.png
new file mode 100644
index 0000000..1dd8a92
--- /dev/null
+++ b/res/drawable-xxxhdpi/fab_blue.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/fab_ic_call.png b/res/drawable-xxxhdpi/fab_ic_call.png
new file mode 100644
index 0000000..7af3396
--- /dev/null
+++ b/res/drawable-xxxhdpi/fab_ic_call.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/fab_ic_dial.png b/res/drawable-xxxhdpi/fab_ic_dial.png
new file mode 100644
index 0000000..9361aa8
--- /dev/null
+++ b/res/drawable-xxxhdpi/fab_ic_dial.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_block_24dp.png b/res/drawable-xxxhdpi/ic_block_24dp.png
new file mode 100644
index 0000000..0378d1b
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_block_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_call_arrow.png b/res/drawable-xxxhdpi/ic_call_arrow.png
new file mode 100644
index 0000000..8243c25
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_call_arrow.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_content_copy_24dp.png b/res/drawable-xxxhdpi/ic_content_copy_24dp.png
new file mode 100644
index 0000000..4ddee9e
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_content_copy_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_delete_24dp.png b/res/drawable-xxxhdpi/ic_delete_24dp.png
new file mode 100644
index 0000000..2f250f6
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_delete_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_grade_24dp.png b/res/drawable-xxxhdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..7f38d09
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_handle.png b/res/drawable-xxxhdpi/ic_handle.png
new file mode 100644
index 0000000..72641c7
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_handle.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_mic_grey600.png b/res/drawable-xxxhdpi/ic_mic_grey600.png
new file mode 100644
index 0000000..b7403ff
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_mic_grey600.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_more_vert_24dp.png b/res/drawable-xxxhdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..2f2cb3d
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_not_interested_googblue_24dp.png b/res/drawable-xxxhdpi/ic_not_interested_googblue_24dp.png
new file mode 100644
index 0000000..6591ed4
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_not_interested_googblue_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_pause_24dp.png b/res/drawable-xxxhdpi/ic_pause_24dp.png
new file mode 100644
index 0000000..660ac65
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_pause_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_people_24dp.png b/res/drawable-xxxhdpi/ic_people_24dp.png
new file mode 100644
index 0000000..5676f70
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_phone_24dp.png b/res/drawable-xxxhdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..30d141d
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_phone_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_play_arrow_24dp.png b/res/drawable-xxxhdpi/ic_play_arrow_24dp.png
new file mode 100644
index 0000000..be5c062
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_play_arrow_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_report_24dp.png b/res/drawable-xxxhdpi/ic_report_24dp.png
new file mode 100644
index 0000000..855e590
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_report_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_results_phone.png b/res/drawable-xxxhdpi/ic_results_phone.png
new file mode 100644
index 0000000..395652c
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_results_phone.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_schedule_24dp.png b/res/drawable-xxxhdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..b94f4df
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_unblock.png b/res/drawable-xxxhdpi/ic_unblock.png
new file mode 100644
index 0000000..99a1842
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_unblock.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_videocam_24dp.png b/res/drawable-xxxhdpi/ic_videocam_24dp.png
new file mode 100644
index 0000000..ed20c07
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_voicemail_24dp.png b/res/drawable-xxxhdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..820ff50
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_volume_down_24dp.png b/res/drawable-xxxhdpi/ic_volume_down_24dp.png
new file mode 100644
index 0000000..4ab55ab
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_volume_down_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_volume_up_24dp.png b/res/drawable-xxxhdpi/ic_volume_up_24dp.png
new file mode 100644
index 0000000..82972b4
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_volume_up_24dp.png
Binary files differ
diff --git a/res/drawable/background_dial_holo_dark.xml b/res/drawable/background_dial_holo_dark.xml
new file mode 100644
index 0000000..e06507f
--- /dev/null
+++ b/res/drawable/background_dial_holo_dark.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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient
+            android:startColor="#ff020709"
+            android:endColor="#ff0a242d"
+            android:angle="270" />
+</shape>
diff --git a/res/drawable/blocked_contact.xml b/res/drawable/blocked_contact.xml
new file mode 100644
index 0000000..2e73437
--- /dev/null
+++ b/res/drawable/blocked_contact.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2015 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
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <shape android:shape="oval">
+            <solid android:color="@color/blocked_contact_background" />
+            <size android:width="24dp" android:height="24dp" />
+        </shape>
+    </item>
+
+    <item android:drawable="@drawable/ic_block_24dp"
+        android:width="18dp"
+        android:height="18dp"
+        android:gravity="center" />
+
+</layer-list>
diff --git a/res/drawable/floating_action_button.xml b/res/drawable/floating_action_button.xml
new file mode 100644
index 0000000..d550190
--- /dev/null
+++ b/res/drawable/floating_action_button.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 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.
+-->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/floating_action_button_touch_tint">
+    <item android:id="@android:id/mask">
+        <shape android:shape="oval">
+            <solid android:color="@android:color/white" />
+        </shape>
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/res/drawable/ic_call_detail_block.xml b/res/drawable/ic_call_detail_block.xml
new file mode 100644
index 0000000..9ec8e03
--- /dev/null
+++ b/res/drawable/ic_call_detail_block.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 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.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_block_24dp"
+    android:tint="@color/call_detail_footer_icon_tint" />
diff --git a/res/drawable/ic_call_detail_content_copy.xml b/res/drawable/ic_call_detail_content_copy.xml
new file mode 100644
index 0000000..dd604df
--- /dev/null
+++ b/res/drawable/ic_call_detail_content_copy.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 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.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_content_copy_24dp"
+    android:tint="@color/call_detail_footer_icon_tint" />
diff --git a/res/drawable/ic_call_detail_edit.xml b/res/drawable/ic_call_detail_edit.xml
new file mode 100644
index 0000000..e5ad3e5
--- /dev/null
+++ b/res/drawable/ic_call_detail_edit.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 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.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_create_24dp"
+    android:tint="@color/call_detail_footer_icon_tint" />
diff --git a/res/drawable/ic_call_detail_report.xml b/res/drawable/ic_call_detail_report.xml
new file mode 100644
index 0000000..201ac4c
--- /dev/null
+++ b/res/drawable/ic_call_detail_report.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 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.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_report_24dp"
+    android:tint="@color/call_detail_footer_icon_tint" />
diff --git a/res/drawable/ic_call_detail_unblock.xml b/res/drawable/ic_call_detail_unblock.xml
new file mode 100644
index 0000000..ba5378b
--- /dev/null
+++ b/res/drawable/ic_call_detail_unblock.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 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.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_unblock"
+    android:tint="@color/call_detail_footer_icon_tint" />
diff --git a/res/drawable/ic_pause.xml b/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..7015a66
--- /dev/null
+++ b/res/drawable/ic_pause.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_enabled="false">
+        <bitmap
+            android:src="@drawable/ic_pause_24dp"
+            android:tint="@color/voicemail_icon_disabled_tint" />
+    </item>
+
+    <item>
+        <bitmap
+            android:src="@drawable/ic_pause_24dp"
+            android:tint="@color/voicemail_playpause_icon_tint" />
+    </item>
+
+</selector>
diff --git a/res/drawable/ic_play_arrow.xml b/res/drawable/ic_play_arrow.xml
new file mode 100644
index 0000000..1a9ee97
--- /dev/null
+++ b/res/drawable/ic_play_arrow.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:autoMirrored="true">
+
+    <item android:state_enabled="false">
+        <bitmap
+            android:src="@drawable/ic_play_arrow_24dp"
+            android:tint="@color/voicemail_icon_disabled_tint" />
+    </item>
+
+    <item>
+        <bitmap
+            android:src="@drawable/ic_play_arrow_24dp"
+            android:tint="@color/voicemail_playpause_icon_tint" />
+    </item>
+
+</selector>
diff --git a/res/drawable/ic_search_phone.xml b/res/drawable/ic_search_phone.xml
new file mode 100644
index 0000000..ac90532
--- /dev/null
+++ b/res/drawable/ic_search_phone.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2014 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.
+-->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/ic_results_phone"
+    android:tint="@color/search_shortcut_icon_color" />
diff --git a/res/drawable/ic_speakerphone_off.xml b/res/drawable/ic_speakerphone_off.xml
new file mode 100644
index 0000000..3dfedea
--- /dev/null
+++ b/res/drawable/ic_speakerphone_off.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="false" android:drawable="@drawable/ic_vm_sound_off_dis" />
+    <item android:drawable="@drawable/ic_vm_sound_off_dk" />
+</selector>
diff --git a/res/drawable/ic_speakerphone_on.xml b/res/drawable/ic_speakerphone_on.xml
new file mode 100644
index 0000000..ae7bb32
--- /dev/null
+++ b/res/drawable/ic_speakerphone_on.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="false" android:drawable="@drawable/ic_vm_sound_on_dis" />
+    <item android:drawable="@drawable/ic_vm_sound_on_dk" />
+</selector>
diff --git a/res/drawable/ic_voicemail_seek_handle.xml b/res/drawable/ic_voicemail_seek_handle.xml
new file mode 100644
index 0000000..a6f02be
--- /dev/null
+++ b/res/drawable/ic_voicemail_seek_handle.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+        android:src="@drawable/ic_handle"
+        android:autoMirrored="true"
+        android:tint="@color/actionbar_background_color" >
+</bitmap>
\ No newline at end of file
diff --git a/res/drawable/ic_voicemail_seek_handle_disabled.xml b/res/drawable/ic_voicemail_seek_handle_disabled.xml
new file mode 100644
index 0000000..1262808
--- /dev/null
+++ b/res/drawable/ic_voicemail_seek_handle_disabled.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2015 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
+  -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+        android:src="@drawable/ic_handle"
+        android:autoMirrored="true"
+        android:tint="@color/voicemail_icon_disabled_tint" >
+</bitmap>
\ No newline at end of file
diff --git a/res/drawable/oval_ripple.xml b/res/drawable/oval_ripple.xml
new file mode 100644
index 0000000..0022d26
--- /dev/null
+++ b/res/drawable/oval_ripple.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+        android:color="?android:attr/colorControlHighlight" >
+    <item>
+        <shape android:shape="oval">
+            <solid android:color="#fff" />
+        </shape>
+    </item>
+</ripple>
diff --git a/res/drawable/overflow_menu.xml b/res/drawable/overflow_menu.xml
new file mode 100644
index 0000000..0467d6b
--- /dev/null
+++ b/res/drawable/overflow_menu.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+        android:src="@drawable/ic_overflow_menu"
+        android:autoMirrored="true"
+        android:tint="@color/actionbar_icon_color" />
diff --git a/res/drawable/rounded_corner.xml b/res/drawable/rounded_corner.xml
new file mode 100644
index 0000000..fb8f4f5
--- /dev/null
+++ b/res/drawable/rounded_corner.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle" >
+    <solid android:color="@color/searchbox_background_color" />
+    <corners android:radius="2dp" />
+</shape>
diff --git a/res/drawable/seekbar_drawable.xml b/res/drawable/seekbar_drawable.xml
new file mode 100644
index 0000000..96bbee3
--- /dev/null
+++ b/res/drawable/seekbar_drawable.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="true">
+        <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+          <item android:id="@android:id/background">
+            <shape android:shape="line">
+              <stroke
+                android:width="2dip"
+                android:color="@color/voicemail_playback_seek_bar_yet_to_play"
+                />
+            </shape>
+          </item>
+          <!-- I am not defining a secondary progress colour - we don't use it. -->
+          <item android:id="@android:id/progress">
+            <clip>
+              <shape android:shape="line">
+                <stroke
+                  android:width="2dip"
+                  android:color="@color/voicemail_playback_seek_bar_already_played"
+                  />
+              </shape>
+            </clip>
+          </item>
+        </layer-list>
+    </item>
+    <item>
+        <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+          <item android:id="@android:id/background">
+            <shape android:shape="line">
+              <stroke
+                android:width="2dip"
+                android:color="@color/voicemail_playback_seek_bar_yet_to_play"
+                />
+            </shape>
+          </item>
+          <!-- I am not defining a secondary progress colour - we don't use it. -->
+          <item android:id="@android:id/progress">
+            <clip>
+              <shape android:shape="line">
+                <stroke
+                  android:width="2dip"
+                  android:color="@color/voicemail_playback_seek_bar_yet_to_play"
+                  />
+              </shape>
+            </clip>
+          </item>
+        </layer-list>
+    </item>
+</selector>
diff --git a/res/drawable/shadow_fade_left.xml b/res/drawable/shadow_fade_left.xml
new file mode 100644
index 0000000..cb87cf5
--- /dev/null
+++ b/res/drawable/shadow_fade_left.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle" >
+    <gradient
+        android:type="linear"
+        android:startColor="@null"
+        android:endColor="#1a000000"
+        android:angle="0"/>
+</shape>
diff --git a/res/drawable/shadow_fade_up.xml b/res/drawable/shadow_fade_up.xml
new file mode 100644
index 0000000..e961c86
--- /dev/null
+++ b/res/drawable/shadow_fade_up.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle" >
+    <gradient
+        android:type="linear"
+        android:startColor="#1a000000"
+        android:endColor="@null"
+        android:angle="90"/>
+</shape>
\ No newline at end of file
diff --git a/res/layout-land/dialpad_fragment.xml b/res/layout-land/dialpad_fragment.xml
new file mode 100644
index 0000000..680c2d7
--- /dev/null
+++ b/res/layout-land/dialpad_fragment.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<view class="com.android.dialer.dialpad.DialpadFragment$DialpadSlidingRelativeLayout"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+
+        <!-- spacer view -->
+        <View
+            android:id="@+id/spacer"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:background="#00000000" />
+
+        <!-- Dialpad shadow -->
+        <View
+            android:layout_width="@dimen/shadow_length"
+            android:layout_height="match_parent"
+            android:background="@drawable/shadow_fade_left" />
+
+        <RelativeLayout
+            android:layout_height="match_parent"
+            android:layout_width="0dp"
+            android:layout_weight="1">
+
+            <include layout="@layout/dialpad_view"
+                 android:layout_height="match_parent"
+                 android:layout_width="match_parent" />
+
+            <!-- "Dialpad chooser" UI, shown only when the user brings up the
+                     Dialer while a call is already in progress.
+                     When this UI is visible, the other Dialer elements
+                     (the textfield/button and the dialpad) are hidden. -->
+
+            <ListView android:id="@+id/dialpadChooser"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="@color/background_dialer_light"
+                    android:visibility="gone" />
+
+            <!-- Margin bottom and alignParentBottom don't work well together, so use a Space instead. -->
+            <Space android:id="@+id/dialpad_floating_action_button_margin_bottom"
+                android:layout_width="match_parent"
+                android:layout_height="8dp"
+                android:layout_alignParentBottom="true" />
+
+            <FrameLayout
+                android:id="@+id/dialpad_floating_action_button_container"
+                android:background="@drawable/fab_green"
+                android:layout_width="@dimen/floating_action_button_width"
+                android:layout_height="@dimen/floating_action_button_height"
+                android:layout_above="@id/dialpad_floating_action_button_margin_bottom"
+                android:layout_centerHorizontal="true">
+
+                <ImageButton
+                    android:id="@+id/dialpad_floating_action_button"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/floating_action_button"
+                    android:contentDescription="@string/description_dial_button"
+                    android:src="@drawable/fab_ic_call"/>
+
+            </FrameLayout>
+
+        </RelativeLayout>
+
+    </LinearLayout>
+</view>
diff --git a/res/layout/account_filter_header_for_phone_favorite.xml b/res/layout/account_filter_header_for_phone_favorite.xml
new file mode 100644
index 0000000..b55210a
--- /dev/null
+++ b/res/layout/account_filter_header_for_phone_favorite.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- Layout showing the type of account filter for phone favorite screen
+     (or, new phone "all" screen).
+     This is very similar to account_filter_header.xml but different in its
+     top padding. -->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/account_filter_header_container"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:paddingTop="8dip"
+    android:layout_marginStart="@dimen/contact_browser_list_header_left_margin"
+    android:layout_marginEnd="@dimen/contact_browser_list_header_right_margin"
+    android:background="?android:attr/selectableItemBackground"
+    android:visibility="gone">
+    <TextView
+        android:id="@+id/account_filter_header"
+        style="@style/ContactListSeparatorTextViewStyle"
+        android:paddingStart="@dimen/contact_browser_list_item_text_indent" />
+    <TextView
+        android:id="@+id/contact_list_all_empty"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textColor="?android:attr/textColorSecondary"
+        android:paddingStart="8dip"
+        android:paddingTop="@dimen/contact_phone_list_empty_description_padding"
+        android:paddingBottom="@dimen/contact_phone_list_empty_description_padding"
+        android:textSize="@dimen/contact_phone_list_empty_description_size"
+        android:text="@string/listFoundAllContactsZero"
+        android:visibility="gone"/>
+</LinearLayout>
diff --git a/res/layout/all_contacts_activity.xml b/res/layout/all_contacts_activity.xml
new file mode 100644
index 0000000..50cba1e
--- /dev/null
+++ b/res/layout/all_contacts_activity.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:id="@+id/all_contacts_frame">
+    <fragment android:name="com.android.dialer.list.AllContactsFragment"
+              android:id="@+id/all_contacts_fragment"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent" />
+</FrameLayout>
diff --git a/res/layout/all_contacts_fragment.xml b/res/layout/all_contacts_fragment.xml
new file mode 100644
index 0000000..2ca013a
--- /dev/null
+++ b/res/layout/all_contacts_fragment.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/pinned_header_list_layout"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <!-- Shown only when an Account filter is set.
+         - paddingTop should be here to show "shade" effect correctly. -->
+    <!-- TODO: Remove the filter header. -->
+    <include layout="@layout/account_filter_header" />
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1" >
+        <view
+            class="com.android.contacts.common.list.PinnedHeaderListView"
+            style="@style/DialtactsTheme"
+            android:id="@android:id/list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginStart="?attr/contact_browser_list_padding_left"
+            android:layout_marginEnd="?attr/contact_browser_list_padding_right"
+            android:paddingTop="18dp"
+            android:fastScrollEnabled="true"
+            android:fadingEdge="none"
+            android:nestedScrollingEnabled="true" />
+
+        <com.android.dialer.widget.EmptyContentView
+            android:id="@+id/empty_list_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:visibility="gone"/>
+
+    </FrameLayout>
+</LinearLayout>
diff --git a/res/layout/blocked_number_footer.xml b/res/layout/blocked_number_footer.xml
new file mode 100644
index 0000000..17425c8
--- /dev/null
+++ b/res/layout/blocked_number_footer.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:focusable="false">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:padding="@dimen/blocked_number_container_padding"
+        android:background="@android:color/white"
+        android:focusable="true">
+
+      <TextView android:id="@+id/blocked_number_footer_textview"
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:textColor="@color/blocked_number_secondary_text_color"
+          android:textSize="@dimen/blocked_number_settings_description_text_size"
+          android:text="@string/block_number_footer_message_vvm"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/blocked_number_fragment.xml b/res/layout/blocked_number_fragment.xml
new file mode 100644
index 0000000..4bc2085
--- /dev/null
+++ b/res/layout/blocked_number_fragment.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/blocked_number_fragment"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/blocked_number_background">
+
+    <ListView android:id="@id/android:list"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:divider="@null"
+        android:headerDividersEnabled="false" />
+
+</LinearLayout>
diff --git a/res/layout/blocked_number_header.xml b/res/layout/blocked_number_header.xml
new file mode 100644
index 0000000..0af9429
--- /dev/null
+++ b/res/layout/blocked_number_header.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:focusable="false"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:id="@+id/blocked_numbers_disabled_for_emergency"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="27dp"
+        android:paddingBottom="29dp"
+        android:paddingStart="@dimen/blocked_number_container_padding"
+        android:paddingEnd="44dp"
+        android:background="@color/blocked_number_disabled_emergency_background_color"
+        android:focusable="true"
+        android:orientation="vertical"
+        android:visibility="gone">
+
+        <TextView
+            style="@style/BlockedNumbersDescriptionTextStyle"
+            android:textStyle="bold"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/blocked_numbers_disabled_emergency_header_label"/>
+
+        <TextView
+            style="@style/BlockedNumbersDescriptionTextStyle"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/blocked_numbers_disabled_emergency_desc"/>
+
+    </LinearLayout>
+
+    <android.support.v7.widget.CardView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        card_view:cardCornerRadius="0dp">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@android:color/white"
+            android:focusable="true"
+            android:orientation="vertical">
+
+            <TextView
+                android:id="@+id/textView"
+                style="@android:style/TextAppearance.Material.Subhead"
+                android:layout_width="wrap_content"
+                android:layout_height="48dp"
+                android:paddingStart="@dimen/blocked_number_container_padding"
+                android:gravity="center_vertical"
+                android:text="@string/block_list"
+                android:textColor="@color/blocked_number_header_color"/>
+
+            <RelativeLayout
+                android:id="@+id/import_settings"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:visibility="gone">
+
+                <TextView
+                    android:id="@+id/import_description"
+                    style="@style/BlockedNumbersDescriptionTextStyle"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:paddingTop="11dp"
+                    android:paddingBottom="27dp"
+                    android:paddingStart="@dimen/blocked_number_container_padding"
+                    android:paddingEnd="@dimen/blocked_number_container_padding"
+                    android:text="@string/blocked_call_settings_import_description"
+                    android:textColor="@color/secondary_text_color"
+                    android:textSize="@dimen/blocked_number_settings_description_text_size"/>
+
+                <Button
+                    android:id="@+id/import_button"
+                    style="@style/DialerFlatButtonStyle"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="@dimen/blocked_number_container_padding"
+                    android:layout_alignParentEnd="true"
+                    android:layout_below="@id/import_description"
+                    android:text="@string/blocked_call_settings_import_button"/>
+
+                <Button
+                    android:id="@+id/view_numbers_button"
+                    style="@style/DialerFlatButtonStyle"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="8dp"
+                    android:layout_below="@id/import_description"
+                    android:layout_toStartOf="@id/import_button"
+                    android:text="@string/blocked_call_settings_view_numbers_button"/>
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginTop="8dp"
+                    android:layout_below="@id/import_button"
+                    android:background="@color/divider_line_color"/>
+
+            </RelativeLayout>
+
+            <LinearLayout
+                android:id="@+id/add_number_linear_layout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingTop="@dimen/blocked_number_add_top_margin"
+                android:paddingBottom="@dimen/blocked_number_add_bottom_margin"
+                android:paddingStart="@dimen/blocked_number_horizontal_margin"
+                android:background="?android:attr/selectableItemBackground"
+                android:baselineAligned="false"
+                android:clickable="true"
+                android:contentDescription="@string/addBlockedNumber"
+                android:focusable="true"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:id="@+id/add_number_icon"
+                    android:layout_width="@dimen/contact_photo_size"
+                    android:layout_height="@dimen/contact_photo_size"
+                    android:importantForAccessibility="no"/>
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:layout_marginStart="@dimen/blocked_number_horizontal_margin"
+                    android:gravity="center_vertical"
+                    android:orientation="vertical">
+
+                    <TextView
+                        android:id="@+id/add_number_textview"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:includeFontPadding="false"
+                        android:text="@string/addBlockedNumber"
+                        android:textColor="@color/blocked_number_primary_text_color"
+                        android:textSize="@dimen/blocked_number_primary_text_size"/>
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <View
+                android:id="@+id/blocked_number_list_divider"
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginStart="72dp"
+                android:background="@color/divider_line_color"/>
+
+        </LinearLayout>
+
+    </android.support.v7.widget.CardView>
+
+</LinearLayout>
diff --git a/res/layout/blocked_number_item.xml b/res/layout/blocked_number_item.xml
new file mode 100644
index 0000000..a4997f2
--- /dev/null
+++ b/res/layout/blocked_number_item.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/caller_information"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingStart="@dimen/blocked_number_horizontal_margin"
+    android:baselineAligned="false"
+    android:orientation="horizontal"
+    android:focusable="true"
+    android:gravity="center_vertical"
+    android:background="@android:color/white">
+
+    <QuickContactBadge
+        android:id="@+id/quick_contact_photo"
+        android:layout_width="@dimen/contact_photo_size"
+        android:layout_height="@dimen/contact_photo_size"
+        android:focusable="true"
+        android:layout_marginTop="@dimen/blocked_number_top_margin"
+        android:layout_marginBottom="@dimen/blocked_number_bottom_margin"/>
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_height="match_parent"
+        android:gravity="center_vertical"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:layout_marginStart="@dimen/blocked_number_horizontal_margin">
+
+        <TextView
+            android:id="@+id/caller_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/blocked_number_primary_text_color"
+            android:textSize="@dimen/blocked_number_primary_text_size"
+            android:includeFontPadding="false"
+            android:singleLine="true"/>
+
+        <TextView
+            android:id="@+id/caller_number"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@color/blocked_number_secondary_text_color"
+            android:textSize="@dimen/blocked_number_settings_description_text_size"
+            android:singleLine="true" />
+    </LinearLayout>
+
+    <ImageView
+        android:id="@+id/delete_button"
+        android:layout_width="@dimen/blocked_number_delete_icon_size"
+        android:layout_height="@dimen/blocked_number_delete_icon_size"
+        android:layout_marginEnd="24dp"
+        android:background="?android:attr/selectableItemBackgroundBorderless"
+        android:src="@drawable/ic_remove"
+        android:scaleType="center"
+        android:tint="@color/blocked_number_icon_tint"
+        android:contentDescription="@string/description_blocked_number_list_delete" />
+
+</LinearLayout>
diff --git a/res/layout/blocked_numbers_activity.xml b/res/layout/blocked_numbers_activity.xml
new file mode 100644
index 0000000..d28eaf8
--- /dev/null
+++ b/res/layout/blocked_numbers_activity.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/blocked_numbers_activity_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_marginTop="@dimen/action_bar_height">
+</FrameLayout>
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
new file mode 100644
index 0000000..7d91248
--- /dev/null
+++ b/res/layout/call_detail.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/call_detail"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/background_dialer_call_log" >
+
+    <!--
+      The list view is under everything.
+      It contains a first header element which is hidden under the controls UI.
+      When scrolling, the controls move up until the name bar hits the top.
+      -->
+    <ListView
+        android:id="@+id/history"
+        android:layout_width="match_parent"
+        android:layout_height="fill_parent" />
+
+</FrameLayout>
diff --git a/res/layout/call_detail_footer.xml b/res/layout/call_detail_footer.xml
new file mode 100644
index 0000000..6ee76e6
--- /dev/null
+++ b/res/layout/call_detail_footer.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/divider_line_thickness"
+        android:background="@color/call_log_action_divider" />
+
+    <TextView android:id="@+id/call_detail_action_block"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/action_block_number"
+        android:drawableStart="@drawable/ic_call_detail_block"
+        style="@style/CallDetailActionItemStyle" />
+
+    <TextView android:id="@+id/call_detail_action_copy"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/action_copy_number_text"
+        android:drawableStart="@drawable/ic_call_detail_content_copy"
+        style="@style/CallDetailActionItemStyle" />
+
+    <TextView android:id="@+id/call_detail_action_edit_before_call"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/action_edit_number_before_call"
+        android:drawableStart="@drawable/ic_call_detail_edit"
+        android:visibility="gone"
+        style="@style/CallDetailActionItemStyle" />
+
+    <TextView android:id="@+id/call_detail_action_report"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/action_report_number"
+        android:drawableStart="@drawable/ic_call_detail_report"
+        android:visibility="gone"
+        style="@style/CallDetailActionItemStyle" />
+
+</LinearLayout>
diff --git a/res/layout/call_detail_header.xml b/res/layout/call_detail_header.xml
new file mode 100644
index 0000000..6eceb80
--- /dev/null
+++ b/res/layout/call_detail_header.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/caller_information"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingStart="@dimen/call_detail_horizontal_margin"
+    android:paddingTop="@dimen/call_detail_top_margin"
+    android:paddingBottom="@dimen/call_detail_bottom_margin"
+    android:baselineAligned="false"
+    android:orientation="horizontal"
+    android:elevation="@dimen/call_detail_elevation"
+    android:focusable="true"
+    android:background="@color/background_dialer_white" >
+
+    <QuickContactBadge
+        android:id="@+id/quick_contact_photo"
+        android:layout_width="@dimen/contact_photo_size"
+        android:layout_height="@dimen/contact_photo_size"
+        android:layout_alignParentStart="true"
+        android:layout_gravity="top"
+        android:layout_marginTop="3dp"
+        android:focusable="true" />
+
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:gravity="center_vertical"
+        android:layout_marginStart="@dimen/call_detail_horizontal_margin">
+
+        <TextView
+            android:id="@+id/caller_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="?attr/call_log_primary_text_color"
+            android:textSize="@dimen/call_log_primary_text_size"
+            android:includeFontPadding="false"
+            android:layout_marginTop="2dp"
+            android:layout_marginBottom="3dp"
+            android:singleLine="true" />
+
+        <TextView
+            android:id="@+id/caller_number"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="?attr/call_log_secondary_text_color"
+            android:textSize="@dimen/call_log_detail_text_size"
+            android:layout_marginBottom="1dp"
+            android:singleLine="true" />
+
+        <TextView
+            android:id="@+id/phone_account_label"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="?attr/call_log_secondary_text_color"
+            android:textSize="@dimen/call_log_detail_text_size"
+            android:singleLine="true"
+            android:visibility="gone" />
+
+    </LinearLayout>
+
+    <ImageView
+        android:id="@+id/call_back_button"
+        android:layout_width="@dimen/call_log_list_item_primary_action_dimen"
+        android:layout_height="@dimen/call_log_list_item_primary_action_dimen"
+        android:layout_marginEnd="16dp"
+        android:background="?android:attr/selectableItemBackgroundBorderless"
+        android:src="@drawable/ic_call_24dp"
+        android:scaleType="center"
+        android:tint="@color/call_log_list_item_primary_action_icon_tint"
+        android:contentDescription="@string/description_call_log_call_action"
+        android:visibility="gone" />
+
+</LinearLayout>
diff --git a/res/layout/call_detail_history_item.xml b/res/layout/call_detail_history_item.xml
new file mode 100644
index 0000000..10d9605
--- /dev/null
+++ b/res/layout/call_detail_history_item.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingTop="@dimen/call_log_inner_margin"
+    android:paddingBottom="@dimen/call_log_inner_margin"
+    android:paddingStart="@dimen/call_detail_horizontal_margin"
+    android:paddingEnd="@dimen/call_log_outer_margin"
+    android:orientation="vertical" >
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal" >
+        <view
+            class="com.android.dialer.calllog.CallTypeIconsView"
+            android:id="@+id/call_type_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical" />
+        <TextView
+            android:id="@+id/call_type_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/call_log_icon_margin"
+            android:textColor="?attr/call_log_primary_text_color"
+            android:textSize="@dimen/call_log_primary_text_size" />
+    </LinearLayout>
+    <TextView
+        android:id="@+id/date"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="?attr/call_log_secondary_text_color"
+        android:textSize="@dimen/call_log_detail_text_size" />
+    <TextView
+        android:id="@+id/duration"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="?attr/call_log_secondary_text_color"
+        android:textSize="@dimen/call_log_detail_text_size" />
+</LinearLayout>
diff --git a/res/layout/call_log_activity.xml b/res/layout/call_log_activity.xml
new file mode 100644
index 0000000..0109df7
--- /dev/null
+++ b/res/layout/call_log_activity.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:id="@+id/calllog_frame"
+    android:orientation="vertical">
+    <com.android.contacts.common.list.ViewPagerTabs
+        android:id="@+id/viewpager_header"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/tab_height"
+        android:textAllCaps="true"
+        android:orientation="horizontal"
+        android:layout_gravity="top"
+        android:elevation="@dimen/tab_elevation"
+        style="@style/DialtactsActionBarTabTextStyle" />
+    <android.support.v4.view.ViewPager
+        android:id="@+id/call_log_pager"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+</LinearLayout>
diff --git a/res/layout/call_log_fragment.xml b/res/layout/call_log_fragment.xml
new file mode 100644
index 0000000..aad7d8e
--- /dev/null
+++ b/res/layout/call_log_fragment.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- Layout parameters are set programmatically. -->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/background_dialer_call_log">
+
+    <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/background_dialer_call_log"
+        android:clipToPadding="false"
+        android:paddingStart="@dimen/call_log_horizontal_margin"
+        android:paddingEnd="@dimen/call_log_horizontal_margin"
+        android:paddingBottom="@dimen/floating_action_button_list_bottom_padding" />
+
+    <com.android.dialer.widget.EmptyContentView
+        android:id="@+id/empty_list_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:visibility="gone" />
+
+</FrameLayout>
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
new file mode 100644
index 0000000..469e72a
--- /dev/null
+++ b/res/layout/call_log_list_item.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/call_log_list_item"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <!-- Day group heading. Used to show a "today", "yesterday", "last week" or "other" heading
+         above a group of call log entries. -->
+    <TextView
+        android:id="@+id/call_log_day_group_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="start"
+        android:layout_marginStart="@dimen/call_log_start_margin"
+        android:layout_marginEnd="@dimen/call_log_outer_margin"
+        android:fontFamily="sans-serif-medium"
+        android:textColor="@color/call_log_day_group_heading_color"
+        android:textSize="@dimen/call_log_day_group_heading_size"
+        android:paddingTop="@dimen/call_log_day_group_padding_top"
+        android:paddingBottom="@dimen/call_log_day_group_padding_bottom" />
+
+    <android.support.v7.widget.CardView
+        android:id="@+id/call_log_row"
+        style="@style/CallLogCardStyle">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <!-- Primary area containing the contact badge and caller information -->
+            <LinearLayout
+                android:id="@+id/primary_action_view"
+                android:background="?android:attr/selectableItemBackground"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingStart="@dimen/call_log_start_margin"
+                android:paddingEnd="@dimen/call_log_outer_margin"
+                android:paddingTop="@dimen/call_log_vertical_padding"
+                android:paddingBottom="@dimen/call_log_vertical_padding"
+                android:orientation="horizontal"
+                android:gravity="center_vertical"
+                android:focusable="true"
+                android:nextFocusRight="@+id/call_back_action"
+                android:nextFocusLeft="@+id/quick_contact_photo" >
+
+                <QuickContactBadge
+                    android:id="@+id/quick_contact_photo"
+                    android:layout_width="@dimen/contact_photo_size"
+                    android:layout_height="@dimen/contact_photo_size"
+                    android:paddingTop="2dp"
+                    android:nextFocusRight="@id/primary_action_view"
+                    android:layout_gravity="top"
+                    android:focusable="true" />
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center_vertical"
+                    android:layout_marginStart="@dimen/call_log_list_item_info_margin_start">
+
+                    <TextView
+                        android:id="@+id/name"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/call_log_name_margin_bottom"
+                        android:layout_marginEnd="@dimen/call_log_icon_margin"
+                        android:textColor="@color/call_log_primary_color"
+                        android:textSize="@dimen/call_log_primary_text_size"
+                        android:singleLine="true" />
+
+                    <LinearLayout
+                        android:id="@+id/call_type"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <view
+                            class="com.android.dialer.calllog.CallTypeIconsView"
+                            android:id="@+id/call_type_icons"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginEnd="@dimen/call_log_icon_margin"
+                            android:layout_gravity="center_vertical" />
+
+                        <ImageView android:id="@+id/work_profile_icon"
+                            android:src="@drawable/ic_work_profile"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginEnd="@dimen/call_log_icon_margin"
+                            android:scaleType="center"
+                            android:visibility="gone" />
+
+                        <TextView
+                            android:id="@+id/call_location_and_date"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginEnd="@dimen/call_log_icon_margin"
+                            android:layout_gravity="center_vertical"
+                            android:textColor="@color/call_log_detail_color"
+                            android:textSize="@dimen/call_log_detail_text_size"
+                            android:singleLine="true" />
+
+                    </LinearLayout>
+
+                    <TextView
+                        android:id="@+id/call_account_label"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="@dimen/call_log_icon_margin"
+                        android:textColor="?attr/call_log_secondary_text_color"
+                        android:textSize="@dimen/call_log_detail_text_size"
+                        android:visibility="gone"
+                        android:singleLine="true" />
+
+                    <TextView
+                      android:id="@+id/voicemail_transcription"
+                      android:layout_width="wrap_content"
+                      android:layout_height="wrap_content"
+                      android:layout_marginTop="@dimen/call_log_icon_margin"
+                      android:textColor="@color/call_log_voicemail_transcript_color"
+                      android:textSize="@dimen/call_log_voicemail_transcription_text_size"
+                      android:ellipsize="marquee"
+                      android:visibility="gone"
+                      android:singleLine="false"
+                      android:maxLines="10"/>
+
+                </LinearLayout>
+
+                <ImageView
+                    android:id="@+id/primary_action_button"
+                    android:layout_width="@dimen/call_log_list_item_primary_action_dimen"
+                    android:layout_height="@dimen/call_log_list_item_primary_action_dimen"
+                    android:layout_gravity="center_vertical"
+                    android:layout_marginEnd="@dimen/call_log_icon_margin"
+                    android:background="?android:attr/selectableItemBackgroundBorderless"
+                    android:scaleType="center"
+                    android:tint="@color/call_log_list_item_primary_action_icon_tint"
+                    android:visibility="gone" />
+
+            </LinearLayout>
+
+            <!-- Viewstub with additional expandable actions for a call log entry -->
+            <ViewStub android:id="@+id/call_log_entry_actions_stub"
+                android:inflatedId="@+id/call_log_entry_actions"
+                android:layout="@layout/call_log_list_item_actions"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="bottom" />
+
+        </LinearLayout>
+
+    </android.support.v7.widget.CardView>
+
+</LinearLayout>
diff --git a/res/layout/call_log_list_item_actions.xml b/res/layout/call_log_list_item_actions.xml
new file mode 100644
index 0000000..63385ee
--- /dev/null
+++ b/res/layout/call_log_list_item_actions.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/call_log_action_container"
+    android:gravity="center_vertical"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:visibility="visible"
+    android:importantForAccessibility="1">
+
+    <com.android.dialer.voicemail.VoicemailPlaybackLayout
+        android:id="@+id/voicemail_playback_layout"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/call_log_action_divider" />
+
+    <LinearLayout
+        android:id="@+id/call_action"
+        android:paddingTop="@dimen/call_log_actions_top_padding"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_call_24dp" />
+
+        <LinearLayout
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:orientation="vertical"
+          android:gravity="center_vertical">
+            <TextView
+                android:id="@+id/call_action_text"
+                style="@style/CallLogActionTextStyle"
+                android:text="@string/description_call_log_call_action" />
+
+            <TextView
+              android:id="@+id/call_type_or_location_text"
+              style="@style/CallLogActionSupportTextStyle"/>
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/video_call_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_videocam_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/call_log_action_video_call" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/create_new_contact_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_person_add_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/search_shortcut_create_new_contact" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/add_to_existing_contact_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_person_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/search_shortcut_add_to_contact" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/send_message_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_message_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/call_log_action_send_message" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/call_with_note_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_call_note_white_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/call_with_a_note" />
+
+    </LinearLayout>
+
+    <ViewStub
+        android:id="@+id/spam_actions_container"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+
+    <LinearLayout
+        android:id="@+id/details_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_info_outline_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/call_log_action_details" />
+
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/dialpad_chooser_list_item.xml b/res/layout/dialpad_chooser_list_item.xml
new file mode 100644
index 0000000..9a49036
--- /dev/null
+++ b/res/layout/dialpad_chooser_list_item.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 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.
+-->
+
+<!-- Layout of a single item in the Dialer's "Dialpad chooser" UI. -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ImageView android:id="@+id/icon"
+        android:layout_width="64dp"
+        android:layout_height="64dp"
+        android:scaleType="center" />
+
+    <TextView android:id="@+id/text"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textColor="@color/dialpad_primary_text_color"
+        android:layout_gravity="center_vertical"
+        android:layout_width="0dip"
+        android:layout_weight="1"
+        android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/res/layout/dialpad_fragment.xml b/res/layout/dialpad_fragment.xml
new file mode 100644
index 0000000..21cb586
--- /dev/null
+++ b/res/layout/dialpad_fragment.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<view class="com.android.dialer.dialpad.DialpadFragment$DialpadSlidingRelativeLayout"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <!-- spacer view -->
+        <View
+            android:id="@+id/spacer"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:background="#00000000" />
+        <!-- Dialpad shadow -->
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/shadow_length"
+            android:background="@drawable/shadow_fade_up" />
+        <include layout="@layout/dialpad_view" />
+        <!-- "Dialpad chooser" UI, shown only when the user brings up the
+                 Dialer while a call is already in progress.
+                 When this UI is visible, the other Dialer elements
+                 (the textfield/button and the dialpad) are hidden. -->
+        <ListView android:id="@+id/dialpadChooser"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/background_dialer_light"
+                android:visibility="gone" />
+
+    </LinearLayout>
+
+    <!-- Margin bottom and alignParentBottom don't work well together, so use a Space instead. -->
+    <Space android:id="@+id/dialpad_floating_action_button_margin_bottom"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/floating_action_button_margin_bottom"
+        android:layout_alignParentBottom="true" />
+
+    <FrameLayout
+        android:id="@+id/dialpad_floating_action_button_container"
+        android:background="@drawable/fab_green"
+        android:layout_width="@dimen/floating_action_button_width"
+        android:layout_height="@dimen/floating_action_button_height"
+        android:layout_above="@id/dialpad_floating_action_button_margin_bottom"
+        android:layout_centerHorizontal="true">
+
+        <ImageButton
+            android:id="@+id/dialpad_floating_action_button"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@drawable/floating_action_button"
+            android:contentDescription="@string/description_dial_button"
+            android:src="@drawable/fab_ic_call"/>
+
+    </FrameLayout>
+
+</view>
diff --git a/res/layout/dialtacts_activity.xml b/res/layout/dialtacts_activity.xml
new file mode 100644
index 0000000..782d4f3
--- /dev/null
+++ b/res/layout/dialtacts_activity.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<android.support.design.widget.CoordinatorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/dialtacts_mainlayout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:focusable="true"
+    android:focusableInTouchMode="true"
+    android:clipChildren="false"
+    android:background="@color/background_dialer_light">
+
+    <FrameLayout
+        android:id="@+id/dialtacts_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:clipChildren="false">
+        <!-- The main contacts grid -->
+        <FrameLayout
+            android:layout_height="match_parent"
+            android:layout_width="match_parent"
+            android:id="@+id/dialtacts_frame"
+            android:clipChildren="false" />
+    </FrameLayout>
+
+    <FrameLayout
+        android:id="@+id/floating_action_button_container"
+        android:background="@drawable/fab_blue"
+        android:layout_width="@dimen/floating_action_button_width"
+        android:layout_height="@dimen/floating_action_button_height"
+        android:layout_marginBottom="@dimen/floating_action_button_margin_bottom"
+        android:layout_gravity="center_horizontal|bottom"
+        app:layout_behavior="com.android.dialer.FloatingActionButtonBehavior">
+
+        <ImageButton
+            android:id="@+id/floating_action_button"
+            android:background="@drawable/floating_action_button"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:contentDescription="@string/action_menu_dialpad_button"
+            android:src="@drawable/fab_ic_dial"/>
+
+    </FrameLayout>
+
+    <!-- Host container for the contact tile drag shadow -->
+    <FrameLayout
+        android:id="@+id/activity_overlay"
+        android:layout_height="match_parent"
+        android:layout_width="match_parent">
+        <ImageView
+            android:id="@+id/contact_tile_drag_shadow_overlay"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:visibility="gone"
+            android:importantForAccessibility="no" />
+    </FrameLayout>
+
+</android.support.design.widget.CoordinatorLayout>
diff --git a/res/layout/empty_content_view.xml b/res/layout/empty_content_view.xml
new file mode 100644
index 0000000..97ac4c7
--- /dev/null
+++ b/res/layout/empty_content_view.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+    <ImageView
+        android:id="@+id/emptyListViewImage"
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:gravity="center_horizontal" />
+
+    <TextView
+        android:id="@+id/emptyListViewMessage"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center_horizontal|top"
+        android:textSize="@dimen/empty_list_message_text_size"
+        android:textColor="@color/empty_list_text_color"
+        android:paddingRight="16dp"
+        android:paddingLeft="16dp"
+        android:paddingTop="8dp"
+        android:paddingBottom="8dp" />
+
+    <TextView
+        android:id="@+id/emptyListViewAction"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:gravity="center_horizontal"
+        android:layout_gravity="center_horizontal"
+        android:paddingRight="16dp"
+        android:paddingLeft="16dp"
+        android:paddingTop="8dp"
+        android:paddingBottom="8dp"
+        android:background="?android:attr/selectableItemBackground"
+        android:clickable="true"
+        style="@style/TextActionStyle" />
+
+    <Space
+        android:layout_width="match_parent"
+        android:layout_height="40dp" />
+
+</merge>
diff --git a/res/layout/keyguard_preview.xml b/res/layout/keyguard_preview.xml
new file mode 100644
index 0000000..16243eb
--- /dev/null
+++ b/res/layout/keyguard_preview.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:orientation="vertical"
+        android:layout_height="match_parent"
+        android:layout_width="match_parent">
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="25dp"
+        android:background="@color/dialer_theme_color_dark" />
+    <View
+        android:layout_width="match_parent"
+        android:layout_weight="1"
+        android:layout_height="0dp"
+        android:background="#ffffff" />
+</LinearLayout>
diff --git a/res/layout/lists_fragment.xml b/res/layout/lists_fragment.xml
new file mode 100644
index 0000000..1942a96
--- /dev/null
+++ b/res/layout/lists_fragment.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/lists_frame"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:animateLayoutChanges="true" >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <!-- TODO: Apply background color to ActionBar instead of a FrameLayout. For now, this is
+             the easiest way to preserve correct pane scrolling and searchbar collapse/expand
+             behaviors. -->
+        <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/action_bar_height_large"
+            android:background="@color/actionbar_background_color"
+            android:elevation="@dimen/tab_elevation" />
+
+        <com.android.contacts.common.list.ViewPagerTabs
+            android:id="@+id/lists_pager_header"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/tab_height"
+            android:textAllCaps="true"
+            android:orientation="horizontal"
+            android:layout_gravity="top"
+            android:elevation="@dimen/tab_elevation"
+            style="@style/DialtactsActionBarTabTextStyle" />
+
+        <android.support.v4.view.ViewPager
+            android:id="@+id/lists_pager"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1" />
+
+    </LinearLayout>
+
+    <com.android.dialer.list.RemoveView
+        android:id="@+id/remove_view"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/tab_height"
+        android:layout_marginTop="@dimen/action_bar_height_large"
+        android:layout_alignParentTop="true" >
+
+        <LinearLayout
+            android:id="@+id/remove_view_content"
+            android:layout_height="match_parent"
+            android:layout_width="match_parent"
+            android:background="@color/actionbar_background_color"
+            android:gravity="center"
+            android:orientation="horizontal"
+            android:visibility="gone" >
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="8dp"
+                android:layout_marginBottom="8dp"
+                android:id="@+id/remove_view_icon"
+                android:src="@drawable/ic_remove"
+                android:contentDescription="@string/remove_contact"
+                android:tint="@color/remove_text_color" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/remove_view_text"
+                android:textSize="@dimen/remove_text_size"
+                android:textColor="@color/remove_text_color"
+                android:text="@string/remove_contact" />
+
+        </LinearLayout>
+
+    </com.android.dialer.list.RemoveView >
+
+</FrameLayout>
diff --git a/res/layout/phone_disambig_item.xml b/res/layout/phone_disambig_item.xml
new file mode 100755
index 0000000..27bbda1
--- /dev/null
+++ b/res/layout/phone_disambig_item.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<view class="com.android.contacts.common.widget.ActivityTouchLinearLayout"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:paddingStart="30dip"
+    android:paddingEnd="30dip"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:gravity="center_vertical">
+
+    <TextView
+        android:id="@android:id/text1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textStyle="bold"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
+    <!-- Phone number should be displayed ltr -->
+    <TextView
+        android:id="@android:id/text2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="-4dip"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textDirection="ltr" />
+
+</view>
diff --git a/res/layout/phone_favorite_tile_view.xml b/res/layout/phone_favorite_tile_view.xml
new file mode 100644
index 0000000..8b00fba
--- /dev/null
+++ b/res/layout/phone_favorite_tile_view.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<view
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/contact_tile"
+    class="com.android.dialer.list.PhoneFavoriteSquareTileView"
+    android:paddingEnd="@dimen/contact_tile_divider_width"
+    android:paddingBottom="@dimen/contact_tile_divider_width">
+
+    <RelativeLayout
+        android:id="@+id/contact_favorite_card"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:focusable="true" >
+
+        <com.android.contacts.common.widget.LayoutSuppressingImageView
+            android:id="@+id/contact_tile_image"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:scaleType="centerCrop" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="6" />
+            <View
+                android:id="@+id/shadow_overlay"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="4"
+                android:background="@drawable/shadow_contact_photo" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingStart="@dimen/contact_tile_text_side_padding"
+            android:paddingEnd="@dimen/contact_tile_text_side_padding"
+            android:paddingBottom="@dimen/contact_tile_text_bottom_padding"
+            android:layout_alignParentBottom="true"
+            android:orientation="vertical" >
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:gravity="center_vertical">
+                    <TextView
+                        android:id="@+id/contact_tile_name"
+                        android:layout_weight="1"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:textColor="@color/contact_tile_name_color"
+                        android:fontFamily="sans-serif-medium"
+                        android:singleLine="true"
+                        android:textSize="15sp"
+                        android:fadingEdge="horizontal"
+                        android:fadingEdgeLength="3dip"
+                        android:ellipsize="marquee"
+                        android:textAlignment="viewStart" />
+                    <ImageView
+                        android:id="@+id/contact_star_icon"
+                        android:layout_width="@dimen/favorites_star_icon_size"
+                        android:layout_height="@dimen/favorites_star_icon_size"
+                        android:layout_marginStart="3dp"
+                        android:src="@drawable/ic_star"
+                        android:visibility="gone" />
+                </LinearLayout>
+                <TextView
+                    android:id="@+id/contact_tile_phone_type"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center_vertical"
+                    android:textColor="@color/contact_tile_name_color"
+                    android:fontFamily="sans-serif"
+                    android:singleLine="true"
+                    android:textSize="11sp"
+                    android:fadingEdge="horizontal"
+                    android:fadingEdgeLength="3dip"
+                    android:ellipsize="marquee"
+                    android:textAlignment="viewStart" />
+        </LinearLayout>
+
+        <View
+            android:id="@+id/contact_tile_push_state"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:focusable="true"
+            android:nextFocusRight="@+id/contact_tile_secondary_button"
+            android:background="@drawable/item_background_material_dark" />
+
+        <ImageButton
+            android:id="@id/contact_tile_secondary_button"
+            android:src="@drawable/ic_more_vert_24dp"
+            android:background="@drawable/item_background_material_dark"
+            android:layout_height="@dimen/contact_tile_info_button_height_and_width"
+            android:layout_width="@dimen/contact_tile_info_button_height_and_width"
+            android:paddingLeft="4dp"
+            android:paddingRight="9dp"
+            android:paddingStart="4dp"
+            android:paddingEnd="4dp"
+            android:paddingTop="8dp"
+            android:paddingBottom="4dp"
+            android:layout_alignParentTop="true"
+            android:layout_alignParentRight="true"
+            android:layout_alignParentEnd="true"
+            android:scaleType="center"
+            android:contentDescription="@string/description_view_contact_detail" />
+
+    </RelativeLayout>
+</view>
diff --git a/res/layout/search_edittext.xml b/res/layout/search_edittext.xml
new file mode 100644
index 0000000..8eda696
--- /dev/null
+++ b/res/layout/search_edittext.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<view class="com.android.dialer.widget.SearchEditTextLayout"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:id="@+id/search_view_container"
+    android:orientation="horizontal"
+    android:layout_marginTop="@dimen/search_top_margin"
+    android:layout_marginBottom="@dimen/search_bottom_margin"
+    android:layout_marginLeft="@dimen/search_margin_horizontal"
+    android:layout_marginRight="@dimen/search_margin_horizontal"
+    android:background="@drawable/rounded_corner"
+    android:elevation="@dimen/search_box_elevation">
+
+    <LinearLayout
+        android:id="@+id/search_box_collapsed"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:paddingStart="@dimen/search_box_left_padding"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:id="@+id/search_magnifying_glass"
+            android:layout_height="@dimen/search_box_icon_size"
+            android:layout_width="@dimen/search_box_icon_size"
+            android:padding="@dimen/search_box_search_icon_padding"
+            android:scaleType="center"
+            android:src="@drawable/ic_ab_search"
+            android:importantForAccessibility="no"
+            android:tint="@color/searchbox_icon_tint" />
+
+        <TextView
+            android:id="@+id/search_box_start_search"
+            android:layout_height="wrap_content"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_marginLeft="@dimen/search_box_collapsed_text_margin_left"
+            android:textSize="@dimen/search_collapsed_text_size"
+            android:fontFamily="@string/search_font_family"
+            android:textColorHint="@color/searchbox_hint_text_color"
+            android:gravity="center_vertical"
+            android:hint="@string/dialer_hint_find_contact" />
+
+        <ImageView
+            android:id="@+id/voice_search_button"
+            android:layout_width="@dimen/search_box_icon_size"
+            android:layout_height="match_parent"
+            android:src="@drawable/ic_mic_grey600"
+            android:scaleType="center"
+            android:clickable="true"
+            android:contentDescription="@string/description_start_voice_search"
+            android:background="?android:attr/selectableItemBackgroundBorderless"
+            android:tint="@color/searchbox_icon_tint" />
+
+        <ImageButton
+            android:id="@+id/dialtacts_options_menu_button"
+            android:layout_width="@dimen/search_box_icon_size"
+            android:layout_height="match_parent"
+            android:paddingEnd="@dimen/search_box_right_padding"
+            android:scaleType="center"
+            android:background="?android:attr/selectableItemBackgroundBorderless"
+            android:src="@drawable/ic_overflow_menu"
+            android:contentDescription="@string/action_menu_overflow_description"
+            android:tint="@color/searchbox_icon_tint" />
+
+    </LinearLayout>
+
+    <include layout="@layout/search_bar_expanded" />
+
+</view>
diff --git a/res/layout/set_primary_checkbox.xml b/res/layout/set_primary_checkbox.xml
new file mode 100644
index 0000000..b997327
--- /dev/null
+++ b/res/layout/set_primary_checkbox.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 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.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingStart="14dip"
+    android:paddingEnd="15dip"
+    android:orientation="vertical">
+
+    <CheckBox
+        android:id="@+id/setPrimary"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:focusable="true"
+        android:clickable="true"
+        android:text="@string/make_primary"/>
+</LinearLayout>
diff --git a/res/layout/speed_dial_fragment.xml b/res/layout/speed_dial_fragment.xml
new file mode 100644
index 0000000..5b6ce4f
--- /dev/null
+++ b/res/layout/speed_dial_fragment.xml
@@ -0,0 +1,51 @@
+<?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.
+-->
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:clipChildren="false">
+
+    <FrameLayout
+        android:id="@+id/contact_tile_frame"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentLeft="true"
+        android:paddingStart="@dimen/favorites_row_start_padding"
+        android:paddingEnd="@dimen/favorites_row_end_padding" >
+        <com.android.dialer.list.PhoneFavoriteListView
+            android:id="@+id/contact_tile_list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:paddingTop="@dimen/favorites_row_top_padding"
+            android:numColumns="@integer/contact_tile_column_count_in_favorites"
+            android:clipToPadding="false"
+            android:fadingEdge="none"
+            android:divider="@null"
+            android:paddingBottom="@dimen/floating_action_button_list_bottom_padding"
+            android:nestedScrollingEnabled="true" />
+    </FrameLayout>
+
+    <com.android.dialer.widget.EmptyContentView
+        android:id="@+id/empty_list_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:visibility="gone"/>
+
+</FrameLayout>
diff --git a/res/layout/view_numbers_to_import_fragment.xml b/res/layout/view_numbers_to_import_fragment.xml
new file mode 100644
index 0000000..1836f8d
--- /dev/null
+++ b/res/layout/view_numbers_to_import_fragment.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/blocked_number_background">
+
+    <ListView android:id="@id/android:list"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:divider="@null"
+        android:headerDividersEnabled="false" />
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom"
+        android:paddingTop="8dp"
+        android:paddingBottom="8dp"
+        android:background="@android:color/white">
+
+        <Button android:id="@+id/import_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentEnd="true"
+            android:layout_marginEnd="@dimen/blocked_number_container_padding"
+            android:text="@string/blocked_call_settings_import_button"
+            style="@style/DialerFlatButtonStyle" />
+
+        <Button android:id="@+id/cancel_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/import_description"
+            android:layout_toLeftOf="@id/import_button"
+            android:text="@android:string/cancel"
+            style="@style/DialerFlatButtonStyle" />
+
+    </RelativeLayout>
+
+</LinearLayout>
diff --git a/res/layout/voicemail_playback_layout.xml b/res/layout/voicemail_playback_layout.xml
new file mode 100644
index 0000000..bb7fe34
--- /dev/null
+++ b/res/layout/voicemail_playback_layout.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginStart="64dp"
+    android:layout_marginEnd="24dp"
+    android:orientation="vertical"
+    android:background="@color/background_dialer_call_log_list_item">
+
+    <TextView
+        android:id="@+id/playback_state_text"
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:gravity="center"
+        android:textSize="14sp" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:gravity="top">
+
+        <TextView
+            android:id="@+id/playback_position_text"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:textSize="14sp"
+            android:paddingTop="@dimen/voicemail_playback_top_padding"
+            android:importantForAccessibility="no" />
+
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:layout_marginTop="4dp">
+
+            <SeekBar
+                android:id="@+id/playback_seek"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingBottom="8dp"
+                android:paddingTop="@dimen/voicemail_playback_top_padding"
+                android:progressDrawable="@drawable/seekbar_drawable"
+                android:thumb="@drawable/ic_voicemail_seek_handle"
+                android:progress="0"
+                android:max="0"
+                android:contentDescription="@string/description_playback_seek" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:gravity="center"
+                android:padding="8dp">
+
+                <ImageButton android:id="@+id/playback_speakerphone"
+                    style="@style/VoicemailPlaybackLayoutButtonStyle"
+                    android:src="@drawable/ic_volume_down_24dp"
+                    android:tint="@color/voicemail_icon_tint"
+                    android:contentDescription="@string/description_playback_speakerphone" />
+
+                <Space
+                    android:layout_width="0dp"
+                    android:layout_height="0dp"
+                    android:layout_weight="1" />
+
+                <ImageButton android:id="@+id/playback_start_stop"
+                    style="@style/VoicemailPlaybackLayoutButtonStyle"
+                    android:src="@drawable/ic_play_arrow"
+                    android:contentDescription="@string/voicemail_play_start_pause" />
+
+                <Space
+                    android:layout_width="0dp"
+                    android:layout_height="0dp"
+                    android:layout_weight="1" />
+
+                <ImageButton android:id="@+id/delete_voicemail"
+                    style="@style/VoicemailPlaybackLayoutButtonStyle"
+                    android:src="@drawable/ic_delete_24dp"
+                    android:tint="@color/voicemail_icon_tint"
+                    android:contentDescription="@string/call_log_trash_voicemail" />
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+    <TextView
+        android:id="@+id/total_duration_text"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:textSize="14sp"
+        android:paddingTop="@dimen/voicemail_playback_top_padding"
+        android:importantForAccessibility="no" />
+
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/voicemail_promo_card.xml b/res/layout/voicemail_promo_card.xml
new file mode 100644
index 0000000..ba4ac59
--- /dev/null
+++ b/res/layout/voicemail_promo_card.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2015 Google Inc. All Rights Reserved. -->
+
+<android.support.v7.widget.CardView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/promo_card"
+    style="@style/CallLogCardStyle"
+    android:orientation="vertical"
+    android:gravity="center_vertical"
+    card_view:cardBackgroundColor="@color/visual_voicemail_promo_card_background">
+
+    <LinearLayout
+        android:id="@+id/promo_card_content"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingStart="@dimen/promo_card_start_padding"
+            android:paddingEnd="@dimen/promo_card_main_padding"
+            android:paddingTop="@dimen/promo_card_top_padding"
+            android:paddingBottom="@dimen/promo_card_main_padding"
+            android:orientation="horizontal"
+            android:gravity="top">
+
+            <ImageView
+                android:id="@+id/promo_card_icon"
+                android:layout_width="@dimen/promo_card_icon_size"
+                android:layout_height="@dimen/promo_card_icon_size"
+                android:layout_gravity="top"
+                android:src="@drawable/ic_voicemail_24dp"/>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="@dimen/promo_card_main_padding"
+                android:orientation="vertical"
+                android:gravity="center_vertical">
+
+                <TextView
+                    android:id="@+id/promo_card_header"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginBottom="@dimen/promo_card_title_padding"
+                    android:layout_gravity="center_vertical"
+                    android:textColor="@color/background_dialer_white"
+                    android:textSize="@dimen/call_log_primary_text_size"
+                    android:textStyle="bold"
+                    android:text="@string/visual_voicemail_title"
+                    android:singleLine="false"/>
+
+                <TextView
+                    android:id="@+id/promo_card_details"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="@color/background_dialer_white"
+                    android:textSize="@dimen/call_log_detail_text_size"
+                    android:text="@string/visual_voicemail_text"
+                    android:lineSpacingExtra="@dimen/promo_card_line_spacing"
+                    android:singleLine="false"/>
+            </LinearLayout>
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/visual_voicemail_promo_card_divider"/>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingEnd="@dimen/promo_card_action_end_padding"
+            android:paddingTop="@dimen/promo_card_action_vertical_padding"
+            android:paddingBottom="@dimen/promo_card_action_vertical_padding"
+            android:orientation="horizontal"
+            android:gravity="end">
+
+            <TextView
+                android:id="@+id/secondary_action"
+                style="@style/PromoCardActionStyle"
+                android:background="?android:attr/selectableItemBackground"
+                android:text="@string/visual_voicemail_settings"
+                android:nextFocusLeft="@+id/promo_card"
+                android:nextFocusRight="@+id/primary_action"
+                android:paddingEnd="@dimen/promo_card_action_between_padding"/>
+
+            <TextView
+                android:id="@+id/primary_action"
+                style="@style/PromoCardActionStyle"
+                android:background="?android:attr/selectableItemBackground"
+                android:text="@android:string/ok"
+                android:nextFocusLeft="@+id/secondary_action"
+                android:nextFocusRight="@+id/promo_card"/>
+        </LinearLayout>
+    </LinearLayout>
+</android.support.v7.widget.CardView>
diff --git a/res/menu/call_log_options.xml b/res/menu/call_log_options.xml
new file mode 100644
index 0000000..da38d86
--- /dev/null
+++ b/res/menu/call_log_options.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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/delete_all"
+        android:title="@string/call_log_delete_all"
+        android:showAsAction="never"
+        android:orderInCategory="1"/>
+</menu>
diff --git a/res/menu/dialpad_options.xml b/res/menu/dialpad_options.xml
new file mode 100644
index 0000000..63fca07
--- /dev/null
+++ b/res/menu/dialpad_options.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item
+        android:id="@+id/menu_2s_pause"
+        android:title="@string/add_2sec_pause"
+        android:showAsAction="withText" />
+    <item
+        android:id="@+id/menu_add_wait"
+        android:title="@string/add_wait"
+        android:showAsAction="withText" />
+    <item
+        android:id="@+id/menu_call_with_note"
+        android:title="@string/call_with_a_note"
+        android:showAsAction="withText" />
+</menu>
diff --git a/res/menu/dialtacts_options.xml b/res/menu/dialtacts_options.xml
new file mode 100644
index 0000000..8a9e25f
--- /dev/null
+++ b/res/menu/dialtacts_options.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item
+        android:id="@+id/menu_history"
+        android:icon="@drawable/ic_menu_history_lt"
+        android:title="@string/action_menu_call_history_description" />
+    <item
+        android:id="@+id/menu_import_export"
+        android:title="@string/menu_import_export" />
+    <item
+        android:id="@+id/menu_clear_frequents"
+        android:title="@string/menu_clear_frequents" />
+    <item
+        android:id="@+id/menu_add_contact"
+        android:title="@string/menu_newContact"/>
+    <item
+        android:id="@+id/menu_call_settings"
+        android:title="@string/dialer_settings_label" />
+
+</menu>
diff --git a/res/mipmap-hdpi/ic_launcher_phone.png b/res/mipmap-hdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..5a3dff1
--- /dev/null
+++ b/res/mipmap-hdpi/ic_launcher_phone.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_launcher_phone.png b/res/mipmap-mdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..9ea0d8c
--- /dev/null
+++ b/res/mipmap-mdpi/ic_launcher_phone.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_launcher_phone.png b/res/mipmap-xhdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..e97836c
--- /dev/null
+++ b/res/mipmap-xhdpi/ic_launcher_phone.png
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_launcher_phone.png b/res/mipmap-xxhdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..1594e4e
--- /dev/null
+++ b/res/mipmap-xxhdpi/ic_launcher_phone.png
Binary files differ
diff --git a/res/mipmap-xxxhdpi/ic_launcher_phone.png b/res/mipmap-xxxhdpi/ic_launcher_phone.png
new file mode 100644
index 0000000..8c92ac1
--- /dev/null
+++ b/res/mipmap-xxxhdpi/ic_launcher_phone.png
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
new file mode 100644
index 0000000..379c574
--- /dev/null
+++ b/res/values-af/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Foon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Foon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Foonbelblad"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Foon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Oproepgeskiedenis"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Gee foutiewe nommer aan"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopieer nommer"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopieer transkripsie"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokkeer nommer"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> is geblokkeer"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Deblokkeer nommer"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> is gedeblokkeer"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ONTDOEN"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Vee uit"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Wysig nommer voor oproep"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Vee oproepgeskiedenis uit"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Vee stemboodskap uit"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Stemboodskap is uitgevee"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ONTDOEN"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vee oproepgeskiedenis uit?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Dit sal alle oproepe uit jou geskiedenis vee"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Vee tans oproepgeskiedenis uit …"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Foon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Gemiste oproep"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Gemiste werkoproep"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Gemiste oproepe"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> gemiste oproepe"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Bel terug"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Boodskap"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Stemboodskappe </item>
+      <item quantity="one">Stemboodskap</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Speel"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuwe stemboodskap van <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Kon nie stemboodskap speel nie"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Laai tans stemboodskap …"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Kon nie stemboodskap laai nie"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Slegs oproepe met stemboodskappe"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Slegs inkomende oproepe"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Slegs uitgaande oproepe"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Slegs gemisde oproepe"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visuele stemboodskapdiens"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Kyk en luister na jou stemboodskapdiens sonder dat jy \'n nommer hoef te bel. Dataheffings kan van toepassing wees."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Instellings"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Stemboodskapopdaterings is nie beskikbaar nie"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Nuwe stemboodskap wag. Kan nie nou laai nie."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Stel jou stemboodskapdiens op"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Oudio is nie beskikbaar nie"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Stel op"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Bel stemboodskap"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>)<xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Kies nommer"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Kies nommer"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Onthou hierdie keuse"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"soek"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"bel"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"nommer om te skakel"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Speel of stop terugspeel"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Skakel luidsprekerfoon aan of af"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Soek terugspeelposisie"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Verlaag terugspeelkoers"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Verhoog terugspeelkoers"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Oproepgeskiedenis"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Meer opsies"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"belblad"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Wys slegs uitgaande"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Wys slegs inkomende"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Wys slegs misgeloop"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Wys net stemboodskappe"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Wys alle oproepe"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Voeg 2-sek.-pouse by"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Voeg wagtyd by"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Instellings"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nuwe kontak"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Alle kontakte"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Oproepdetails"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Besonderhede is nie beskikbaar nie"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Gebruik raak-nommerbord"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Keer terug na oproep wat besig is"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Voeg oproep by"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Inkomende oproep"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Uitgaande oproep"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Gemiste oproep"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Inkomende video-oproep"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Uitgaande video-oproep"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Gemiste video-oproep"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Stemboodskap"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Afgekeurde oproep"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Geblokkeerde oproep"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Inkomende oproepe"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Speel stemboodskap"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Bekyk kontak <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Bel <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Kontakbesonderhede van <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> oproepe."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video-oproep."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Stuur SMS aan <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ongeluisterde stemboodskap"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Begin stemsoektog"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Onbekend"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Stemboodskap"</string>
+    <string name="private_num" msgid="6374339738119166953">"Private nommer"</string>
+    <string name="payphone" msgid="7726415831153618726">"Betaalfoon"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> om <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Kan nie hierdie nommer bel nie"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Om stemboodskapdiens op te stel, gaan na Kieslys &gt; Instellings."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Om stemboodskapdiens te bel, skakel eers vliegtuigmodus af."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Laai tans…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Laai tans van SIM-kaart af…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM-kaartkontakte"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Geen kontakte-program beskikbaar nie"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Stemsoektog is nie beskikbaar nie"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Kan nie \'n foonoproep maak nie want die Foon-program is gedeaktiveer."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Geen program daarvoor op hierdie toestel nie"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Deursoek kontakte"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Gee nommer of soek in kontakte"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Jou oproepgeskiedenis is leeg"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Maak \'n oproep"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Jy het geen gemiste oproepe nie."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Jou stemboodskapdiens se inkassie is leeg."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Wys net gunstelinge"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Oproepgeskiedenis"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Alles"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Gemis"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Stemboodskap"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Blokkeer <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Oproepe van hierdie nommer af sal geblokkeer word en stemboodskappe sal outomaties uitgevee word."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Oproepe van hierdie nommer af sal geblokkeer word, maar die beller sal dalk steeds vir jou stemboodskappe kan los."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKKEER"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Deblokkeer <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Hierdie nommer sal nie meer geblokkeer word om jou te bel nie."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DEBLOKKEER"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Spoedbel"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Oproepgeskiedenis"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontakte"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Stemboodskap"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Verwyder uit gunstelinge"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Ontdoen"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Skep nuwe kontak"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Voeg by \'n kontak"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Stuur SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Maak video-oproep"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokkeer nommer"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nuwe gemiste oproepe"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Daar is nog niemand op jou spoedbel nie"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Voeg \'n gunsteling by"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Jy het nog nie enige kontakte nie"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Voeg \'n kontak by"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Raak prent om al die nommers te sien of raak en hou om te herorganiseer"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Verwyder"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video-oproep"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Stuur \'n boodskap"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Oproepbesonderhede"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Bel <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Oproep gemis vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Oproep geantwoord vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Ongeleeste stempos vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Stempos vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Oproep na <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"op <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Bel"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Bel <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Maak video-oproep na <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Luister na stemboodskap vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Speel stemboodskap vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Laat wag stemboodskap vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Vee stemboodskap vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g> uit"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nuwe stemboodskappe</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nuwe stemboodskap</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Skep kontak vir <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Voeg <xliff:g id="NAMEORNUMBER">^1</xliff:g> by \'n bestaande kontak"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Oproepbesonderhede vir <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Uit oproepgeskiedenis gevee"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Vandag"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Gister"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Ouer"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Oproepelys"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Skakel luidspreker aan."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Skakel luidspreker af."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Speel vinniger."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Speel stadiger."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Begin of laat wag speel."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Vertoonopsies"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Klanke en vibrasie"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Toeganklikheid"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Foon-luitoon"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibreer ook vir oproepe"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Belbladklanke"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Toonlengte vir belblad"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normaal"</item>
+    <item msgid="6177579030803486015">"Lank"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Vinnige antwoorde"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Oproepe"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Oproepblokkering"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Oproepblokkering is tydelik af"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Oproepblokkering is gedeaktiveer omdat jy die afgelope 48 uur nooddienste van hierdie foon af gekontak het. Dit sal outomaties heraktiveer word sodra die 48-uurtydperk verstryk."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Voer nommers in"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Jy het sommige bellers vroeër gemerk om outomaties via ander programme na stemboodskapdiens gestuur te word."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Bekyk nommers"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Voer in"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Kon nie invoer nie"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Deblokkeer nommer"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Voeg nommer by"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Oproepe van hierdie nommers af sal geblokkeer word en stemboodskappe sal outomaties uitgevee word."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Oproepe van hierdie nommers af sal geblokkeer word, maar die bellers sal dalk steeds vir jou stemboodskappe kan los."</string>
+    <string name="block_list" msgid="7760188925338078011">"Geblokkeerde nommers"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> is ongeldig."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> is reeds geblokkeer."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Oproepblokkering is vir 48 uur gedeaktiveer"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Gedeaktiveer omdat \'n noodoproep gemaak is."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Oproeprekeninge"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Skakel aan"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Stel toestemmings"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Skakel die kontaktetoestemming aan om spoedbel te aktiveer."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Skakel die foontoestemming aan om jou oproeprekord te sien."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Skakel die kontaktetoestemming aan om jou kontakte te sien."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Skakel die foontoestemming aan om na jou stemboodskapdiens te gaan."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Skakel die Kontakte-toestemmings aan om jou kontakte te deursoek."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Skakel die foontoestemming aan om \'n oproep te maak."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Foonprogram het nie toestemming om stelselinstellings te stel nie."</string>
+</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
new file mode 100644
index 0000000..54d6400
--- /dev/null
+++ b/res/values-am/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ስልክ"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ስልክ"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"የስልክ መደወያ ሰሌዳ"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ስልክ"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"የጥሪ ታሪክ"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"ትክክለኛ ያልሆነ ቁጥርን ሪፓርት አድርግ"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"ቁጥር ቅዳ"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ወደ ጽሑፍ የተገለበጠውን ቅዳ"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"ቁጥርን አግድ"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> ታግዷል"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"ቁጥርን አታግድ"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"የ<xliff:g id="NUMBER">%1$s</xliff:g> እገዳ ተነስቷል"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ቀልብስ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"ሰርዝ"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"ከመደወል በፊት ቁጥር አርትዕ"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"የጥሪ ታሪክን አጽዳ"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"የድምፅ መልዕክት ሰርዝ"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"የድምጽ ፖስታ ተፈልጎ ተገኝቷል"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ቀልብስ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"የጥሪ ታሪክ ይጽዳ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ይሄ ሁሉንም ጥሪዎች ከታሪክዎ ይሰርዛቸዋል"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"የጥሪ ታሪክን በማጽዳት ላይ…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ስልክ"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"ያመለጠ ጥሪ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"ያመለጠ የሥራ ጥሪ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"ያመለጡ ጥሪዎች"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ያመለጡ ጥሪዎች"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"የኋላ ጥሪ"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"መልእክት"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"አጫውት"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>፤<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ከ<xliff:g id="CALLER">%1$s</xliff:g> አዲስ የድምፅመልዕክት"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"የድምጽ መልዕክትን ማጫወት አልተቻለም"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"የድምጽ መልዕክትን በመጫን ላይ…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"የድምጽ መልዕክትን መጫን አልተቻለም"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"የድምጽ መልዕክት ያላቸው ጥሪዎች ብቻ"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"ገቢ ጥሪዎች ብቻ"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"ወጪ ጥሪዎች ብቻ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"ያመለጡ ጥሪዎች ብቻ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"የሚታይ የድምጽ መልዕክት"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"ቁጥር ሳይደውሉ የእርስዎን የድምጽ መልዕክት ይመልከቱና ያድምጡ። የውሂብ ክፍያዎች ተግባራዊ ይሆኑ ይሆናል።"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"ቅንብሮች"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"የድምጽ መልዕክት ዝማኔ አይገኝም"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"አዲስ የድምጽ መልዕክት በመጠበቅ ላይ። አሁን መጫን አይቻልም።"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"የእርስዎን ድምጽ መልዕክት ያዋቅሩ"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ተሰሚ አይገኝም"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"አዘጋጅ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"የድምፅመልዕክት ደውል"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"ቁጥር ምረጥ"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"ቁጥር ምረጥ"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ይህን ምርጫ አስታውስ"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ፍለጋ"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ደውል"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ቁጥር ለመደወል"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"መልሶ ማጫወት አጫውት ወይም አቁም"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"የስልክ ድምጽ ማጉያን ያብሩ ወይም ያጥፉ"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"የመልሶ ማጫወት ቦታ ይፈልጉ"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"የመልሶ ማጫወት ፍጥነት ቀንስ"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"የመልሶ ማጫወት ፍጥነት ጨምር"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"የስልክ ጥሪ ታሪክ"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"ተጨማሪ አማራጮች"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"የመደወያ ሰሌዳ"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"ወጪዎቹን ብቻ አሳይ"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"ገቢዎቹን ብቻ አሳይ"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"ያመለጡትን ብቻ አሳይ"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"የድምፅ መልዕክቶች ብቻ አሳይ"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"ሁሉንም ጥሪዎች አሳይ"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2 ሴኮንድ ፋታ አክል"</string>
+    <string name="add_wait" msgid="3360818652790319634">"መጠበቅ አክል"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"ቅንብሮች"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"አዲስ ዕውቅያ"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"ሁሉም ዕውቂያዎች"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"የጥሪ ዝርዝሮች"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"ዝርዝሮች አይገኙም"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"የድምፅ ቁልፍ ሰሌዳን ንካ"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"በመካሄድ ላይ ወዳለው ጥሪ ተመለስ"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"ጥሪ ያክሉ"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"ገቢ ጥሪ"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"ወጪ ጥሪ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"ያመለጠ ጥሪ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ገቢ የቪዲዮ ጥሪ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"ወጪ የቪዲዮ ጥሪ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"ያመለጠ የቪዲዮ ጥሪ"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"የድምፅ መልዕክት"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"ያልተነሳ ጥሪ"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"የታገደ ጥሪ"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ገቢ ጥሪዎች"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"የድምፅ መልዕክት አጫውት"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"ዕውቂያ <xliff:g id="NAME">%1$s</xliff:g> ዕይ"</string>
+    <string name="description_call" msgid="3443678121983852666">"ጥሪ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"የ<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> እውቂያ ዝርዝሮች"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ጥሪዎች።"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"የቪዲዮ ጥሪ።"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"ኤስኤምኤስ ለ<xliff:g id="NAME">%1$s</xliff:g> ላክ"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ያልተሰማ የድምፅመልዕክት"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"በድምፅ ፍለጋ ይጀምሩ"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"ደውል<xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"ያልታወቀ"</string>
+    <string name="voicemail" msgid="3851469869202611441">"የድምፅ መልዕክት"</string>
+    <string name="private_num" msgid="6374339738119166953">"የግል ቁጥር"</string>
+    <string name="payphone" msgid="7726415831153618726">"የሕዝብ ስልክ"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> ሰከንድ"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> ደቂቃ <xliff:g id="SECONDS">%s</xliff:g> ሴከ"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g> ላይ"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ይህን ቁጥር መደወል አልተቻለም"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ድምጽ መልዕክትን ለማደራጀት ወደ ምናሌ &gt; ቅንብሮች  ሂድ::"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"የድምጽ መልዕክት ጥሪ ለማድረግ፣ በመጀመሪያ የአውሮፕላን ሁነታን አጥፋ።"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"በመስቀል ላይ…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"ከSIM ካርድ ላይ በመጫን ላይ..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"የSIM ካርድ ዕውቂያዎች"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"ምንም የእውቂያዎች መተግበሪያ አይገኝም"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"የድምጽ ፍለጋ አይገኝም"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"የስልክ መተግበሪያው ስለተሰናከለ የስልክ ጥሪ ማድረግ አይቻልም።"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"ለዚያ የሚሆን መተግበሪያ በዚህ መሣሪያ ላይ የለም"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"እውቂያዎችን ይፈልጉ"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"ቁጥር ያክሉ ወይም እውቂያዎችን ይፈልጉ"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"የእርስዎ የጥሪ ታሪክ ባዶ ነው"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"ደውል"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"ምንም ያመለጡዎት ጥሪዎች የሉዎትም።"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"የእርስዎ የድምጽ መልዕክት ገቢ መልዕክት ባዶ ነው።"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"ተወዳጆችን ብቻ አሳይ"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"የጥሪ ታሪክ"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"ሁሉም"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"ያመለጡ"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"የድምፅ መልዕክት"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> ይታገድ?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ከዚህ ቁጥር የሚመጡ ጥሪዎች ይታገዳሉ፣ እና የድምጽ መልዕክቶች በራስ-ሰር ይሰረዛሉ።"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ከዚህ ቁጥር የሚመጡ ጥሪዎች ይታገዳሉ፣ ነገር ግን ደዋዩ አሁንም የድምጽ መልዕክቶችን ሊተዉልዎ ይችላል።"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"አግድ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"የ<xliff:g id="NUMBER">%1$s</xliff:g> እግድ ይነሳ?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"ይህ ቁጥር ከአሁን በኋላ ወደ እርስዎ ከመደወል አይታገድም።"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"እገዳ አንሳ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"ፈጣን ደውል"</string>
+    <string name="tab_history" msgid="2563144697322434940">"የጥሪ ታሪክ"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"ዕውቂያዎች"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"የድምፅ መልዕክት"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"ከተወዳጆች ውስጥ ተወግዷል።"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"ቀልብስ"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"ለ<xliff:g id="NUMBER">%s</xliff:g> ደውል"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"አዲስ እውቂያ ይፍጠሩ"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"ወደ እውቂያ አክል"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ኤስኤምኤስ ላክ"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"የቪዲዮ ጥሪ አድርግ"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"ቁጥርን አግድ"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> አዲስ ያልተመለሱ ጥሪዎች"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"በፈጥኖ መደወያ ላይ ገና ማንም የለዎትም"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"ተወዳጅ አክል"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"ገና ምንም እውቂያዎች የሉዎትም"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"ዕውቂያ አክል"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"ሁሉንም ቁጥሮች ለማየት ምስል ይንኩ ወይም ዳግም ለመደርደር ነክተው ይያዙት"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"አስወግድ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"የቪዲዮ ጥሪ"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"መልእክት ላክ"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"የጥሪ ዝርዝሮች"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ይደውሉ"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"ከ<xliff:g id="NAMEORNUMBER">^1</xliff:g>፣ <xliff:g id="TYPEORLOCATION">^2</xliff:g>፣ <xliff:g id="TIMEOFCALL">^3</xliff:g>፣ <xliff:g id="PHONEACCOUNT">^4</xliff:g> ያመለጠ ጥሪ።"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"ከ<xliff:g id="NAMEORNUMBER">^1</xliff:g>፣ <xliff:g id="TYPEORLOCATION">^2</xliff:g>፣ <xliff:g id="TIMEOFCALL">^3</xliff:g>፣ <xliff:g id="PHONEACCOUNT">^4</xliff:g> መልስ የተሰጠው ጥሪ።"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"ያልተነበበ የድምጽ ፖስታ ከ<xliff:g id="NAMEORNUMBER">^1</xliff:g>፣ <xliff:g id="TYPEORLOCATION">^2</xliff:g>፣ <xliff:g id="TIMEOFCALL">^3</xliff:g>፣ <xliff:g id="PHONEACCOUNT">^4</xliff:g>።"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"የድምጽ ፖስታ ከ<xliff:g id="NAMEORNUMBER">^1</xliff:g>፣ <xliff:g id="TYPEORLOCATION">^2</xliff:g>፣ <xliff:g id="TIMEOFCALL">^3</xliff:g>፣ <xliff:g id="PHONEACCOUNT">^4</xliff:g>።"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"ወደ <xliff:g id="NAMEORNUMBER">^1</xliff:g>፣ <xliff:g id="TYPEORLOCATION">^2</xliff:g>፣ <xliff:g id="TIMEOFCALL">^3</xliff:g>፣ <xliff:g id="PHONEACCOUNT">^4</xliff:g> ደውል።"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"በ<xliff:g id="PHONEACCOUNT">^1</xliff:g> ላይ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ደውል"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"ወደ <xliff:g id="NAMEORNUMBER">^1</xliff:g> ይደውሉ"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"ቪዲዮ ጥሪ <xliff:g id="NAMEORNUMBER">^1</xliff:g>።"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"የ<xliff:g id="NAMEORNUMBER">^1</xliff:g>ን የድምጽ መልዕክት ያዳምጡ"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"የድምጽ መልዕክት ያጫውቱ ከ<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"የድምጽ መልዕክት ለአፍታ ያቁሙ ከ<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"የድምጽ መልዕክት ይሰርዙ ከ<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> አዲስ የድምጽ መልዕክቶች</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> አዲስ የድምጽ መልዕክቶች</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"ለ<xliff:g id="NAMEORNUMBER">^1</xliff:g> እውቂያ ፍጠር"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ን ወደ አሁን ያለ እውቂያ አክል"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"የ<xliff:g id="NAMEORNUMBER">^1</xliff:g> የጥሪ ዝርዝሮች"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"ከጥሪ ታሪክ ተሰርዟል"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ዛሬ"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ትላንት"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"የቆየ"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"የጥሪዎች ዝርዝር"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"ድምጽ ማጉያን አብራ።"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"ድምጽ ማጉያን አጥፋ።"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"በፍጥነት አጫውት።"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"በዝግታ አጫውት።"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"መልሰህ አጫውትን አስጀምር ወይም ለአፍታ አቁም።"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">"፣ "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"የማሳያ አማራጮች"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ድምጾች እና ንዝረት"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ተደራሽነት"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"የስልክ ጥሪ ቅላጼ"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"እንዲሁም ለጥሪዎችም ንዘር"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"የመደወያ ሰሌዳ ቅላጼዎች"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"የስልክ ሰሌዳ ድምጽ ርዝመት"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"መደበኛ"</item>
+    <item msgid="6177579030803486015">"ረጅም"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ፈጣን ምላሾች"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"ጥሪዎች"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"ጥሪን ማገድ"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"ጥሪን ማገድ ለጊዜው ተሰናክሏል"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"ባለፉት 48 ሰዓቶች ውስጥ ከዚህ ስልክ ሆነው የአስቸኳይ አደጋ አገልግሎቶችን ስላነጋገሩ ጥሪን ማገድ ተሰናክሏል። አንዴ የ48 ሰዓቱ ጊዜ ካለፈ በኋላ በራስ-ሰር ዳግም ይነቃል።"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"ቁጥሮችን አስመጣ"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"ከዚህ ቀደም አንዳንድ ደዋዮች በሌሎች መተግበሪያዎች በኩል በራስ-ሰር ወደ የድምፅ መልዕክት እንዲላኩ ምልክት አድርገባቸው ነበር።"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"ቁጥሮችን ይመልከቱ"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"አስመጣ"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"ማስመጣት አልተሳካም"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"ቁጥርን አታግድ"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"ቁጥር አክል"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ከእነዚህ ቁትሮች የሚመጡ ጥሪዎች ይታገዳሉ፣ እና የድምጽ መልዕክቶች በራስ-ሰር ይሰረዛሉ።"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ከእነዚህ ቁትሮች የሚመጡ ጥሪዎች ይታገዳሉ፣ ነገር ግን አሁንም የድምጽ መልዕክቶችን ሊተዉልዎ ይችላሉ።"</string>
+    <string name="block_list" msgid="7760188925338078011">"የታገዱ ቁጥሮች"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> ልክ ያልኾነ ነው።"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ቀድሞውኑ ታግዷል።"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"የጥሪ እገዳ ለ48 ሰዓቶች ተሰናክሏል።"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"የአስቸኳይ አደጋ ጥሪ ስለተደረገ ተሰናክሏል።"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"የመደወያ መለያዎች"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"አብራ"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"ፍቃዶችን አዋቅር"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"ፈጥኖ መደወያን ለማንቃት የእውቂያዎች ፍቃዱን ያብሩ።"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"የጥሪ ምዝግብ ማስታወአሽዎን ለማየት የስልክ ፍቃዱን ያብሩ።"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"የእርስዎን እውቂያዎች ለማየት የእውቂያዎች ፍቃዱን ያብሩ።"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"የድምፅ መልዕክትዎን ለመድረስ የስልክ ፍቃዱን ያብሩ።"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"የእርስዎን እውቂያዎች ለመከታተል የእውቂያዎች ፍቃዶችን ያብሩ።"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"ስልክ ለመደወል የስልክ ፍቃዱን ያብሩ።"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"የስልክ መተግበሪያ ወደ የስርዓት ቅንብሮች የመጻፍ ፍቃድ የለውም።"</string>
+</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
new file mode 100644
index 0000000..fe792e0
--- /dev/null
+++ b/res/values-ar/strings.xml
@@ -0,0 +1,263 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"الهاتف"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"الهاتف"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"لوحة اتصال الهاتف"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"الهاتف"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"سجل المكالمات"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"الإبلاغ عن رقم غير دقيق"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"نسخ الرقم"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"نسخ الكتابة الصوتية"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"حظر الرقم"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"تم حظر <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"إلغاء حظر الرقم"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"تم إلغاء حظر <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"تراجع"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"حذف"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"تعديل الرقم قبل الاتصال"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"محو سجل المكالمات"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"حذف رسالة البريد الصوتي"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"تم حذف الرسالة الصوتية"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"تراجع"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"هل تريد محو سجل المكالمات؟"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"سيؤدي ذلك إلى حذف جميع المكالمات من السجل"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"جارٍ محو سجل المكالمات…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"الهاتف"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"مكالمة فائتة"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"مكالمة عمل فائتة"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"المكالمات الفائتة"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> من المكالمات الفائتة"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"معاودة الاتصال"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"رسالة"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="zero">لا تتوفر رسائل بريد صوتي (<xliff:g id="COUNT">%1$d</xliff:g>) </item>
+      <item quantity="two">رسالتا بريد صوتي (<xliff:g id="COUNT">%1$d</xliff:g>) </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> رسائل بريد صوتي </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> رسالة بريد صوتي </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> من رسائل البريد الصوتي </item>
+      <item quantity="one">رسالة بريد صوتي</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"تشغيل"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>، <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"بريد صوتي جديد من <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"تعذر تشغيل البريد الصوتي"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"جارٍ تحميل البريد الصوتي…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"تعذر تحميل البريد الصوتي"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"المكالمات التي تشتمل على بريد صوتي فقط"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"المكالمات الواردة فقط"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"المكالمات الصادرة فقط"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"المكالمات الفائتة فقط"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"بريد صوتي مرئي"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"يمكنك الاطلاع على بريدك الصوتي والاستماع إليه، بدون الاضطرار إلى الاتصال برقم. ويمكن أن يتم فرض رسوم للبيانات."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"الإعدادات"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"تحديثات البريد الصوتي غير متاحة"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"ليس هناك بريد صوتي قيد الانتظار. لا يمكن التحميل في الوقت الحالي."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"إعداد البريد الصوتي"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"الصوت غير متاح"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"إعداد"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"اتصال ببريد صوتي..."</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"اختيار رقم"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"اختيار رقم"</string>
+    <string name="make_primary" msgid="5829291915305113983">"تذكر هذا الاختيار"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"بحث"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"طلب"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"الرقم الذي سيتم طلبه"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"بدء التشغيل أو إيقافه"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"تشغيل مكبر الصوت أو تعطيله"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"طلب موضع تشغيل"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"خفض معدل التشغيل"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"زيادة معدل التشغيل"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"سجل المكالمات"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"مزيد من الخيارات"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"لوحة الطلب"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"عرض الصادر فقط"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"عرض الوارد فقط"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"عرض الفائت فقط"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"إظهار رسائل البريد الصوتي فقط"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"عرض جميع المكالمات"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"إضافة ثانيتين إيقاف مؤقت"</string>
+    <string name="add_wait" msgid="3360818652790319634">"إضافة انتظار"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"الإعدادات"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"جهة اتصال جديدة"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"جميع جهات الاتصال"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"تفاصيل المكالمة"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"التفاصيل غير متاحة"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"استخدام لوحة مفاتيح نغمات باللمس"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"عودة إلى المكالمة الجارية"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"إضافة مكالمة"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"مكالمة واردة"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"مكالمة صادرة"</string>
+    <string name="type_missed" msgid="2720502601640509542">"مكالمة فائتة"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"مكالمة فيديو واردة"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"مكالمة فيديو صادرة"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"مكالمة فيديو فائتة"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"البريد الصوتي"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"مكالمة مرفوضة"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"مكالمة محظورة"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"المكالمات الواردة"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"تشغيل البريد الصوتي"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"عرض جهة الاتصال <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"الاتصال بـ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"تفاصيل جهة الاتصال بـ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> من المكالمات."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"مكالمة فيديو."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"‏إرسال رسالة قصيرة SMS إلى <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"البريد الصوتي غير المسموع"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"بدء البحث الصوتي"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"الاتصال بالرقم <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"غير معروف"</string>
+    <string name="voicemail" msgid="3851469869202611441">"البريد الصوتي"</string>
+    <string name="private_num" msgid="6374339738119166953">"رقم خاص"</string>
+    <string name="payphone" msgid="7726415831153618726">"هاتف يعمل بالعملة"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> ثانية"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> دقيقة <xliff:g id="SECONDS">%s</xliff:g> ثانية"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> في <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"لا يمكن الاتصال بهذا الرقم"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"‏لإعداد البريد الصوتي، انتقل إلى القائمة &gt; الإعدادات."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"للاتصال بالبريد الصوتي، يجب أولاً إيقاف وضع الطائرة."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"جارٍ التحميل..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"‏جارٍ التحميل من شريحة SIM…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"‏شريحة SIM وجهات الاتصال"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"لا يتوفر تطبيق لجهات الاتصال"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"البحث الصوتي غير متاح"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"يتعذر إجراء مكالمة هاتفية نظرًا لأنه تم تعطيل تطبيق الهاتف."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"لا يوجد تطبيق لإجراء ذلك على هذا الجهاز"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"البحث في قائمة جهات الاتصال"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"إضافة رقم أو البحث في جهات الاتصال"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"سجل مكالماتك فارغ"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"إجراء مكالمة"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"ليست لديك أية مكالمات لم يتم الرد عليها."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"مجلد بريدك الوارد الصوتي فارغ."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"عرض المفضلة فقط"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"سجل المكالمات"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"الكل"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"فائتة"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"البريد الصوتي"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"هل تريد حظر الرقم <xliff:g id="NUMBER">%1$s</xliff:g>؟"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"سيتم حظر المكالمات الواردة من هذا الرقم كما سيتم تلقائيًا حذف الرسائل الصوتية."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"سيتم حظر المكالمات من هذا الرقم، إلا أنه سيظل بإمكان المتصل ترك رسائل صوتية."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"حظر"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"هل تريد إزالة حظر <xliff:g id="NUMBER">%1$s</xliff:g>؟"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"لن يتم حظر اتصال هذا الرقم بك بعد الآن."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"إلغاء الحظر"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"اتصال سريع"</string>
+    <string name="tab_history" msgid="2563144697322434940">"سجل المكالمات"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"جهات الاتصال"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"البريد الصوتي"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"تمت إزالة جهة الاتصال من المفضلة"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"تراجع"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"الاتصال بالرقم <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"إنشاء جهة اتصال جديدة"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"إضافة إلى جهة اتصال"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"‏إرسال رسالة قصيرة SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"إجراء مكالمة فيديو"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"حظر الرقم"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> من المكالمات الجديدة الفائتة"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"لم تتم إضافة أية جهة اتصال إلى قائمة الاتصال السريع حتى الآن"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"إضافة مفضلة"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"ليست لديك أية جهات اتصال حتى الآن"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"إضافة جهة اتصال"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"المس الصورة للاطلاع على جميع الأرقام أو المس مع الاستمرار لإعادة الترتيب"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"إزالة"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"مكالمة فيديو"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"إرسال رسالة"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"تفاصيل المكالمة"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"الاتصال بـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"مكالمة لم يرد عليها من <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"تم الرد على مكالمة من <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"البريد الصوتي غير المقروء من <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"البريد الصوتي من <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"اتصال بـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"من <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"اتصال"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"الاتصال بـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"إجراء مكالمة فيديو مع <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"استماع إلى بريد صوتي من <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"تشغيل البريد الصوتي من <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"إيقاف البريد الصوتي من <xliff:g id="NAMEORNUMBER">^1</xliff:g> مؤقتًا"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"حذف البريد الصوتي من <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="zero">ليست هناك أية رسائل صوتية جديدة (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
+      <item quantity="two">رسالتان صوتيتان جديدتان (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> رسائل صوتية</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> رسالة صوتية</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> من الرسائل الصوتية</item>
+      <item quantity="one">رسالة صوتية جديدة (<xliff:g id="COUNT_0">%d</xliff:g>)</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"إنشاء جهة اتصال لـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"إضافة <xliff:g id="NAMEORNUMBER">^1</xliff:g> إلى جهة اتصال حالية"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"تفاصيل الاتصال لـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"تم الحذف من سجل المكالمات"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"اليوم"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"أمس"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"أقدم"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"قائمة المكالمات"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"تشغيل مكبر الصوت."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"تعطيل مكبر الصوت."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"تشغيل أسرع."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"تشغيل أقل سرعة."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"بدء التشغيل أو إيقافه مؤقتًا."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">"، "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"خيارات العرض"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"الأصوات والاهتزاز"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"إمكانية الوصول"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"نغمة رنين الهاتف"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"الاهتزاز أيضًا مع المكالمات"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"نغمات لوحة الاتصال"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"طول نغمة لوحة الاتصال"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"عادية"</item>
+    <item msgid="6177579030803486015">"طويلة"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"الردود السريعة"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"المكالمات"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"حظر المكالمات"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"حظر المكالمات معطّل مؤقتًا"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"تم تعطيل حظر المكالمات لأنك اتصلت بخدمات الطوارئ خلال 48 ساعة ماضية. وستتم إعادة تمكينه تلقائيًا بعد انتهاء هذه الفترة التي تبلغ 48 ساعة."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"استيراد الأرقام"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"سبق لك تعيين بعض المتصلين على الإرسال تلقائيًا للبريد الصوتي عبر التطبيقات الأخرى."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"عرض الأرقام"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"استيراد"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"أخفق الاستيراد"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"إلغاء حظر الرقم"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"إضافة رقم"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"سيتم حظر المكالمات من هذه الأرقام وسيتم حذف الرسائل الصوتية تلقائيًا."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"سيتم حظر المكالمات من هذه الأرقام، إلا أنه قد يظل بإمكانك ترك رسائلك الصوتية."</string>
+    <string name="block_list" msgid="7760188925338078011">"الأرقام المحظورة"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> غير صالح."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"تم حظر <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"تم تعطيل حظر المكالمات لمدة 48 ساعة."</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"تم التعطيل نظرًا لإجراء مكالمة طوارئ."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"حسابات الاتصال"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"تشغيل"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"تعيين الأذونات"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"لتمكين الاتصال السريع، شغِّل إذن جهات الاتصال."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"للاطلاع على سجل المكالمات، شغِّل إذن الهاتف."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"للاطلاع على جهات الاتصال، شغِّل إذن جهات الاتصال."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"للوصول إلى البريد الصوتي، شغِّل إذن الهاتف."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"للبحث عن جهات الاتصال، عليك تشغيل أذونات جهات الاتصال."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"لإجراء مكالمة، شغِّل إذن الهاتف."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ليس لدى تطبيق الهاتف إذن لتعديل إعدادات النظام."</string>
+</resources>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
new file mode 100644
index 0000000..badbe84
--- /dev/null
+++ b/res/values-az-rAZ/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefon Yığım Pedi"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Zəng tarixçəsi"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Qeyri-dəqiq sayı bildirin"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Nömrəni kopyalayın"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Transkripsiyanı kopyalayın"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Nömrəni blok edin"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> blok edilib"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Nömrəni blokdan çıxarın"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> blokdan çıxarılıb"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"LƏĞV EDİN"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Silin"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Zəng etmədən öncə nömrəyə düzəliş edin"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Zəng tarixçəsini təmizləyin"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Səsli məktubu silin"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Səsli məktub silindi"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"GERİ ALIN"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Zəng tarixçəsi təmizlənsin?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Bu, tarixçənizdən bütün zəngləri siləcəkdir"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Zəng tarixçəsi silinir…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Buraxılmış zəng"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Buraxılmış iş çağrısı"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Buraxılmış zənglər"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> buraxılmış zənglər"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Geriyə zəng"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mesaj"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Səsli poçt </item>
+      <item quantity="one">Səsli poçt</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Oxudun"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> adlı şəxsdən yeni səsli məktub"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Səsli poçtu səsləndirmək mümkün deyil"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Səsli poçt yüklənir…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Səsli poçtu yükləmək mümkün olmadı"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Yalnız səsli məktublu zənglər"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Yalnız daxil olan zənglər"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Yalnız gedən zənglər"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Yalnız buraxılmış zənglər"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vizual Səsli Mesaj"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Nömrə yığmağa ehtiyac olmadan səsli mesaja baxın və dinləyin. Data xərci tutula bilər."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Ayarlar"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Səsli poçt yeniləmələri mövcud deyil"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Yeni səsli poçt gözləyir. İndi yükləmək mümkün deyil."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Səsli poçtunuzu qurun"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio mövcud deyil"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Quraşdırın"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Səsli poçta zəng edin"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Nömrə seçin"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Nömrə seçin"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Bu seçimi yadda saxla"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"axtarış"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"nömrə yığın"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"yığmaq üçün nömrə"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Oxudun və ya dayandırın"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Spikerfonu aktiv və ya deaktiv edin"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Oxutma pozisiyası axtarın"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Oxutma reytinqini azaldın"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Oxutma reytinqini artırın"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Çağrı Tarixçəsi"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Daha çox seçim"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"nömrə yığımı paneli"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Yalnız gedəni göstərin"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Yalnız gələni göstərin"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Yalnız buraxılmışı göstərin"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Yalnız səsli mesajları göstərin"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Bütün zəngləri göstərin"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2 saniyəlik pauza əlavə edin"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Gözləmə əlavə edin"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Ayarlar"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Yeni kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Bütün kontaktlar"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Zəng detalları"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Təfərrüatlar mövcud deyil"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Toxunma ton klaviaturasını istifadə edin"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Davam edən zəngə qayıdın"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Zəng əlavə edin"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Gələn zəng"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Gedən zəng"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Buraxılmış zəng"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Gələn video zəng"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Gedən video zəng"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Buraxılmış video zəng"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Səsli poçt"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Rədd edilmiş çağrı"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blok edilmiş çağrı"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Gələn zənglər"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Səsli məktubu oxudun"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> adlı kontakta baxın"</string>
+    <string name="description_call" msgid="3443678121983852666">"Zəng edin: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> üçün kontakt detalları"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> zəng."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video çağrı."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> adlı şəxsə SMS göndər"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Eşidilməmiş səsli mesaj"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Səs axtarışına başlayın"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> zəng edin"</string>
+    <string name="unknown" msgid="740067747858270469">"Naməlum"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Səsli poçt"</string>
+    <string name="private_num" msgid="6374339738119166953">"Şəxsi nömrə"</string>
+    <string name="payphone" msgid="7726415831153618726">"Taksofon"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> san"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> dəq <xliff:g id="SECONDS">%s</xliff:g> san"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> tarixində <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Bu nömrəyə zəng etmək mümkün deyil"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Səsli poçtu ayarlamaq üçün Menyu, sonra isə &gt; Ayarlara daxil olun."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Səsli poçta zəng etmək üçün Təyyarə rejimini söndürün."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Yüklənir…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM kartdan yüklənir..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM kart kontaktları"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Əlaqələr proqramı mövcud deyil"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Səsli axtarış mövcud deyil"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Telefon tətbiqi deaktiv edildiyinə görə telefon zəngi etmək mümkün deyil."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Bu cihazda onun üçün heç bir proqram yoxdur"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Kontakt axtarın"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Nömrə əlavə edin və ya kontaktlarda axtarın"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Zəng tarixçəniz boşdur"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Zəng edin"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Buraxılmış heç bir zənginiz yoxdur."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Səsli poçt qutunuz boşdur."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Yalnız seçilmişləri göstər"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Zəng Tarixçəsi"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Bütün"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Buraxılmış"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Səsli poçt"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi blok edilsin?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Bu nömrədən zənglər blok ediləcək və səsli məktublar avtomatik silinəcək."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Bu nömrədən zənglər bağlanacaq, amma zəng edən səsli zəng qoya bilər."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOK"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi blokdan çıxarılsın?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Bu nömrə Sizə zəng etməyə qarşı artıq blok ediləcək."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"BLOKDAN ÇIXARIN"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Sürətli nömrə yığımı"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Zəng Tarixçəsi"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktlar"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Səsli poçt"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Seçilmişlərdən silindi"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Geri qaytar"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> nömrəsinə zəng edin"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Yeni kontakt yaradın"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Kontakta əlavə edin"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS göndərin"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Video zəng edin"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Nömrəni blok edin"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> yeni buraxılmış zəng"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Hələ sürətli zəng siyahınızda hec kim yoxdur"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Sevimlilərə əlavə edin"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Hələ heç bir kontaktınız yoxdur"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Kontakt əlavə edin"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Bütün nömrələri görmək üçün təsvirə toxunun və ya yenidən qaydaya salmaq üçün toxunun və saxlayın"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Yığışdır"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video zəng"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Mesaj göndərin"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Zəng detalları"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> nömrəsinə zəng edin"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Buraxılmış zənglər: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Zəngləri cavablandırıb: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> hesabına gələn oxunmamış səsli mesaj."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> hesabına gələn səsli mesaj."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Zəng et: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"Zəngdədir: <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Çağrı"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Çağrı <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> video zəng edin."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> tərəfdən səsli mesajı dinləyin"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> nömrəsindən gələn səsli mesajı oxudun"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> nömrəsindən gələn səsli mesajı durdurun"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> nömrəsindən gələn səsli mesajı silin"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> yeni səsli mesaj</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> yeni səsli mesaj</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> üçün kontakt yaradın"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Mövcud kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g> əlavə edin"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> üçün detalları çağırın"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Zəng tarixçəsindən silindi"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Bu gün"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Dünən"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Keçmi"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Zənglər siyahısı"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Dinamiki aktiv et."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Dinamiki deaktiv et."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Daha sürətlə oxut."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Daha yavaş oxut."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Oxunuşu başlat və ya durdur"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Ekran seçimləri"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Səslər və vibrasiya"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Giriş imkanı"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Telefon zəng səsi"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Həmçinin zənglər üçün vibrasiya olsun"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Yığım tonları"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Yığım paneli ton uzunluğu"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Uzun"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Qısa cavablar"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Zənglər"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Zəng blok edilir"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Çağrının blok edilməsi müvəqqəti olaraq deaktiv edilib"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Son 48 saat ərzində bu telefondan təcili yardım xidmətləri ilə əlaqə saxladığınız üçün Çağrı Bloklanması deaktiv edildi. 48 saatlıq müddət başa çatdıqda avtomatik olaraq yenidən aktiv ediləcək."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Nömrələri import edin"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Əvvəlcədən qeyd etdiyiniz bəzi zəng edənlər digər tətbiqlərin vasiyəsilə avtomatik olaraq səsli mesaja yönləndiriləcək."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Rəqəmlərə baxın"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"İmport"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Import alınmadı"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Nömrəni blokdan çıxarın"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Nömrə əlavə edin"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Bu nömrələrdən zənglər blok ediləcək və səsli məktublar avtomatik silinəcək."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Bu nömrələrdən zənglər blok ediləcək, amma yenə də səsli məktub qoya bilərsiniz."</string>
+    <string name="block_list" msgid="7760188925338078011">"Bloklanmış nömrələr"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> yanlışdır."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> artıq bloklanıb."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Çağrının bloklanması 48 saatlıq deaktiv edildi"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Təcili zəng olduğu üçün deaktiv edildi."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Hesabların çağrılması"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Aktiv edin"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"İcazələri quraşdırın"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Sürətli yığımı aktivləşdirmək üçün, Kontakt icazələrini aktivləşdirin."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Çağrı jurnalınızı görmək üçün Telefon icazəsini aktivləşdirin."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Kontaktlarınızı görmək üçün Kontakt icazəsini aktivləşdirin."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Səsli poçta daxil olmaq üçün, Telefon icazəsini aktivləşdirin."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Kontaktlarınızı axtarmaq üçün, Kontakt icazələrini aktiv edin."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Zəng etmək üçün, Telefon icazəsini aktivləşdirin."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefon tətbiqinin sistem ayarlarına yazmaq icazəsi yoxdur."</string>
+</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..44b6570
--- /dev/null
+++ b/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,257 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Numerička tastatura telefona"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Istorija poziva"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Prijavi netačan broj"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopiraj broj"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopiraj transkripciju"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokiraj broj"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> je blokiran"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Deblokiraj broj"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> je deblokiran"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"OPOZOVI"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Izbriši"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Izmeni broj pre poziva"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Obriši istoriju poziva"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Izbriši govornu poruku"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Gov. pošta je izbrisana"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"OPOZOVI"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Želite da obrišete istoriju poziva?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ovo će izbrisati sve pozive iz istorije"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Briše se istorija poziva…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Propušten poziv"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Propušten poziv za Work"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Propušteni pozivi"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Broj propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Uzvrati poziv"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Pošalji SMS"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> govorna poruka </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> govorne poruke </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> govornih poruka </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Pusti"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova govorna poruka od <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Puštanje govorne pošte nije uspelo"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Govorna pošta se učitava…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Učitavanje govorne pošte nije uspelo"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Samo pozivi sa govornom poštom"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Samo dolazni pozivi"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Samo odlazni pozivi"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Samo propušteni pozivi"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vizuelna govorna pošta"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Pregledajte i slušajte govornu poštu bez pozivanja broja. Možda će biti naplaćeni troškovi za prenos podataka."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Podešavanja"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Ažuriranja govorne pošte nisu dostupna"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Imate novu govornu poštu. Trenutno ne može da se učita."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Podesite govornu poštu"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio nije dostupan"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Podesi"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Zovi govornu poštu"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Izbor broja"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Izbor broja"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Zapamti ovaj izbor"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"pretraži"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"biranje"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"broj za biranje"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Pokretanje ili zaustavljanje reprodukcije"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Uključivanje ili isključivanje spikerfona"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Traženje pozicije u reprodukciji"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Smanjivanje brzine reprodukcije"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Povećavanje brzine reprodukcije"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Istorija poziva"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Još opcija"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"numerička tastatura"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Prikaži samo odlazne"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Prikaži samo dolazne"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Prikaži samo propuštene"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Prikaži samo govorne poruke"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Prikaži sve pozive"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj pauzu od 2 sekunde"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Dodaj čekanje"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Podešavanja"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Novi kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Svi kontakti"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detalji poziva"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detalji nisu dostupni"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Upotrebite brojčanik za tonsko biranje"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Vrati se na poziv koji je u toku"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Dodaj poziv"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Dolazni poziv"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Odlazni poziv"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Propušten poziv"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Dolazni video poziv"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Odlazni video poziv"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Propušten video poziv"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Govorna pošta"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Odbijen poziv"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blokiran poziv"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Dolazni pozivi"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Puštanje govorne pošte"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Prikaži kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Pozovi korisnika <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Detalji o kontaktu za <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> poziva."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video poziv."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Slanje SMS-a za <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nepreslušana govorna pošta"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Pokretanje glasovne pretrage"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Pozovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Nepoznato"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Govorna pošta"</string>
+    <string name="private_num" msgid="6374339738119166953">"Privatan broj"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefonska govornica"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> u <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Nije moguće pozvati ovaj broj"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Da biste podesili govornu poštu, idite u Meni &gt; Podešavanja."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Da biste pozvali govornu poštu, prvo isključite režim aviona."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Učitava se…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Učitava se sa SIM kartice…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontakti na SIM kartici"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nema dostupne aplikacije za kontakte"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Glasovna pretraga nije dostupna"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Nije moguće uputiti telefonski poziv jer je aplikacija Telefon onemogućena."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Na ovom uređaju nema aplikacija za to"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Pretražite kontakte"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Dodajte broj ili pretražite kontakte"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Istorija poziva je prazna"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Pozovi"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nemate nijedan propušten poziv."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Prijemno sanduče govorne pošte je prazno."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Prikaži samo omiljene"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Istorija poziva"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Svi"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Propušteni"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Govorna pošta"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Želite li da blokirate <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Pozivi sa ovog broja će biti blokirani i poruke govorne pošte će se automatski brisati."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Pozivi sa ovog broja će biti blokirani, ali pozivalac i dalje može da vam ostavlja poruke govorne pošte."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKIRAJ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Želite li da deblokirate <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Deblokiraćemo ovaj broj i moći će da vam upućuje pozive."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DEBLOKIRAJ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Brzo biranje"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Istorija poziva"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontakti"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Govorna pošta"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Uklonjeno je iz omiljenih"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Opozovi"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Pozovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Napravi novi kontakt"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Dodaj u kontakt"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Pošalji SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uputi video poziv"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokiraj broj"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Novih propuštenih poziva: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Nemate nijedan kontakt na brzom biranju"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Dodaj omiljen kontakt"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Još uvek nemate nijedan kontakt"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Dodaj kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Dodirnite sliku da biste videli sve brojeve ili dodirnite i zadržite da biste promenili raspored"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Ukloni"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video poziv"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Pošalji poruku"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detalji poziva"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Pozovi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Propušteni poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Primljeni poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Nepročitana govorna poruka od <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Govorna poruka od <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Pozvali ste: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"na nalogu <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Pozovi"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Pozovi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Uputite video poziv kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Pusti govornu poštu od <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Reprodukuj govornu poštu kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pauziraj govornu poštu kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Izbriši govornu poštu kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> nova poruka govorne pošte</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nove poruke govorne pošte</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> novih poruka govorne pošte</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Napravite kontakt za <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Dodajte <xliff:g id="NAMEORNUMBER">^1</xliff:g> postojećem kontaktu"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detalji poziva za <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Izbrisano iz istorije poziva"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Danas"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Juče"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Stariji"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista poziva"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Uključite zvučnik."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Isključite zvučnik."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Brža reprodukcija."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Sporija reprodukcija."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Započnite ili pauzirajte reprodukciju."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opcije prikaza"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvuci i vibracija"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Pristupačnost"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Zvuk zvona telefona"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibriraj i za pozive"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Zvuci numeričke tastature"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Trajanje tonova numeričke tastature"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normalno"</item>
+    <item msgid="6177579030803486015">"Dugačko"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Brzi odgovori"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Pozivi"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blokiranje poziva"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blokiranje poziva je privremeno isključeno"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Blokiranje poziva je onemogućeno zato što ste kontaktirali službe za pomoć u hitnim slučajevima sa ovog telefona u poslednjih 48 sati. Automatski će biti ponovo omogućeno kada istekne period od 48 sati."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Uvezi brojeve"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Ranije ste označili neke pozivaoce koje automatski treba preusmeriti na govornu poštu preko drugih aplikacija."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Prikaži brojeve"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Uvezi"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Uvoz nije uspeo"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Deblokiraj broj"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Dodaj broj"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Pozivi sa ovih brojeva će biti blokirani i poruke govorne pošte će se automatski brisati."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Pozivi sa ovih brojeva će biti blokirani, ali pozivaoci sa ovih brojeva će i dalje moći da vam ostavljaju poruke govorne pošte."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blokirani brojevi"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> je nevažeći."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> je već blokiran."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Blokiranje poziva je onemogućeno na 48 sati"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Onemogućeno je zato što je upućen hitan poziv."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Nalozi za pozivanje"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Uključi"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Podesi dozvole"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Da biste omogućili brzo biranje, uključite dozvolu za Kontakte."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Da biste videli evidenciju poziva, uključite dozvolu za Telefon."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Da biste videli kontakte, uključite dozvolu za Kontakte."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Da biste pristupili govornoj pošti, uključite dozvolu za Telefon."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Da biste pretražili kontakte, uključite dozvole za Kontakte."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Da biste uputili poziv, uključite dozvolu za Telefon."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacija Telefon nema dozvolu za upisivanje u sistemska podešavanja."</string>
+</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
new file mode 100644
index 0000000..c9f3240
--- /dev/null
+++ b/res/values-bg/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Телефон"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Клавиатура за набиране"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"История на обажданията"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Сигнал за неправилен номер"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Копиране на номера"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Копиране на преписа"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Блокиране на номера"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Блокирахте <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Отблокиране на номера"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Отблокирахте <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ОТМЯНА"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Изтриване"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Редактиране на номера преди обаждане"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Изчистване на историята на обажданията"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Изтриване на гласова поща"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Гл. поща е изтрита"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ОТМЯНА"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Да се изчисти ли историята на обажд.?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Така ще се изтрият всички обаждания от историята ви"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Историята на обажд. се изчиства…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Телефон"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Пропуснато обаждане"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Пропуснато служебно обаждане"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Пропуснати обаждания"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуснати обаждания"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Обратно обаждане"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Съобщение"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> гласови съобщения </item>
+      <item quantity="one">Гласово съобщение</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Пускане"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова гласова поща от <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Гл. поща не можа да се възпроизведе"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Гласовата поща се зарежда…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Гласовата поща не можа да се зареди"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Само обаждания с гласова поща"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Само входящи обаждания"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Само изходящи обаждания"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Само пропуснати обаждания"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Визуална гласова поща"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Преглеждайте и прослушвайте гласовата си поща, без да се налага да се обаждате на номер. Може да бъдете таксувани за данни."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Настройки"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Няма налични актуализации на гласовата поща"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Има нова гласова поща, която не може да се зареди в момента."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Настройте гласовата си поща"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Няма звук"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Настройка"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Чуйте гл. си поща"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Избиране на номер"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Избиране на номер"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Запомняне на този избор"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"търсене"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"набиране"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"номер за набиране"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Пускане или спиране на възпроизвеждането"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Включване или изключване на високоговорителя"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Търсене на позиция за възпроизвеждане"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Намаляване на скоростта на възпроизвеждане"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Увеличаване на скоростта на възпроизвеждане"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"История на обажданията"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Още опции"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"клавиатура за набиране"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Показване само на изходящите"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Показване само на входящите"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Показване само на пропуснатите"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Показване само на гл. поща"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Показване на всички обаждания"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Добавяне на 2-сек пауза"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Добавяне на изчакване"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Настройки"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Нов контакт"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Всички контакти"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Подробности за обаждане"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Данните не са налице"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Използване на тонова клавиатура"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Назад към текущото обаждане"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Добавяне на обаждане"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Вх. обаждане"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Изх. обаждане"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Пропуснато обаждане"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Входящо видеообаждане"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Изходящо видеообаждане"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Пропуснато видеообаждане"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Гласова поща"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Отхвърлено обаждане"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Блокирано обаждане"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Вх. обаждания"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Пускане на гласовата поща"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Преглед на контактa <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Обаждане до <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Подробности за контакта за <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> обаждания."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Видеообаждане."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Изпращане на SMS до <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослушана гласова поща"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Стартиране на гласово търсене"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Обаждане на <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Неизвестен"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Гласова поща"</string>
+    <string name="private_num" msgid="6374339738119166953">"Частен номер"</string>
+    <string name="payphone" msgid="7726415831153618726">"Обществен телефон"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> в <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Не можете да се обадите на този номер"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"За да настроите гласовата поща, отворете „Меню“ &gt; „Настройки“."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"За да чуете гласовата си поща, първо изключете самолетния режим."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Зарежда се…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Зарежда се от SIM карта..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Контакти от SIM карта"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Няма налично приложение за контакти"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Гласовото търсене не е налице"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Не може да се осъществи телефонно обаждане, защото приложението Телефон е деактивирано."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"На устройството няма приложение за това действие"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Търсене в контактите"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Доб. номер или потърс. контакт"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Историята на обажданията ви е празна"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Извършване на обаждане"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Нямате пропуснати обаждания."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Входящата ви гласова поща е празна."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Показване само на любимите"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"История на обажданията"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Всички"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Пропуснати"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Гл. поща"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Да се блокира ли <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Обажданията от този номер ще бъдат блокирани, а гласовите съобщения – автоматично изтривани."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Обажданията от този номер ще бъдат блокирани, но обаждащият се пак може да е в състояние да ви оставя гласови съобщения."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"БЛОКИРАНЕ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Да се отблокира ли <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Този номер вече няма да е блокиран за извършване на обаждания до вас."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ОТБЛОКИРАНЕ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Бързо набиране"</string>
+    <string name="tab_history" msgid="2563144697322434940">"История на обажданията"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Контакти"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Гласова поща"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Премахнато от любимите"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Отмяна"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Обаждане на <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Създаване на нов контакт"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Добавяне към контакт"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Изпращане на SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Провеждане на видеообаждане"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Блокиране на номера"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> нови пропуснати обаждания"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Още нямате контакти за бързо набиране"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Добавяне на любим контакт"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Още нямате контакти"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Добавяне на контакт"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Докоснете изображението, за да видите всички номера, или го натиснете и задръжте за пренареждане"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Премахване"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видеообаждане"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Изпращане на съобщение"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Подробности за обаждането"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Обаждане до <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропуснато обаждане от <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Прието обаждане от <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Непрочетено гласово съобщение от <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Гласово съобщение от <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Обаждане до <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"на <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Обаждане"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Обаждане на <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Видеообаждане до <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Прослушване на гласовата поща от <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Пускане на гласовата поща от <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Поставяне на пауза на гласовата поща от <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Изтриване на гласовата поща от <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> нови гласови съобщения</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ново гласово съобщение</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Създаване на контакт за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Добавяне на <xliff:g id="NAMEORNUMBER">^1</xliff:g> към съществуващ контакт"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Подробности за обаждането за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Изтрито от историята на обажданията"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Днес"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Вчера"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"По-стари"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Списък с обаждания"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Включване на високоговорителя."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Изключване на високоговорителя."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"По-бързо възпроизвеждане."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"По-бавно възпроизвеждане."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Стартиране или поставяне на пауза на възпроизвеждането."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Опции за показване"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуци и вибриране"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Достъпност"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Мелодия на телефона"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибриране и при обаждания"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звук при набиране"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Продължителност на звука при набиране"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Нормално"</item>
+    <item msgid="6177579030803486015">"Продължително"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Бързи отговори"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Обаждания"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Блокиране на обажданията"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Блокир. на обажданията е временно изкл."</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Блокирането на обажданията е деактивирано, защото в рамките на последните 48 часа сте се свързали със спешните служби от този телефон. То автоматично ще бъде активирано отново, когато периодът от 48 часа изтече."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Импортиране на номерата"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"По-рано означихте обажданията от някои контакти автоматично да се прехвърлят към гласова поща чрез други приложения."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Преглед на номерата"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Импортиране"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Импортирането не бе успешно"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Отблокиране на номера"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Добавяне на номер"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Обажданията от тези номера ще бъдат блокирани, а гласовите съобщения – автоматично изтривани."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Обажданията от тези номера ще бъдат блокирани, но обаждащите се от тях пак може да са в състояние да ви оставят гласови съобщения."</string>
+    <string name="block_list" msgid="7760188925338078011">"Блокирани номера"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> е невалиден."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> вече е блокиран."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Блокирането на обажданията е деактивирано за 48 часа"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Деактивирано, тъй като бе извършено спешно обаждане."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Профили за обаждане"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Включване"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Задаване на разрешенията"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"За да активирате бързото набиране, включете разрешението за Контакти."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"За да видите списъка с обажданията си, включете разрешението за Телефон."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"За да видите контактите си, включете разрешението за Контакти."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"За да осъществите достъп до гласовата си поща, включете разрешението за Телефон."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"За да търсите в контактите си, включете разрешенията за тях."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"За да извършите обаждане, включете разрешението за Телефон."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Приложението Телефон няма разрешение да записва в системните настройки."</string>
+</resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
new file mode 100644
index 0000000..b0b9151
--- /dev/null
+++ b/res/values-bn-rBD/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ফোন"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ফোন"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ফোন ডায়ালপ্যাড"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ফোন"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"পুরোনো কলের তালিকা"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"ভুল নম্বর প্রতিবেদন করুন"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"নম্বর প্রতিলিপি করুন"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ট্রান্সক্রিপশান প্রতিলিপি করুন"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"নম্বর অবরোধ করুন"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> অবরোধ করা হয়েছে"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"নম্বর অবরোধ মুক্ত করুন"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> অবরোধ মুক্ত করা হয়েছে"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"পূর্বাবস্থায় ফিরুন"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"মুছুন"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"কল করার আগে নম্বর সম্পাদনা করুন"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"পুরোনো কলের তালিকা সাফ করুন"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ভয়েসমেল মুছুন"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"ভয়েসমেল মোছা হয়েছে"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"পূর্বাবস্থায় ফিরুন"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"কল ইতিহাস সাফ করবেন?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"এটি আপনার ইতিহাস থেকে সমস্ত কল মুছে দেবে"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"কল ইতিহাস সাফ করা হচ্ছে…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ফোন"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"মিস করা কল"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"কাজের কল মিস করেছেন"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"মিস করা কলগুলি"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>টি মিস করা কল"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"ঘুরিয়ে কল করুন"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"বার্তা"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"শুনুন"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> এর থেকে নতুন ভয়েসমেল"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"ভয়েসমেল প্লে করা যায়নি"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"ভয়েসমেল লোড করা হচ্ছে..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"ভয়েসমেল লোড করা যায়নি"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"কেবলমাত্র ভয়েসমেলের সাথে কলগুলি"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"কেবলমাত্র ইনকামিং কলগুলি"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"কেবলমাত্র আউটগোয়িং কলগুলি"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"কেবলমাত্র মিসড কলগুলি"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"ভিজ্যুয়াল ভয়েসমেল"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"কল করার একটি নম্বর ছাড়াই আপনার ভয়েসমেল দেখুন এবং শুনুন। ডেটা চার্জ প্রযোজ্য হতে পারে।"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"সেটিংস"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"ভয়েসমেলের আপডেটগুলি অনুপলব্ধ"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"নতুন ভয়েসমেল অপেক্ষা করছে৷ এখনই লোড করা যাবে না৷"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"আপনার ভয়েসমেল সেট আপ করুন"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"অডিও অনুপলব্ধ"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"সেট আপ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ভয়েসমেলে কল করুন"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"নম্বর চয়ন করুন"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"নম্বর চয়ন করুন"</string>
+    <string name="make_primary" msgid="5829291915305113983">"এই পছন্দটিকে মনে রাখুন"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"অনুসন্ধান"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ডায়াল করুন"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ডায়াল করার জন্য নম্বর"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"প্লেব্যাক প্লে করুন বা থামান"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"স্পিকার চালু বা বন্ধ করুন"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"প্লেব্যাক অবস্থান খুঁজুন"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"প্লেব্যাকের হার হ্রাস করুন"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"প্লেব্যাকের হার বৃদ্ধি করুন"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"কল ইতিহাস"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"আরো বিকল্প"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ডায়াল প্যাড"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"কেবলমাত্র আউটগোয়িং দেখান"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"কেবলমাত্র ইনকামিং দেখান"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"কেবলমাত্র মিসড দেখান"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"কেবলমাত্র ভয়েসমেলগুলি দেখান"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"সমস্ত কল দেখান"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"২- সেকেন্ড বিরতি যোগ করুন"</string>
+    <string name="add_wait" msgid="3360818652790319634">"অপেক্ষা যোগ করুন"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"সেটিংস"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"নতুন পরিচিতি"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"সকল পরিচিতি"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"কলের বিবরণ"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"বিশদ বিবরণ অনুপলব্ধ"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"স্পর্শ স্বর কীপ্যাড ব্যবহার করুন"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"প্রগতিতে থাকা কলে প্রত্যাবর্তন"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"কল যোগ করুন"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"ইনকামিং কল"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"আউটগোয়িং কল"</string>
+    <string name="type_missed" msgid="2720502601640509542">"মিসড কল"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ইনকামিং ভিডিও কল"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"আউটগোয়িং ভিডিও কল"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"মিস করা ভিডিও কল"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"ভয়েসমেল"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"অস্বীকৃত কল"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"অবরুদ্ধ কল"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ইনকামিং কলগুলি"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"ভয়েসমেল প্লে করুন"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> পরিচিতি দেখুন"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> কে কল করুন"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> পরিচিতির বিশদ বিবরণ"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>টি কল৷"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ভিডিও কল।"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> কে SMS পাঠান"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"না শোনা ভয়েসমেল"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"ভয়েস অনুসন্ধান শুরু করুন"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> এ কল করুন"</string>
+    <string name="unknown" msgid="740067747858270469">"অজানা"</string>
+    <string name="voicemail" msgid="3851469869202611441">"ভয়েসমেল"</string>
+    <string name="private_num" msgid="6374339738119166953">"ব্যক্তিগত নম্বর"</string>
+    <string name="payphone" msgid="7726415831153618726">"পে ফোন"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> সেকেন্ড"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> মিনিট <xliff:g id="SECONDS">%s</xliff:g> সেকেন্ড"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> তারিখে <xliff:g id="TIME">%2$s</xliff:g>\'টায়"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"এই নম্বরে কল করতে পারবেন না"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ভয়েসমেল সেট আপ করতে, মেনু &gt; সেটিংস এ যান৷"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"ভয়েসমেলে কল করতে, সবার আগে বিমানমোড বন্ধ করুন৷"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"লোড হচ্ছে..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"সিম কার্ড থেকে লোড করা হচ্ছে…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"সিম কার্ডের পরিচিতিগুলি"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"কোনো পরিচিতি অ্যাপ্লিকেশান উপলব্ধ নয়"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"ভয়েস অনুসন্ধান অনুপলব্ধ"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"কোনো ফোন কল করা যাবে না কারণ ফোন অ্যাপ্লিকেশানটি অক্ষম করা হয়েছে৷"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"এর জন্য এই ডিভাইসে কোনো অ্যাপ্লিকেশান নেই"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"পরিচিতিগুলি অনুসন্ধান করুন"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"সংখ্যা যোগ করুন বা পরিচিতিগুলি অনুসন্ধান করুন"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"আপনার পুরোনো কলের তালিকা খালি আছে"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"একটি কল করুন"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"আপনার কোনো মিসড কল নেই।"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"আপনার ভয়েসমেলের ইনবক্স খালি রয়েছে।"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"কেবলমাত্র পছন্দসইগুলি দেখান"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"পুরোনো কলের তালিকা"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"সমস্ত"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"মিসড"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"ভয়েসমেল"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> অবরোধ করবেন?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"এই নম্বর থেকে আসা কলগুলি অবরোধ করা হবে এবং ভয়েসমেলগুলি স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে৷"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"এই নম্বর থেকে আসা কলগুলি অবরোধ করা হবে, কিন্তু কলার হয়ত এখনও আপনাকে ভয়েসমেলগুলি পাঠাতে পারবে৷"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"অবরোধ করুন"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> অবরোধ মুক্ত করবেন?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"আপনাকে কল করার জন্য এই নম্বরটি আর অবরুদ্ধ হিসাবে থাকবে না৷"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"অবরোধ মুক্ত করুন"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"দ্রুত ডায়াল"</string>
+    <string name="tab_history" msgid="2563144697322434940">"পুরোনো কলের তালিকা"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"পরিচিতিগুলি"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"ভয়েস মেল"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"পছন্দসই থেকে সরানো হয়েছে"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"পূর্বাবস্থায় ফিরুন"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> কে কল করুন"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"নতুন পরিচিতি তৈরি করুন"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"একটি পরিচিতিতে যোগ করুন"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS পাঠান"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ভিডিও কল করুন"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"নম্বর অবরোধ করুন"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>টি নতুন মিসড কল"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"আপনার স্পীড ডায়ালে এখনও পর্যন্ত কেউ নেই"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"একটি পছন্দসই যোগ করুন"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"আপনার এখনও পর্যন্ত কোনো পরিচিতি নেই"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"একটি পরিচিতি যোগ করুন"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"সমস্ত নম্বর দেখতে চিত্রে স্পর্শ করুন বা রেকর্ড করতে ধরে রাখুন"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"সরান"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ভিডিও কল"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"একটি বার্তা পাঠান"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"কলের বিশদ বিবরণ"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর কল"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> থেকে মিস হওয়া কল৷"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> এর থেকে উত্তর দেওয়া কল৷"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> , <xliff:g id="TYPEORLOCATION">^2</xliff:g> , <xliff:g id="TIMEOFCALL">^3</xliff:g> , <xliff:g id="PHONEACCOUNT">^4</xliff:g> এর থেকে অপঠিত ভয়েসমেল৷"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> , <xliff:g id="TYPEORLOCATION">^2</xliff:g> , <xliff:g id="TIMEOFCALL">^3</xliff:g> , <xliff:g id="PHONEACCOUNT">^4</xliff:g> এর থেকে ভয়েসমেল৷"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> এ কল করুন৷"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> এ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"কল করুন"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর কল"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-এ ভিডিও কল করুন।"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর থেকে আসা ভয়েসমেল শোনা হয়েছে"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর থেকে ভয়েসমেল প্লে করুন"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর থেকে ভয়েসমেলে বিরাম দিন"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর থেকে ভয়েসমেল মুছুন"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>টি নতুন ভয়েসমেল</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>টি নতুন ভয়েসমেল</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর জন্য পরিচিতি তৈরি করুন"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"বিদ্যমান পরিচিতিতে <xliff:g id="NAMEORNUMBER">^1</xliff:g> যোগ করুন"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর কলের বিবরণ"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"কলের ইতিহাস থেকে মোছা হয়েছে"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"আজ"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"গতকাল"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"পুরোনো"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"কলগুলির তালিকা"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"স্পিকার চালু করুন৷"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"স্পিকার বন্ধ করুন৷"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"দ্রুত প্লে করুন৷"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"ধীরে প্লে করুন৷"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"প্লেব্যাক শুরু করুন বা বিরতি দিন৷"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"প্রদর্শনের বিকল্পগুলি"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"শব্দ এবং কম্পন"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"অ্যাক্সেসযোগ্যতা"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ফোন রিংটোন"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"এছাড়াও কল এলে কম্পিত করুন"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ডায়ালপ্যাড টোনগুলি"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ডায়ালপ্যাড স্বরের দৈর্ঘ্য"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"স্বাভাবিক"</item>
+    <item msgid="6177579030803486015">"দীর্ঘ"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"দ্রুত প্রতিক্রিয়াগুলি"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"কল"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"কল অবরোধ করা"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"কল অবরোধ সাময়িকভাবে বন্ধ রয়েছে"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"কল অবরোধ অক্ষম করা হয়েছে কারণ আপনি গত ২৮ ঘন্টার মধ্যে এই ফোন থেকে জরুরি পরিষেবায় যোগাযোগ করেছেন। ২৮ ঘন্টার সময়সীমা পেরিয়ে গেলেই এটি স্বয়ংক্রিয়ভাবে পুনরায় সক্ষম হবে।"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"নম্বরগুলি আমদানি করুন"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"আপনি আগে থেকেই অন্য অ্যাপ্লিকেশানগুলির মাধ্যমে স্বয়ংক্রিয়ভাবে ভয়েস মেল পাঠানোর জন্য কিছু কলারকে চিহ্নিত করেছেন৷"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"নম্বরগুলি দেখুন"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"আমদানি করুন"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"আমদানি ব্যর্থ হয়েছে"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"নম্বর অবরোধ মুক্ত করুন"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"একটি নম্বর যোগ করুন"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"এই নম্বরগুলি থেকে আসা কলগুলি অবরোধ করা হবে এবং ভয়েসমেলগুলি স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে৷"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"এই নম্বরগুলি থেকে আসা কলগুলি অবরোধ করা হবে, কিন্তু তারা হয়ত এখনও আপনাকে ভয়েসমেলগুলি পাঠাতে পারবে৷"</string>
+    <string name="block_list" msgid="7760188925338078011">"অবরুদ্ধ নম্বরগুলি"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> অবৈধ৷"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ইতিমধ্যেই অববোধ করা রয়েছে৷"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"৪৮ ঘন্টার জন্য কল অবরোধ করা অক্ষম করা হয়েছে"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"কোনো জরুরি কল করার কারণে অক্ষম করা হয়েছে৷"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"কলিং অ্যাকাউন্টগুলি"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"চালু করুন"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"অনুমতিগুলি সেট করুন"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"স্পীড ডায়াল সক্ষম করতে, পরিচিতিগুলির অনুমতি চালু করুন।"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"আপনার কল লগ দেখতে, ফোনের অনুমতি চালু করুন।"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"আপনার পরিচিতিগুলি দেখতে, পরিচিতিগুলির অনুমতি চালু করুন।"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"আপনার ভয়েসমেল অ্যাক্সেস করতে, ফোনের অনুমতি চালু করুন।"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"আপনার পরিচিতিগুলি অনুসন্ধান করতে, পরিচিতির অনুমতিগুলি চালু করুন।"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"একটি কল করতে, ফোনের অনুমতি চালু করুন।"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ফোনের অ্যাপ্লিকেশানকে সিস্টেম সেটিংসে লেখার অনুমতি দেওয়া হয়নি।"</string>
+</resources>
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
new file mode 100644
index 0000000..ebf293b
--- /dev/null
+++ b/res/values-bs-rBA/strings.xml
@@ -0,0 +1,464 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for applicationLabel (7762561155467201526) -->
+    <skip />
+    <!-- no translation found for launcherActivityLabel (1129729740601172692) -->
+    <skip />
+    <!-- no translation found for launcherDialpadActivityLabel (3959809805046059167) -->
+    <skip />
+    <!-- no translation found for dialerIconLabel (6500826552823403796) -->
+    <skip />
+    <!-- no translation found for callHistoryIconLabel (3734413397291301223) -->
+    <skip />
+    <!-- no translation found for action_report_number (4635403959812186162) -->
+    <skip />
+    <!-- no translation found for action_copy_number_text (588249522108594155) -->
+    <skip />
+    <!-- no translation found for copy_transcript_text (5652787482893879382) -->
+    <skip />
+    <!-- no translation found for action_block_number (1482657602262262134) -->
+    <skip />
+    <!-- no translation found for snackbar_number_blocked (939830142765936021) -->
+    <skip />
+    <!-- no translation found for action_unblock_number (3043777622269776127) -->
+    <skip />
+    <!-- no translation found for snackbar_number_unblocked (4854738171099045912) -->
+    <skip />
+    <!-- no translation found for block_number_undo (591338370336724156) -->
+    <skip />
+    <!-- no translation found for call_details_delete (1833359621896346955) -->
+    <skip />
+    <!-- no translation found for action_edit_number_before_call (3100221149873436485) -->
+    <skip />
+    <!-- no translation found for call_log_delete_all (4677609108288680411) -->
+    <skip />
+    <!-- no translation found for call_log_trash_voicemail (1283948488625129019) -->
+    <skip />
+    <!-- no translation found for snackbar_voicemail_deleted (5098542835986188582) -->
+    <skip />
+    <!-- no translation found for snackbar_voicemail_deleted_undo (3741811385891289167) -->
+    <skip />
+    <!-- no translation found for clearCallLogConfirmation_title (801753155679372984) -->
+    <skip />
+    <!-- no translation found for clearCallLogConfirmation (7899552396101432827) -->
+    <skip />
+    <!-- no translation found for clearCallLogProgress_title (3372471156216306132) -->
+    <skip />
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Propušteni poziv"</string>
+    <!-- no translation found for notification_missedWorkCallTitle (8418335304394771688) -->
+    <skip />
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Propušteni pozivi"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Propuštenih poziva: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Pozovi ovaj broj"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Poruka"</string>
+    <!-- no translation found for notification_voicemail_title (9088953961148324851) -->
+    <!-- no translation found for notification_action_voicemail_play (6113133136977996863) -->
+    <skip />
+    <!-- no translation found for notification_voicemail_callers_list (1153954809339404149) -->
+    <skip />
+    <!-- no translation found for notification_new_voicemail_ticker (895342132049452081) -->
+    <skip />
+    <!-- no translation found for voicemail_playback_error (3356071912353297599) -->
+    <skip />
+    <!-- no translation found for voicemail_fetching_content (1287895365599580842) -->
+    <skip />
+    <!-- no translation found for voicemail_fetching_timout (3959428065511972176) -->
+    <skip />
+    <!-- no translation found for call_log_voicemail_header (3945407886667089173) -->
+    <skip />
+    <!-- no translation found for call_log_incoming_header (2787722299753674684) -->
+    <skip />
+    <!-- no translation found for call_log_outgoing_header (761009180766735769) -->
+    <skip />
+    <!-- no translation found for call_log_missed_header (8017148056610855956) -->
+    <skip />
+    <!-- no translation found for visual_voicemail_title (4574199312906348905) -->
+    <skip />
+    <!-- no translation found for visual_voicemail_text (164967285234132509) -->
+    <skip />
+    <!-- no translation found for visual_voicemail_settings (8090338793118794741) -->
+    <skip />
+    <!-- no translation found for voicemail_status_voicemail_not_available (5222480147701456390) -->
+    <skip />
+    <!-- no translation found for voicemail_status_messages_waiting (6329544650250068650) -->
+    <skip />
+    <!-- no translation found for voicemail_status_configure_voicemail (8300808991932816153) -->
+    <skip />
+    <!-- no translation found for voicemail_status_audio_not_available (2449801102560158082) -->
+    <skip />
+    <!-- no translation found for voicemail_status_action_configure (8671796489912239589) -->
+    <skip />
+    <!-- no translation found for voicemail_status_action_call_server (1824816252288551794) -->
+    <skip />
+    <!-- no translation found for call_log_item_count_and_date (7641933305703520787) -->
+    <skip />
+    <!-- no translation found for sms_disambig_title (5846266399240630846) -->
+    <skip />
+    <!-- no translation found for call_disambig_title (4392886850104795739) -->
+    <skip />
+    <!-- no translation found for make_primary (5829291915305113983) -->
+    <skip />
+    <!-- no translation found for description_search_button (3660807558587384889) -->
+    <skip />
+    <!-- no translation found for description_dial_button (1274091017188142646) -->
+    <skip />
+    <!-- no translation found for description_digits_edittext (8760207516497016437) -->
+    <skip />
+    <!-- no translation found for description_playback_start_stop (5060732345522492292) -->
+    <skip />
+    <!-- no translation found for description_playback_speakerphone (6008323900245707504) -->
+    <skip />
+    <!-- no translation found for description_playback_seek (4509404274968530055) -->
+    <skip />
+    <!-- no translation found for description_rate_decrease (3161652589401708284) -->
+    <skip />
+    <!-- no translation found for description_rate_increase (6324606574127052385) -->
+    <skip />
+    <!-- no translation found for action_menu_call_history_description (9018442816219748968) -->
+    <skip />
+    <!-- no translation found for action_menu_overflow_description (2303272250613084574) -->
+    <!-- no translation found for action_menu_overflow_description (2295659037509008453) -->
+    <skip />
+    <!-- no translation found for action_menu_dialpad_button (1425910318049008136) -->
+    <skip />
+    <!-- no translation found for menu_show_outgoing_only (1965570298133301970) -->
+    <skip />
+    <!-- no translation found for menu_show_incoming_only (7534206815238877417) -->
+    <skip />
+    <!-- no translation found for menu_show_missed_only (154473166059743996) -->
+    <skip />
+    <!-- no translation found for menu_show_voicemails_only (1898421289561435703) -->
+    <skip />
+    <!-- no translation found for menu_show_all_calls (7560347482073345885) -->
+    <skip />
+    <!-- no translation found for add_2sec_pause (9214012315201040129) -->
+    <skip />
+    <!-- no translation found for add_wait (3360818652790319634) -->
+    <skip />
+    <!-- no translation found for dialer_settings_label (4305043242594150479) -->
+    <skip />
+    <!-- no translation found for menu_newContact (1209922412763274638) -->
+    <skip />
+    <!-- no translation found for menu_allContacts (6948308384034051670) -->
+    <skip />
+    <!-- no translation found for callDetailTitle (5340227785196217938) -->
+    <skip />
+    <!-- no translation found for toast_call_detail_error (6947041258280380832) -->
+    <skip />
+    <!-- no translation found for dialer_useDtmfDialpad (1707548397435075040) -->
+    <skip />
+    <!-- no translation found for dialer_returnToInCallScreen (3719386377550913067) -->
+    <skip />
+    <!-- no translation found for dialer_addAnotherCall (4205688819890074468) -->
+    <skip />
+    <!-- no translation found for type_incoming (6502076603836088532) -->
+    <skip />
+    <!-- no translation found for type_outgoing (343108709599392641) -->
+    <skip />
+    <!-- no translation found for type_missed (2720502601640509542) -->
+    <skip />
+    <!-- no translation found for type_incoming_video (82323391702796181) -->
+    <skip />
+    <!-- no translation found for type_outgoing_video (2858140021680755266) -->
+    <skip />
+    <!-- no translation found for type_missed_video (954396897034220545) -->
+    <skip />
+    <!-- no translation found for type_voicemail (5153139450668549908) -->
+    <skip />
+    <!-- no translation found for type_rejected (7783201828312472691) -->
+    <skip />
+    <!-- no translation found for type_blocked (3521686227115330015) -->
+    <skip />
+    <!-- no translation found for actionIncomingCall (6028930669817038600) -->
+    <skip />
+    <!-- no translation found for description_call_log_play_button (651182125650429846) -->
+    <skip />
+    <!-- no translation found for description_view_contact (5205669345700598415) -->
+    <skip />
+    <!-- no translation found for description_call (3443678121983852666) -->
+    <skip />
+    <!-- no translation found for description_contact_details (51229793651342809) -->
+    <skip />
+    <!-- no translation found for description_num_calls (1601505153694540074) -->
+    <skip />
+    <!-- no translation found for description_video_call (2933838090743214204) -->
+    <skip />
+    <!-- no translation found for description_send_text_message (3118485319691414221) -->
+    <skip />
+    <!-- no translation found for description_call_log_unheard_voicemail (118101684236996786) -->
+    <skip />
+    <!-- no translation found for description_start_voice_search (520539488194946012) -->
+    <skip />
+    <!-- no translation found for menu_callNumber (997146291983360266) -->
+    <skip />
+    <!-- no translation found for unknown (740067747858270469) -->
+    <skip />
+    <!-- no translation found for voicemail (3851469869202611441) -->
+    <skip />
+    <!-- no translation found for private_num (6374339738119166953) -->
+    <skip />
+    <!-- no translation found for payphone (7726415831153618726) -->
+    <skip />
+    <!-- no translation found for callDetailsShortDurationFormat (3988146235579303592) -->
+    <skip />
+    <!-- no translation found for callDetailsDurationFormat (6061406028764382234) -->
+    <skip />
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <!-- no translation found for voicemailCallLogDateTimeFormat (4388070029056487713) -->
+    <skip />
+    <!-- no translation found for dialog_phone_call_prohibited_message (5730565540182492608) -->
+    <!-- no translation found for dialog_phone_call_prohibited_message (4313552620858880999) -->
+    <skip />
+    <!-- no translation found for dialog_voicemail_not_ready_message (4384716252789515378) -->
+    <skip />
+    <!-- no translation found for dialog_voicemail_airplane_mode_message (530922773669546093) -->
+    <skip />
+    <!-- no translation found for contact_list_loading (5488620820563977329) -->
+    <skip />
+    <!-- no translation found for imei (3045126336951684285) -->
+    <skip />
+    <!-- no translation found for meid (6210568493746275750) -->
+    <skip />
+    <!-- no translation found for simContacts_emptyLoading (6700035985448642408) -->
+    <skip />
+    <!-- no translation found for simContacts_title (27341688347689769) -->
+    <skip />
+    <!-- no translation found for add_contact_not_available (5547311613368004859) -->
+    <skip />
+    <!-- no translation found for voice_search_not_available (2977719040254285301) -->
+    <skip />
+    <!-- no translation found for call_not_available (8941576511946492225) -->
+    <skip />
+    <!-- no translation found for activity_not_available (2287665636817987623) -->
+    <skip />
+    <!-- no translation found for dialer_hint_find_contact (3574350254520035364) -->
+    <skip />
+    <!-- no translation found for block_number_search_hint (5409571607043872758) -->
+    <skip />
+    <!-- no translation found for call_log_all_empty (8357417710416340920) -->
+    <skip />
+    <!-- no translation found for call_log_all_empty_action (9093210119068366147) -->
+    <skip />
+    <!-- no translation found for call_log_missed_empty (3927274175205520135) -->
+    <skip />
+    <!-- no translation found for call_log_voicemail_empty (8383585074222277550) -->
+    <skip />
+    <!-- no translation found for show_favorites_only (5520072531022614595) -->
+    <skip />
+    <!-- no translation found for call_log_activity_title (7949633151371183580) -->
+    <skip />
+    <!-- no translation found for call_log_all_title (3566738938889333307) -->
+    <skip />
+    <!-- no translation found for call_log_missed_title (4541142293870638971) -->
+    <skip />
+    <!-- no translation found for call_log_voicemail_title (940422274047025948) -->
+    <skip />
+    <!-- no translation found for block_number_confirmation_title (6862219558186931304) -->
+    <skip />
+    <!-- no translation found for block_number_confirmation_message_vvm (5655646611437082611) -->
+    <skip />
+    <!-- no translation found for block_number_confirmation_message_no_vvm (4511900601491718173) -->
+    <skip />
+    <!-- no translation found for block_number_ok (770551992296781873) -->
+    <skip />
+    <!-- no translation found for unblock_number_confirmation_title (252824779504084354) -->
+    <skip />
+    <!-- no translation found for unblock_number_confirmation_message (8521058345002166692) -->
+    <skip />
+    <!-- no translation found for unblock_number_ok (6449899182699684786) -->
+    <skip />
+    <!-- no translation found for tab_speed_dial (7552166276545648893) -->
+    <skip />
+    <!-- no translation found for tab_history (2563144697322434940) -->
+    <skip />
+    <!-- no translation found for tab_all_contacts (1410922767166533690) -->
+    <skip />
+    <!-- no translation found for tab_voicemail (155024725947496746) -->
+    <skip />
+    <!-- no translation found for favorite_hidden (5011234945140912047) -->
+    <skip />
+    <!-- no translation found for favorite_hidden_undo (2508998611039406474) -->
+    <skip />
+    <!-- no translation found for search_shortcut_call_number (7277194656832895870) -->
+    <skip />
+    <!-- no translation found for search_shortcut_create_new_contact (1679917465521554093) -->
+    <skip />
+    <!-- no translation found for search_shortcut_add_to_contact (4327842393369915751) -->
+    <skip />
+    <!-- no translation found for search_shortcut_send_sms_message (2569304043345025525) -->
+    <skip />
+    <!-- no translation found for search_shortcut_make_video_call (1265971685034465166) -->
+    <skip />
+    <!-- no translation found for search_shortcut_block_number (4787156645163436072) -->
+    <skip />
+    <!-- no translation found for num_missed_calls (8081736535604293886) -->
+    <skip />
+    <!-- no translation found for speed_dial_empty (8838921693673366129) -->
+    <skip />
+    <!-- no translation found for speed_dial_empty_add_favorite_action (7944893641496695770) -->
+    <skip />
+    <!-- no translation found for all_contacts_empty (471370638298229686) -->
+    <skip />
+    <!-- no translation found for all_contacts_empty_add_contact_action (1515782853819374618) -->
+    <skip />
+    <!-- no translation found for contact_tooltip (2019777545923635266) -->
+    <skip />
+    <!-- no translation found for remove_contact (1080555335283662961) -->
+    <skip />
+    <!-- no translation found for call_log_action_video_call (7724301709041128296) -->
+    <skip />
+    <!-- no translation found for call_log_action_send_message (5679719296905285131) -->
+    <skip />
+    <!-- no translation found for call_log_action_details (701345508704970622) -->
+    <skip />
+    <!-- no translation found for call_log_action_call (463690849042459842) -->
+    <skip />
+    <!-- no translation found for description_incoming_missed_call (2381085098795943627) -->
+    <skip />
+    <!-- no translation found for description_incoming_answered_call (7117665748428816544) -->
+    <skip />
+    <!-- no translation found for description_unread_voicemail (5826351827625665597) -->
+    <skip />
+    <!-- no translation found for description_read_voicemail (133974208364152610) -->
+    <skip />
+    <!-- no translation found for description_outgoing_call (6386364390619734734) -->
+    <skip />
+    <!-- no translation found for description_phone_account (1767072759541443861) -->
+    <skip />
+    <!-- no translation found for description_call_log_call_action (3682561657090693134) -->
+    <skip />
+    <!-- no translation found for description_call_action (4000549004089776147) -->
+    <skip />
+    <!-- no translation found for description_video_call_action (7386922428155062213) -->
+    <skip />
+    <!-- no translation found for description_voicemail_action (8054891873788903063) -->
+    <skip />
+    <!-- no translation found for description_voicemail_play (2689369874037785439) -->
+    <skip />
+    <!-- no translation found for description_voicemail_pause (3905259748756919693) -->
+    <skip />
+    <!-- no translation found for description_voicemail_delete (2025472770630153436) -->
+    <skip />
+    <!-- no translation found for description_voicemail_unread (8708346053055570332) -->
+    <!-- no translation found for description_create_new_contact_action (818755978791008167) -->
+    <skip />
+    <!-- no translation found for description_add_to_existing_contact_action (6081200053494414351) -->
+    <skip />
+    <!-- no translation found for description_details_action (2433827152749491785) -->
+    <skip />
+    <!-- no translation found for toast_entry_removed (8010830299576311534) -->
+    <skip />
+    <!-- no translation found for call_log_header_today (3225248682434212981) -->
+    <skip />
+    <!-- no translation found for call_log_header_yesterday (9139172458834033092) -->
+    <skip />
+    <!-- no translation found for call_log_header_other (5769921959940709084) -->
+    <skip />
+    <!-- no translation found for call_detail_list_header (3752717059699600861) -->
+    <skip />
+    <!-- no translation found for voicemail_speaker_on (209154030283487068) -->
+    <skip />
+    <!-- no translation found for voicemail_speaker_off (7390530056413093958) -->
+    <skip />
+    <!-- no translation found for voicemail_play_faster (3444751008615323006) -->
+    <skip />
+    <!-- no translation found for voicemail_play_slower (4544796503902818832) -->
+    <skip />
+    <!-- no translation found for voicemail_play_start_pause (3687447935787768983) -->
+    <skip />
+    <!-- no translation found for list_delimeter (4571593167738725100) -->
+    <skip />
+    <!-- no translation found for display_options_title (7812852361055667468) -->
+    <skip />
+    <!-- no translation found for sounds_and_vibration_title (1692290115642160845) -->
+    <skip />
+    <!-- no translation found for accessibility_settings_title (6068141142874046249) -->
+    <skip />
+    <!-- no translation found for ringtone_title (760362035635084653) -->
+    <skip />
+    <!-- no translation found for vibrate_on_ring_title (3362916460327555241) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_title (6571449695997521615) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_length_title (8581125689808919460) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_length_entries:0 (1036113889050195575) -->
+    <!-- no translation found for dtmf_tone_length_entries:1 (6177579030803486015) -->
+    <!-- no translation found for respond_via_sms_setting_title (1318281521087951580) -->
+    <skip />
+    <!-- no translation found for call_settings_label (313434211353070209) -->
+    <skip />
+    <!-- no translation found for manage_blocked_numbers_label (5959801428936629196) -->
+    <skip />
+    <!-- no translation found for blocked_numbers_disabled_emergency_header_label (7870947220238070418) -->
+    <skip />
+    <!-- no translation found for blocked_numbers_disabled_emergency_desc (7755803249073401381) -->
+    <skip />
+    <!-- no translation found for import_send_to_voicemail_numbers_label (1606601823746799926) -->
+    <skip />
+    <!-- no translation found for blocked_call_settings_import_description (8640906226815125906) -->
+    <skip />
+    <!-- no translation found for blocked_call_settings_view_numbers_button (6698986720875955935) -->
+    <skip />
+    <!-- no translation found for blocked_call_settings_import_button (178821255125295473) -->
+    <skip />
+    <!-- no translation found for send_to_voicemail_import_failed (5547202002133560069) -->
+    <skip />
+    <!-- no translation found for description_blocked_number_list_delete (3240093199107796792) -->
+    <skip />
+    <!-- no translation found for addBlockedNumber (6064812257482886526) -->
+    <skip />
+    <!-- no translation found for block_number_footer_message_vvm (5387302253765439712) -->
+    <skip />
+    <!-- no translation found for block_number_footer_message_no_vvm (223238617533822381) -->
+    <skip />
+    <!-- no translation found for block_list (7760188925338078011) -->
+    <skip />
+    <!-- no translation found for invalidNumber (619058581062192851) -->
+    <skip />
+    <!-- no translation found for alreadyBlocked (282340105563646876) -->
+    <skip />
+    <!-- no translation found for call_blocking_disabled_notification_title (8185193413377920194) -->
+    <skip />
+    <!-- no translation found for call_blocking_disabled_notification_text (5330772013626378526) -->
+    <skip />
+    <!-- no translation found for phone_account_settings_label (5864322009841175294) -->
+    <skip />
+    <!-- no translation found for permission_single_turn_on (1543391076065465464) -->
+    <skip />
+    <!-- no translation found for permission_multiple_turn_on (2426278457455950554) -->
+    <skip />
+    <!-- no translation found for permission_no_speeddial (6882563445996184051) -->
+    <skip />
+    <!-- no translation found for permission_no_calllog (555711464287041043) -->
+    <skip />
+    <!-- no translation found for permission_no_contacts (6237980143178936279) -->
+    <skip />
+    <!-- no translation found for permission_no_voicemail (8306280257799917574) -->
+    <skip />
+    <!-- no translation found for permission_no_search (84152933267902056) -->
+    <skip />
+    <!-- no translation found for permission_place_call (2101287782615887547) -->
+    <skip />
+    <!-- no translation found for toast_cannot_write_system_settings (5614246168296606709) -->
+    <skip />
+</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
new file mode 100644
index 0000000..018dd8d
--- /dev/null
+++ b/res/values-ca/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telèfon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telèfon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Teclat del telèfon"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telèfon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Historial de trucades"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Informa d\'un número incorrecte"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copia el número"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copia la transcripció"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloqueja el número"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"S\'ha bloquejat el número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Desbloqueja el número"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"S\'ha desbloquejat el número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"DESFÉS"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Suprimeix"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Edita el número abans de trucar"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Esborra l\'historial de trucades"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Suprimeix la bústia de veu"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correu de veu suprimit"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESFÉS"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Esborrar l\'historial de trucades?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Se suprimiran totes les trucades de l\'historial."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Esborrant historial de trucades..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telèfon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Trucada perduda"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Trucada perduda de feina"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Trucades perdudes"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> trucades perdudes"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Torna la trucada"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Missatge"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> bústies de veu </item>
+      <item quantity="one">Bústia de veu</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reprodueix"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nou missatge de veu de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Error en reproduir el missatge de veu."</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"S\'està carregant la bústia de veu..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"No s\'ha pogut carregar la bústia de veu."</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Només trucades amb bústia de veu"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Només trucades entrants"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Només trucades sortints"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Només trucades perdudes"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Bústia de veu visual"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Consulta i escolta els missatges de la bústia de veu sense haver de trucar a cap número de telèfon. És possible que s\'apliquin càrrecs de dades."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Configuració"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"No hi ha cap actualització de correu de veu disponible."</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Hi ha un correu de veu nou en espera. Ara no es pot carregar."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configura la bústia de veu."</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"L\'àudio no està disponible."</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configura"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Truca a bústia veu"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Tria d\'un número"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Tria d\'un número"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Recorda aquesta selecció"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"cerca"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"marca"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"número que es marcarà"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Reprodueix o atura la reproducció"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Activa o desactiva el mans lliures"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Cerca la posició de la reproducció"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Disminueix la velocitat de la reproducció"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Augmenta la velocitat de la reproducció"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historial de trucades"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Més opcions"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"teclat"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostra només trucades sortints"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostra només trucades entrants"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Mostra només trucades perdudes"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostra només missatges de veu"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostra totes les trucades"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Afegeix una pausa de 2 segons"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Afegeix espera"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Configuració"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Contacte nou"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Tots els contactes"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detalls de la trucada"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Informació no disponible"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Utilitza el teclat de tons"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Torna a la trucada en curs"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Afegeix una trucada"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Trucada entrant"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Trucada de sortida"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Trucada perduda"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Videotrucada entrant"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Videotrucada sortint"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Videotrucada perduda"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Bústia de veu"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Trucada rebutjada"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Trucada bloquejada"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Trucades entrants"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Reprodueix el missatge de veu"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Visualitza el contacte <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Truca a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Dades de contacte de: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> trucades"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videotrucada"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Envia un SMS a <xliff:g id="NAME">%1$s</xliff:g>."</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Missatge de veu no escoltat"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Inicia la cerca per veu"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Truca al <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Desconegut"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Bústia de veu"</string>
+    <string name="private_num" msgid="6374339738119166953">"Número privat"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telèfon públic"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> a les <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"No es pot trucar a aquest número."</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Per configurar la bústia de veu, vés a Menú &gt; Configuració."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Per trucar a la bústia de veu, primer has de desactivar el mode d\'avió."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"S\'està carregant…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"S\'està carregant des de la targeta SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contactes de la targeta SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"No hi ha cap contacte disponible."</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"La cerca per veu no està disponible."</string>
+    <string name="call_not_available" msgid="8941576511946492225">"No es pot fer una trucada telefònica perquè s\'ha desactivat l\'aplicació de telèfon."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"No hi ha cap aplicació per a això en aquest dispositiu."</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Cerca contactes"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Afegeix núm. o cerca contactes"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"El teu historial de trucades està buit"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Fes una trucada"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"No tens cap trucada perduda."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"La safata d\'entrada de la bústia de veu està buida."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Mostra només els preferits"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Historial de trucades"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Totes"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Perdudes"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Missatge de veu"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Vols bloquejar el número <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Es bloquejaran les trucades d\'aquest número i els missatges de veu se suprimiran automàticament."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Es bloquejaran les trucades d\'aquest número, però és possible que continuïn deixant-te missatges de veu."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOQUEJA"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Vols desbloquejar el número <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Les trucades d\'aquest número deixaran d\'estar bloquejades."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DESBLOQUEJA"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Marcatge ràpid"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Historial de trucades"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contactes"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Bústia de veu"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Eliminat dels preferits"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfés"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Truca al <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crea un contacte nou"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Afegeix a un contacte"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Envia SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fes una videotrucada"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloqueja el número"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> trucades perdudes noves"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Encara no tens cap contacte al marcatge ràpid"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Afegeix un contacte preferit"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Encara no tens cap contacte"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Afegeix un contacte"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Toca la imatge per veure tots els números i toca-la i mantén-la premuda per reordenar-los."</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Suprimeix"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videotrucada"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Envia un missatge"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detalls de la trucada"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Truca a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Trucada perduda de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Trucada resposta de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Missatge de veu no escoltat del contacte <xliff:g id="NAMEORNUMBER">^1</xliff:g>: <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Missatge de veu del contacte <xliff:g id="NAMEORNUMBER">^1</xliff:g>: <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Trucada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"a <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Truca"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Truca a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videotrucada amb <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Escolta el missatge a la bústia de veu de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Reprodueix el missatge de veu de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Posa en pausa el missatge de veu de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Suprimeix el missatge de veu de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nous correus de veu</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nou correu de veu</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Crea un contacte per a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Afegeix <xliff:g id="NAMEORNUMBER">^1</xliff:g> a un contacte existent"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detalls de la trucada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"S\'ha suprimit de l\'historial de trucades."</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Avui"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ahir"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Més antiga"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Llista de trucades"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Activa l\'altaveu."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Desactiva l\'altaveu."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Reprodueix més ràpidament."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Reprodueix més lentament."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Inicia la reproducció o la posa en pausa."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opcions de visualització"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons i vibració"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilitat"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"So de trucada"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibra també en trucades"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons del teclat"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durada del to del teclat"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Llarg"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostes ràpides"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Trucades"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Bloqueig de trucades"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Bloqueig de trucades desactivat tempor."</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"El bloqueig de trucades s\'ha desactivat perquè has contactat amb els serveis d\'emergència des d\'aquest telèfon durant les últimes 48 hores. Es tornarà a activar automàticament una vegada transcorregut el període de 48 hores."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importa els números"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Has indicat que les trucades d\'alguns contactes s\'enviïn automàticament a la bústia de veu mitjançant altres aplicacions."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Mostra els números"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importa"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Error en la importació"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Desbloqueja el número"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Afegeix un número"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Es bloquejaran les trucades d\'aquests números i els missatges de veu se suprimiran automàticament."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Es bloquejaran les trucades d\'aquests números, però és possible que continuïn deixant-te missatges de veu."</string>
+    <string name="block_list" msgid="7760188925338078011">"Números bloquejats"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> no és vàlid."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ja està bloquejat."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"El bloqueig de trucades s\'ha desactivat durant 48 hores"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"S\'ha desactivat perquè s\'ha fet una trucada d\'emergència."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Comptes de trucades"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Activa"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Defineix els permisos"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Activa el permís Contactes per activar el marcatge ràpid."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Activa el permís Telèfon per veure el teu registre de trucades."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Activa el permís Contactes per veure els teus contactes."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Activa el permís Telèfon per accedir a la bústia de veu."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Per cercar els teus contactes, activa els permisos de Contactes."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Activa el permís Telèfon per fer una trucada."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"L\'aplicació Telèfon no té permís per escriure a la configuració del sistema."</string>
+</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
new file mode 100644
index 0000000..8094db4
--- /dev/null
+++ b/res/values-cs/strings.xml
@@ -0,0 +1,259 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Číselník telefonu"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Historie volání"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Nahlásit nesprávné číslo"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopírovat číslo"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopírovat přepis"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokovat číslo"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Číslo <xliff:g id="NUMBER">%1$s</xliff:g> zablokováno"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Zrušit blokování čísla"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Číslo <xliff:g id="NUMBER">%1$s</xliff:g> odblokováno"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"VRÁTIT"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Smazat"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Před voláním upravit číslo"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Vymazat historii volání"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Smazat hlasovou zprávu"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Hlas. zpráva smazána"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"VRÁTIT"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vymazat historii hovorů?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tímto z historie smažete všechny hovory."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Mazání historie volání…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Zmeškaný hovor"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Zmeškaný pracovní hovor"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Zmeškané hovory"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Zmeškané hovory: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Zavolat zpět"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Zpráva"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> hlasové zprávy </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> hlasové zprávy </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> hlasových zpráv </item>
+      <item quantity="one">Hlasová zpráva</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Přehrát"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nová hlasová zpráva – <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Hlasovou schránku nelze přehrát."</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Načítání hlasové schránky…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Hlasovou schránku nelze načíst."</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Jen hovory s hlasovou schránkou"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Jen příchozí hovory"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Jen odchozí hovory"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Jen zmeškané hovory"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vizuální hlasová schránka"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Dívejte se na hlasové zprávy a poslouchejte je, aniž byste někam museli volat. Mohou být účtovány poplatky za datový přenos."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Nastavení"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Aktualizace hlasové schránky nejsou k dispozici."</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Máte novou hlasovou zprávu. Aktuálně ji však nelze načíst."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Nastavte si hlasovou schránku."</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Zvuk není k dispozici."</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Nastavit"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Volat hlas. schránku"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Zvolte číslo"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Zvolte číslo"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Zapamatovat tuto volbu"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"vyhledat"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"vytáčení"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"číslo, které chcete vytočit"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Spuštění a zastavení přehrávání"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Zapnutí a vypnutí reproduktoru"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Vyhledání pozice přehrávání"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Snížení rychlosti přehrávání"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Zvýšení rychlosti přehrávání"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historie volání"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Více možností"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"číselník"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Zobrazit pouze odchozí"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Zobrazit pouze příchozí"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Zobrazit pouze zmeškané"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Zobrazit pouze hlas. schránku"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Zobrazit všechny hovory"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Přidat pauzu 2 s"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Přidat čekání"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Nastavení"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nový kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Všechny kontakty"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Podrobnosti hovoru"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Podrobnosti nejsou k dispozici."</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Použít dotykovou tónovou klávesnici"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Návrat k probíhajícímu hovoru"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Přidat hovor"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Příchozí hovor"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Odchozí volání"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Zmeškaný hovor"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Příchozí videohovor"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Odchozí videohovor"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Zmeškaný videohovor"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Hlasová schránka"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Zamítnutý hovor"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blokovaný hovor"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Příchozí volání"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Přehrát hlasovou schránku"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Zobrazit kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Volat kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Podrobnosti kontaktu pro <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"Počet hovorů: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videohovor"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Odeslat zprávu SMS kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nevyslechnutá hlasová zpráva"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Spustit hlasové vyhledávání"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Zavolat <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Neznámé"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Hlasová schránka"</string>
+    <string name="private_num" msgid="6374339738119166953">"Soukromé číslo"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefonní automat"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> v <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Na toto číslo nelze volat."</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Chcete-li nastavit hlasovou schránku, přejděte do části Menu &gt; Nastavení."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Chcete-li volat hlasovou schránku, nejdříve vypněte režim Letadlo."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Načítá se..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Načítání ze SIM karty..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontakty na SIM kartě"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Není k dispozici žádná aplikace pro práci s kontakty."</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Hlasové vyhledávání není k dispozici."</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Telefonický hovor nelze uskutečnit, protože aplikace Telefon byla zakázána."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Pro tuto akci v zařízení nemáte žádnou aplikaci."</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Prohledat kontakty"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Přidejte číslo nebo vyhledejte kontakty"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Historie volání je prázdná"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Zavolat"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nemáte žádné zmeškané hovory."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Hlasová schránka je prázdná."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Zobrazit pouze oblíbené"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Historie volání"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Všechny"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Zmeškané"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Schránka"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Blokovat číslo <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Volání z tohoto čísla budou zablokována. Hlasové zprávy budou automaticky smazány."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Volání z tohoto čísla budou zablokována, avšak volající vám bude moci zanechat hlasovou zprávu."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKOVAT"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Odblokovat číslo <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Příchozí hovory z tohoto čísla již nebudou blokovány."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ODBLOKOVAT"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Rychlá volba"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Historie volání"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontakty"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Hlasová schránka"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Odebráno z oblíbených"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Vrátit zpět"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Zavolat <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Vytvořit nový kontakt"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Přidat ke kontaktu"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Odeslat SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uskutečnit videohovor"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokovat číslo"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Nové zmeškané hovory: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"V rychlém vytáčení zatím nemáte žádný kontakt."</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Přidat oblíbený kontakt"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Zatím nemáte žádné kontakty"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Přidat kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Klepnutím na obrázek zobrazíte všechna čísla. Klepnutím a podržením upravíte uspořádání."</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Odstranit"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videohovor"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Odeslat zprávu"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Podrobnosti hovoru"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Volat kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Nepřijatý hovor: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Přijatý hovor: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Nepřečtená hlasová zpráva od <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Hlasová zpráva od <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Odchozí hovor: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"v účtu <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Volat"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Volat kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videohovor s kontaktem <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Poslech hlasové schránky od <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Přehrát hlasovou zprávu od kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pozastavit hlasovou zprávu od kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Smazat hlasovou zprávu od kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nové zprávy v hlasové schránce</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> nové zprávy v hlasové schránce</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nových zpráv v hlasové schránce</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nová zpráva v hlasové schránce</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Pro záznam <xliff:g id="NAMEORNUMBER">^1</xliff:g> se vytvoří nový kontakt"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Záznam <xliff:g id="NAMEORNUMBER">^1</xliff:g> se přidá k existujícímu kontaktu"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Podrobnosti volání <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Smazáno z historie volání"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Dnes"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Včera"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Starší"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Seznam volání"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Zapnout reproduktor."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Vypnout reproduktor."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Přehrávat rychleji."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Přehrávat pomaleji."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Spustit nebo pozastavit přehrávání."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Možnosti zobrazení"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvuky a vibrace"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Přístupnost"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Vyzváněcí tón telefonu"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrovat také u volání"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tóny číselníku"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Délka tónu číselníku"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normální"</item>
+    <item msgid="6177579030803486015">"Dlouhé"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Rychlé odpovědi"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Volání"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blokování hovorů"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blokování hovorů je dočasně vypnuto"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Protože jste z tohoto telefonu během posledních 48 hodin volali na tísňovou linku, bylo blokování hovorů vypnuto. Po uplynutí 48 hodin se automaticky znovu zapne."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importovat čísla"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Pomocí dalších aplikací jste dříve některé volající označili k automatickému přesměrování do hlasové schránky."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Zobrazit čísla"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importovat"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Import se nezdařil."</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Zrušit blokování čísla"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Přidat číslo"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Volání z těchto čísel budou zablokována. Hlasové zprávy budou automaticky smazány."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Volání z těchto čísel budou zablokována, avšak volající vám budou moci zanechat hlasovou zprávu."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blokovaná čísla"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Číslo <xliff:g id="NUMBER">%1$s</xliff:g> je neplatné."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Číslo <xliff:g id="NUMBER">%1$s</xliff:g> je již blokováno."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Blokování hovorů je vypnuto na 48 hodin"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Vypnuto z důvodu provedeného tísňového volání"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Účty pro volání"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Zapnout"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Nastavit oprávnění"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Chcete-li povolit rychlé vytáčení, aktivujte oprávnění Kontakty."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Chcete-li zobrazit seznam hovorů, aktivujte oprávnění Telefon."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Chcete-li zobrazit kontakty, aktivujte oprávnění Kontakty."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Chcete-li přejít do hlasové schránky, aktivujte oprávnění Telefon."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Chcete-li vyhledat kontakty, zapněte oprávnění Kontakty."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Chcete-li uskutečnit hovor, aktivujte oprávnění Telefon."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikace Telefon nemá oprávnění provádět zápis do nastavení systému."</string>
+</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
new file mode 100644
index 0000000..b66235b
--- /dev/null
+++ b/res/values-da/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Opkald"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Opkald"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefontastatur"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Opkald"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Opkaldshistorik"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Rapportér et forkert nummer"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopiér nummeret"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopiér transskriptionen"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloker nummeret"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> er blokeret"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Ophæv blokering af nummeret"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> er ikke blokeret"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"FORTRYD"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Slet"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Rediger nummeret før opkald"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Ryd opkaldshistorik"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Slet talemeddelelsen"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Talebeskeden blev slettet"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"FORTRYD"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vil du rydde opkaldshistorikken?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Dette vil slette alle opkald fra din historik"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Opkaldshistorik ryddes..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Ubesvaret opkald"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Ubesvaret arbejdsopkald"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Ubesvarede opkald"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ubesvarede opkald"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Ring tilbage"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Besked"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> talebeskeder </item>
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> talebeskeder </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spil"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Ny besked fra <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Telefonsvarerbesked kan ikke afspilles"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Telefonsvarerbesked indlæses..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Telefonsvarerbesked kan ikke indlæses"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Kun opkald med telefonsvarer"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Kun indgående opkald"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Kun udgående opkald"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Kun ubesvarede opkald"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visuel telefonsvarer"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Se og lyt til din telefonsvarer uden at skulle ringe til et nummer. Du kan blive opkrævet gebyr for dataforbrug."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Indstillinger"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Nye telefonsvarerbeskeder er ikke tilgængelige"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Ny telefonsvarerbesked venter. Den kan ikke indlæses lige nu."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Konfigurer din telefonsvarer"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Lyd er ikke tilgængelig"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfigurer"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Ring til tlfsvarer"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Vælg nummer"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Vælg nummer"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Husk dette valg"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"søg"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ring op"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"nummer at ringe op"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Start eller stop afspilning"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Slå medhør til eller fra"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Søg efter afspilningsposition"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Skru ned for afspilningshastigheden"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Skru op for afspilningshastigheden"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Opkaldshistorik"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Flere valgmuligheder"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"tastatur"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Vis kun udgående"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Vis kun indgående"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Vis kun ubesvarede"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Vis kun telefonsvarerbeskeder"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Vis alle opkald"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Tilføj pause på 2 sek."</string>
+    <string name="add_wait" msgid="3360818652790319634">"Tilføj ventetid"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Indstillinger"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Ny kontaktperson"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Alle kontaktpersoner"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Opkaldsinfo"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detaljerne er ikke tilgængelige"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Brug numerisk tastatur"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Vend tilbage til igangværende opkald"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Tilføj opkald"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Indgående opkald"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Udgående opkald"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Ubesvaret opkald"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Indgående videoopkald"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Udgående videoopkald"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Ubesvaret videoopkald"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Telefonsvarer"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Afvist opkald"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blokeret opkald"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Indgående opkald"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Afspil telefonsvarerbesked"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Vis kontaktpersonen <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Ring til <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Kontaktoplysninger for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> opkald."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videoopkald."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Send sms-besked til <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Uaflyttet besked på telefonsvareren"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Start talesøgning"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Ring til <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Ukendte"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Telefonsvarer"</string>
+    <string name="private_num" msgid="6374339738119166953">"Privat nummer"</string>
+    <string name="payphone" msgid="7726415831153618726">"Mønttelefon"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Det er ikke muligt at ringe til dette nummer"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Hvis du vil konfigurere telefonsvareren, skal du gå til Menu &gt; Indstillinger."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Hvis du vil ringe til telefonsvareren, skal du først slå Flytilstand fra."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Indlæser…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI-nummer"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Indlæser fra SIM-kort ..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontakter på SIM-kort"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Der er ingen app til kontaktpersoner"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Talesøgning er ikke tilgængelig"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Det er ikke muligt at foretage et telefonopkald, fordi applikationen Telefon er deaktiveret."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Der findes Ingen app til det på denne enhed"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Søg efter kontaktpersoner"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Tilføj nummer, eller søg i kontaktpersoner"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Din opkaldshistorik er tom"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Foretag et opkald"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Du har ingen ubesvarede opkald."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Indbakken for din telefonsvarer er tom."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Vis kun foretrukne"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Opkaldshistorik"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Alle"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Ubesvarede"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Talebesked"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Vil du blokere <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Opkald fra dette nummer blokeres, og beskeder i telefonsvareren slettes automatisk."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Opkald fra dette nummer bliver blokeret, men der kan muligvis stadig lægges beskeder i din telefonsvarer."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKER"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Vil du fjerne blokeringen af <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Dette nummer blokeres ikke længere fra at ringe til dig."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"FJERN BLOKERING"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Hurtigopkald"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Opkaldshistorik"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktpersoner"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Telefonsvarer"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Fjernet fra foretrukne"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Fortryd"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring til <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Opret ny kontaktperson"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Føj til en kontaktperson"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send sms"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Foretag videoopkald"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloker nummer"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nye ubesvarede opkald"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Der er endnu ingen kontaktpersoner i Hurtigopkald"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Angiv en kontaktperson som foretrukken"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Du har endnu ikke nogen kontaktpersoner"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Tilføj en kontaktperson"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Tryk på billedet for at se alle numre, eller tryk på billedet, og hold det nede for at omarrangere"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Fjern"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videoopkald"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Send en sms-besked"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Opkaldsinfo"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Ring til <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Mistet opkald fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Besvaret opkald fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Ulæst talebesked fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Talebesked fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Ring til <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"på <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Ring op"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Ring til <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videoopkald <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Lyt til indtalt besked fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Afspil talemeddelelsen fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Sæt talemeddelelsen fra <xliff:g id="NAMEORNUMBER">^1</xliff:g> på pause"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Slet talemeddelelsen fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> nye talemeddelelser</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nye talemeddelelser</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Opret en kontaktperson for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Føj <xliff:g id="NAMEORNUMBER">^1</xliff:g> til en eksisterende kontaktperson"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Opkaldsoplysninger for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Slettet fra opkaldshistorik"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"I dag"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"I går"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Ældre"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Opkaldsliste"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Slå højttaler til."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Slå højttaler fra."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Afspil hurtigere."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Afspil langsommere."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start afspilningen, eller sæt den på pause."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Valgmuligheder for visning"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Lyde og vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Hjælpefunktioner"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Ringetone for opkald"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer også ved opkald"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Toner for numerisk tastatur"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tonelængde for numerisk tastatur"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Lang"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hurtigt svar"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Opkald"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Opkaldsblokering"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Opkaldsblokering er midlertidigt slået fra"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Opkaldsblokering er blevet deaktiveret, da du inden for de sidste 48 timer har kontaktet en alarmcentral. Blokeringen aktiveres automatisk igen, når perioden på 48 timer er udløbet."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importér numre"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Du har tidligere angivet, at nogle opkaldere automatisk skal sendes til telefonsvareren via andre apps."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Se numre"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importér"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Importen mislykkedes"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Ophæv blokering af nummer"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Tilføj nummer"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Opkald fra disse numre blokeres, og beskeder i telefonsvareren slettes automatisk."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Opkald fra disse numre bliver blokeret, men der kan muligvis stadig lægges beskeder i din telefonsvarer."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blokerede telefonnumre"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> er ugyldigt."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> er allerede blokeret."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Opkaldsblokering er blevet deaktiveret i 48 timer"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Deaktiveret, da du har foretaget et nødopkald."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Opkaldskonti"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Aktivér"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Angiv tilladelser"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Slå tilladelsen Kontaktpersoner til for at aktivere hurtigopkald."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Slå tilladelsen Telefon til for at se din opkaldsliste."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Slå tilladelsen Kontaktpersoner til for at se dine kontaktpersoner."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Slå tilladelsen Telefon til for at få adgang til din telefonsvarer,"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Hvis du vil søge i dine kontaktpersoner, skal du slå tilladelserne Kontaktpersoner til."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Slå tilladelsen Telefon til for at foretage et opkald."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Opkaldsappen har ikke tilladelse til at ændre systemindstillinger."</string>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
new file mode 100644
index 0000000..229059e
--- /dev/null
+++ b/res/values-de/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Wähltasten verwenden"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Anrufliste"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Falsche Nummer melden"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Nummer kopieren"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Transkription kopieren"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Nummer blockieren"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> blockiert"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Blockierung der Nummer aufheben"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Blockierung von <xliff:g id="NUMBER">%1$s</xliff:g> aufgehoben"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"Rückgängig"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Löschen"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Nummer vor Anruf bearbeiten"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Anrufliste löschen"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Mailbox-Nachricht löschen"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mailbox gelöscht"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"Rückgängig"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Anrufliste löschen?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Alle Anrufe werden aus deinem Verlauf gelöscht."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Anrufliste wird gelöscht…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Verpasster Anruf"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Verpasster geschäftlicher Anruf"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Verpasste Anrufe"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> verpasste Anrufe"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Zurückrufen"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Nachricht"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Mailbox-Nachrichten </item>
+      <item quantity="one">Mailbox-Nachricht</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Anhören"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Neue Mailbox-Nachricht von <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Mailbox-Nachricht-Wiedergabe nicht möglich"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Mailbox-Nachricht wird geladen…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Laden der Mailbox-Nachricht nicht möglich"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Nur Mailbox-Anrufe"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Nur eingehende Anrufe"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Nur ausgehende Anrufe"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Nur entgangene Anrufe"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visuelle Mailbox"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Du kannst deine Mailbox-Nachrichten einsehen und abhören, ohne eine Nummer anrufen zu müssen. Es können Datengebühren anfallen."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Einstellungen"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Keine Mailbox-Aktualisierungen verfügbar"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Neue Mailbox-Nachricht wartet. Laden momentan nicht möglich."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Richte deine Mailbox ein."</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio nicht verfügbar"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Einrichten"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Mailbox anrufen"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Nummer auswählen"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Nummer auswählen"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Auswahl speichern"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"Suchen"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"wählen"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"Zu wählende Nummer"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Wiedergabe starten oder stoppen"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Freisprechfunktion aktivieren oder deaktivieren"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Wiedergabeposition suchen"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Wiedergabegeschwindigkeit verringern"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Wiedergabegeschwindigkeit erhöhen"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Anrufliste"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Mehr Optionen"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"Wähltasten"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Nur ausgehende Anrufe anzeigen"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Nur eingehende Anrufe anzeigen"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Nur entgangene Anrufe anzeigen"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Nur Mailbox-Nachr. anzeigen"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Alle Anrufe anzeigen"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2 Sekunden Pause hinzufügen"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Warten hinzufügen"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Einstellungen"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Neuer Kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Alle Kontakte"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Anrufdetails"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Details nicht verfügbar"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Telefontastatur verwenden"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Zurück zum aktuellen Anruf"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Anruf hinzufügen"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Eingehender Anruf"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Ausgehender Anruf"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Entgangener Anruf"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Eingehender Videoanruf"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Ausgehender Videoanruf"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Entgangener Videoanruf"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Mailbox"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Abgelehnter Anruf"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blockierter Anruf"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Eingehende Anrufe"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Mailbox abhören"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Kontakt <xliff:g id="NAME">%1$s</xliff:g> anzeigen"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> anrufen"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Kontaktdetails für <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> Anrufe"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videoanruf"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"SMS an <xliff:g id="NAME">%1$s</xliff:g> senden"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nicht abgehörte Mailbox-Nachricht"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Sprachsuche starten"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> wählen"</string>
+    <string name="unknown" msgid="740067747858270469">"Unbekannt"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Mailbox"</string>
+    <string name="private_num" msgid="6374339738119166953">"Private Nummer"</string>
+    <string name="payphone" msgid="7726415831153618726">"Münztelefon"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> um <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Diese Nummer kann nicht angerufen werden."</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Konfiguriere deine Mailbox unter \"Menü\" &gt; \"Einstellungen\"."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Deaktiviere zunächst den Flugmodus, um die Mailbox anzurufen."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Wird geladen…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Ladevorgang von SIM-Karte läuft..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontakte auf SIM-Karte"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Keine Kontakte-App verfügbar"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Sprachsuche nicht verfügbar"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Es kann kein Anruf getätigt werden, da die App \"Telefon\" deaktiviert wurde."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Keine entsprechende App auf diesem Gerät"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"In Kontakten suchen"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Nummer hinzufügen oder in Kontakten suchen"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Deine Anrufliste ist leer."</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Anrufen"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Keine verpassten Anrufe"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Dein Mailbox-Posteingang ist leer."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Nur Favoriten anzeigen"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Anrufliste"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Alle"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Entgangen"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Mailbox-Nachrichten"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> blockieren?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Anrufe von dieser Nummer werden blockiert und Mailbox-Nachrichten automatisch gelöscht."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Anrufe von dieser Nummer werden blockiert. Der Anrufer hat aber unter Umständen weiterhin die Möglichkeit, dir Mailbox-Nachrichten zu hinterlassen."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOCKIEREN"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Blockierung von <xliff:g id="NUMBER">%1$s</xliff:g> aufheben?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Anrufe von dieser Nummer werden nicht mehr blockiert."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"BLOCKIERUNG AUFHEBEN"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Schnellauswahl"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Anrufliste"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontakte"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Mailbox"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Aus Favoriten entfernt"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Rückgängig machen"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> wählen"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Neuen Kontakt erstellen"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Zu Kontakt hinzufügen"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS senden"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videoanruf starten"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Nummer blockieren"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> neue verpasste Anrufe"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Du hast noch für niemanden eine Kurzwahl festgelegt."</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Favoriten hinzufügen"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Du hast noch keine Kontakte."</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Kontakt hinzufügen"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Bild berühren, um alle Nummern zu sehen, oder Bild berühren und halten, um sie neu anzuordnen"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Entfernen"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videoanruf"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"SMS senden"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Anrufdetails"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> anrufen"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Anruf von <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> verpasst"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Anruf von <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> angenommen"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Ungelesene Mailbox-Nachricht von <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Mailbox-Nachricht von <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Ausgehender Anruf an <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"mit <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Anrufen"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> anrufen"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> über Videoanruf anrufen"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Mailboxnachricht von <xliff:g id="NAMEORNUMBER">^1</xliff:g> anhören"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Mailbox-Nachricht von <xliff:g id="NAMEORNUMBER">^1</xliff:g> abhören"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Mailbox-Nachricht von <xliff:g id="NAMEORNUMBER">^1</xliff:g> pausieren"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Mailbox-Nachricht von <xliff:g id="NAMEORNUMBER">^1</xliff:g> löschen"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> neue Mailboxnachrichten</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> neue Mailboxnachricht</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Kontakt für <xliff:g id="NAMEORNUMBER">^1</xliff:g> erstellen"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> zu vorhandenem Kontakt hinzufügen"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Anrufdetails für <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Aus Anrufliste gelöscht"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Heute"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Gestern"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Ältere"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Anrufliste"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Lautsprecher einschalten"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Lautsprecher ausschalten"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Schneller wiedergeben"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Langsamer wiedergeben"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Wiedergabe starten oder pausieren"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Anzeigeoptionen"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Töne und Vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Bedienungshilfen"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Klingelton"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Bei Anrufen auch vibrieren"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Wähltastentöne"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Länge der Wähltastentöne"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Lang"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Kurzantworten"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Anrufe"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Anrufblockierung"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Anrufblockierung vorübergehend aus"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Die Anrufblockierung wurde deaktiviert, weil du innerhalb der letzten 48 Stunden mit diesem Telefon den Notruf gewählt hast. Nach Ablauf dieser 48-Stunden-Frist wird die Blockierung automatisch wieder aktiviert."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Nummern importieren"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Du hast zuvor einige Anrufer markiert, die automatisch über andere Apps an die Mailbox gesendet werden."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Nummern anzeigen"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importieren"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Import fehlgeschlagen"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Blockierung der Nummer aufheben"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Nummer hinzufügen"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Anrufe von diesen Nummern werden blockiert und Mailbox-Nachrichten automatisch gelöscht."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Anrufe von diesen Nummern werden blockiert. Die Anrufer haben aber unter Umständen weiterhin die Möglichkeit, dir Mailbox-Nachrichten zu hinterlassen."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blockierte Nummern"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> ist ungültig."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ist bereits blockiert."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Anrufblockierung für 48 Stunden deaktiviert"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Deaktiviert, da ein Notruf getätigt wurde."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Anrufkonten"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Aktivieren"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Berechtigungen festlegen"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Aktiviere die Berechtigung \"Kontakte\", um die Kurzwahlfunktion zu verwenden."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Aktiviere die Berechtigung \"Telefon\", um dein Anrufprotokoll abzurufen."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Aktiviere die Berechtigung \"Kontakte\", um deine Kontakte abzurufen."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Aktiviere die Berechtigung \"Telefon\", um auf deine Mailbox zuzugreifen."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Aktiviere die Berechtigungen \"Kontakte\", um deine Kontakte zu suchen."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Aktiviere die Berechtigung \"Telefon\", um einen Anruf zu tätigen."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Die App \"Telefon\" ist nicht berechtigt, die Systemeinstellungen zu überschreiben."</string>
+</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
new file mode 100644
index 0000000..ee2108a
--- /dev/null
+++ b/res/values-el/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Τηλέφωνο"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Τηλέφωνο"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Πληκτρολόγιο κλήσης τηλεφώνου"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Τηλέφωνο"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Ιστορικό κλήσεων"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Αναφορά ακατάλληλου αριθμού"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Αντιγραφή αριθμού"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Αντιγραφή μεταγραφής"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Αποκλεισμός αριθμού"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Ο αριθμός <xliff:g id="NUMBER">%1$s</xliff:g> αποκλείστηκε"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Κατάργηση αποκλεισμού αριθμού"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Ο αποκλεισμός του αριθμού <xliff:g id="NUMBER">%1$s</xliff:g> καταργήθηκε"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ΑΝΑΙΡΕΣΗ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Διαγραφή"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Επεξεργασία αριθμού πριν την κλήση"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Εκκαθάριση ιστορικού κλήσεων"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Διαγραφή αυτόματου τηλεφωνητή"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Μήν.αυτ. τηλ. διαγρ."</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ΑΝΑΙΡΕΣΗ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Διαγραφή ιστορικού κλήσεων;"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Αυτό θα διαγράψει όλες τις κλήσεις από το ιστορικό σας"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Διαγραφή ιστορικού κλήσεων…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Τηλέφωνο"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Αναπάντητη κλήση"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Αναπάντητη κλήση εργασίας"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Αναπάντητες κλήσεις"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> αναπάντητες κλήσεις"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Επανάκληση"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Μήνυμα"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Μηνύματα αυτόμ. τηλεφωνητή </item>
+      <item quantity="one">Μήνυμα αυτόματου τηλεφωνητή</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Αναπαραγωγή"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Νέα μην. αυτ. τηλεφ. από <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Αδύνατη αναπαραγωγή φωνητικού μηνύματος"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Φόρτωση φωνητικών μηνυμάτων…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Αδύνατη φόρτωση φωνητικών μηνυμάτων"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Μόνο κλήσεις με ηχητικά μηνύματα"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Μόνο εισερχόμενες κλήσεις"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Μόνο εξερχόμενες κλήσεις"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Μόνο αναπάντητες κλήσεις"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Οπτικός αυτόματος τηλεφωνητής"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Δείτε και ακούστε τα μηνύματα αυτόματου τηλεφωνητή, χωρίς να καλέσετε κάποιον αριθμό. Ενδέχεται να ισχύουν χρεώσεις δεδομένων."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Ρυθμίσεις"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Μη διαθέσιμες ενημερώσεις αυτόματου τηλεφωνητή"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Νέο φωνητικό μήνυμα σε αναμονή. Δεν είναι δυνατή η φόρτωση τώρα."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Ρύθμιση του αυτόματου τηλεφωνητή σας"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Δεν υπάρχει διαθέσιμος ήχος"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Ρύθμιση"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Κλήση αυτόμ. τηλεφ."</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Επιλέξτε αριθμό"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Επιλέξτε αριθμό"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Διατήρηση αυτής της ρύθμισης"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"αναζήτηση"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"κλήση"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"αριθμός για κλήση"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Αναπαραγωγή ή διακοπή αναπαραγωγής"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Ενεργοποίηση ή απενεργοποίηση μεγαφώνου"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Αναζήτηση θέσης αναπαραγωγής"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Μείωση ρυθμού αναπαραγωγής"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Αύξηση ρυθμού αναπαραγωγής"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Ιστορικό κλήσεων"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Περισσότερες επιλογές"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"πληκτρολόγιο κλήσης"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Εμφάνιση μόνο εξερχόμενων"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Εμφάνιση μόνο εισερχόμενων"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Εμφάνιση μόνο αναπάντητων"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Εμφ. μόνο μην. αυτόμ. τηλεφων."</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Εμφάνιση όλων"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Προσθήκη παύσης 2 δευτερολέπτων"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Προσθήκη αναμονής"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Ρυθμίσεις"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Νέα επαφή"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Όλες οι επαφές"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Στοιχ. κλήσης"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Οι λεπτομέρειες δεν είναι διαθέσιμες"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Χρησιμοποιήστε το πληκτρολόγιο αφής ηχητικών τόνων"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Επιστροφή στην κλήση που βρίσκεται σε εξέλιξη"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Προσθήκη κλήσης"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Εισερχόμενη κλήση"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Εξερχόμενη κλήση"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Αναπάντητη κλήση"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Εισερχόμενη βιντεοκλήση"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Εξερχόμενη βιντεοκλήση"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Αναπάντητη βιντεοκλήση"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Αυτόματος τηλεφωνητής"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Απορριφθείσα κλήση"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Αποκλεισμένη κλήση"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Εισερχόμενες κλήσεις"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Αναπαραγωγή μηνύματος αυτόματου τηλεφωνητή"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Προβολή επαφής <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Κλήση του χρήστη <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Στοιχεία επικοινωνίας του <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> κλήσεις."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Βιντεοκλήση."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Αποστολή SMS στο χρήστη <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Μηνύματα αυτόματου τηλεφωνητή που δεν έχετε ακούσει"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Έναρξη φωνητικής αναζήτησης"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Κλήση <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Άγνωστος"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Αυτόματος τηλεφωνητής"</string>
+    <string name="private_num" msgid="6374339738119166953">"Απόκρυψη"</string>
+    <string name="payphone" msgid="7726415831153618726">"Τηλέφωνο με χρέωση"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> δευτερόλεπτα"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> λεπτά <xliff:g id="SECONDS">%s</xliff:g> δευτερόλεπτα"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> στις <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Δεν μπορείτε να καλέσετε αυτόν τον αριθμό"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Για τη r;yumish του αυτόματου τηλεφωνητή, μεταβείτε στο στοιχείο Μενού &gt; Ρυθμίσεις."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Για κλήση αυτόματου τηλεφωνητή, πρώτα απενεργοποιήστε τη λειτουργία πτήσης."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Φόρτωση…"</string>
+    <string name="imei" msgid="3045126336951684285">"Αριθμός ΙΜΕΙ"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Φόρτωση από κάρτα SIM…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Επαφές στην κάρτα SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Δεν υπάρχουν διαθέσιμες εφαρμογές επαφών"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Η φωνητική αναζήτηση δεν είναι διαθέσιμη"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Δεν είναι δυνατή η πραγματοποίηση τηλεφωνικής κλήσης επειδή η εφαρμογή \"Τηλέφωνο\" έχει απενεργοποιηθεί."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Δεν υπάρχει εφαρμογή γι\' αυτήν την ενέργεια σε αυτήν τη συσκευή"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Αναζήτηση στις επαφές"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Προσθήκη αριθμού ή αναζήτηση επαφών"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Το ιστορικό κλήσεων είναι κενό"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Πραγματοποίηση κλήσης"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Δεν υπάρχουν αναπάντητες κλήσεις."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Ο φάκελος εισερχομένων του αυτόματου τηλεφωνητή σας είναι κενός."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Εμφάνιση μόνο των αγαπημένων"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Ιστορικό κλήσεων"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Όλα"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Αναπάντητες"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Φωνητικό μήνυμα"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Να αποκλειστεί ο αριθμός <xliff:g id="NUMBER">%1$s</xliff:g>;"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Οι μελλοντικές κλήσεις από αυτόν τον αριθμό θα αποκλείονται και τα μηνύματα στον αυτόματο τηλεφωνητή θα διαγράφονται αυτόματα."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Οι κλήσεις από αυτόν τον αριθμό θα αποκλείονται, αλλά ο καλών ενδέχεται να μπορεί να αφήνει μηνύματα στον αυτόματο τηλεφωνητή."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ΑΠΟΚΛΕΙΣΜΟΣ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Να καταργηθεί ο αποκλεισμός του αριθμού <xliff:g id="NUMBER">%1$s</xliff:g>;"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Δεν θα αποκλείονται πλέον οι κλήσεις από αυτό τον αριθμό σε εσάς."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ΚΑΤΑΡΓΗΣΗ ΑΠΟΚΛΕΙΣΜΟΥ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Γρήγορη κλήση"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Ιστορικό κλήσεων"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Επαφές"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Αυτόματος τηλεφωνητής"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Καταργήθηκε από τα αγαπημένα"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Αναίρεση"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Καλέστε το <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Δημιουργία νέας επαφής"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Προσθήκη σε μια επαφή"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Αποστολή SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Πραγματοποίηση βιντεοκλήσης"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Αποκλεισμός αριθμού"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> νέες αναπάντητες κλήσεις"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Δεν έχετε ορίσει ακόμη κάποια επαφή στις ταχείες κλήσεις"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Προσθέστε ένα αγαπημένο"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Δεν έχετε επαφές ακόμη"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Προσθήκη επαφής"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Πατήστε την εικόνα για να δείτε όλους τους αριθμούς ή αγγίξτε παρατεταμένα για αναδιάταξη"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Κατάργηση"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Βιντεοκλήση"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Αποστολή μηνύματος"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Λεπτομέρειες κλήσης"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Κλήση <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Αναπάντητη κλήση από <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Ληφθείσα κλήση από <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Μη αναγνωσμένο μήνυμα αυτόματου τηλεφωνητή από <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Μήνυμα αυτόματου τηλεφωνητή από <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Κλήση προς <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"σε <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Κλήση"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Κλήση <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Βιντεοκλήση <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Ακρόαση μηνύματος αυτόματου τηλεφωνητή από το χρήστη <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Ακρόαση μηνύματος αυτόματου τηλεφωνητή από <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Παύση μηνύματος αυτόματου τηλεφωνητή από <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Διαγραφή μηνύματος αυτόματου τηλεφωνητή από <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> νέα φωνητικά μηνύματα</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> νέο φωνητικό μήνυμα</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Δημιουργία επαφής για <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Προσθήκη <xliff:g id="NAMEORNUMBER">^1</xliff:g> σε υπάρχουσα επαφή"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Λεπτομέρειες κλήσης για <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Διαγράφηκε από το ιστορικό κλήσεων"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Σήμερα"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Χθες"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Παλαιότερες"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Λίστα κλήσεων"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Ενεργοποίηση ηχείου."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Απενεργοποίηση ηχείου."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Αναπαραγωγή πιο γρήγορα."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Αναπαραγωγή πιο αργά."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Έναρξη ή παύση αναπαραγωγής."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Επιλογές εμφάνισης"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ήχοι και δόνηση"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Προσβασιμότητα"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Ήχος κλήσης τηλεφώνου"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Και δόνηση στις κλήσεις"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Τόνοι πληκτρολογίου κλήσης"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Διάρκεια ήχου πληκτρολογίου κλήσης"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Κανονική"</item>
+    <item msgid="6177579030803486015">"Παρατεταμένη"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Γρήγορες απαντήσεις"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Κλήσεις"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Φραγή κλήσεων"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Προσωρινά απενεργοποιημένη φραγή κλήσεων"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Η φραγή κλήσεων έχει απενεργοποιηθεί προσωρινά επειδή επικοινωνήσατε με τις υπηρεσίες έκτακτης ανάγκης από αυτό το τηλέφωνο μέσα στις τελευταίες 48 ώρες. Θα ενεργοποιηθεί ξανά αυτόματα μόλις λήξει η περίοδος των 48 ωρών."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Εισαγωγή αριθμών"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Στο παρελθόν ρυθμίσατε ορισμένους καλούντες ώστε να αποστέλλονται αυτόματα στον τηλεφωνητή μέσω άλλων εφαρμογών."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Προβολή αριθμών"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Εισαγωγή"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Αποτυχία εισαγωγής"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Κατάργηση αποκλεισμού αριθμού"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Προσθήκη αριθμού"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Οι κλήσεις από αυτούς τους αριθμούς θα αποκλείονται και τα μηνύματα στον αυτόματο τηλεφωνητή θα διαγράφονται αυτόματα."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Οι κλήσεις από αυτούς τους αριθμούς θα αποκλείονται, αλλά ενδέχεται να λαμβάνετε από αυτούς μηνύματα στον αυτόματο τηλεφωνητή."</string>
+    <string name="block_list" msgid="7760188925338078011">"Αποκλεισμένοι αριθμοί"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Ο αριθμός <xliff:g id="NUMBER">%1$s</xliff:g> δεν είναι έγκυρος."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Ο αριθμός <xliff:g id="NUMBER">%1$s</xliff:g> αποκλείστηκε ήδη."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Η φραγή κλήσεων απενεργοποιήθηκε για 48 ώρες"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Απενεργοποιημένο επειδή πραγματοποιήθηκε κλήση έκτακτης ανάγκης."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Λογαριασμοί κλήσης"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Ενεργοποίηση"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Ορισμός αδειών"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Για να ενεργοποιήσετε την ταχεία κλήση, ενεργοποιήστε την άδεια επαφών."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Για να δείτε το αρχείο καταγραφής κλήσεών σας, ενεργοποιήστε την άδεια τηλεφώνου."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Για να δείτε τις επαφές σας, ενεργοποιήστε την άδεια επαφών."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Για να αποκτήσετε πρόσβαση στον τηλεφωνητή σας, ενεργοποιήστε την άδεια τηλεφώνου."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Για να κάνετε αναζήτηση στις επαφές σας, ενεργοποιήστε τις άδειες \"Επαφές\"."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Για να πραγματοποιήσετε μια κλήση, ενεργοποιήστε την άδεια τηλεφώνου."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Η εφαρμογή \"Τηλέφωνο\" δεν έχει άδεια εγγραφής στις ρυθμίσεις συστήματος."</string>
+</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..30d69c2
--- /dev/null
+++ b/res/values-en-rAU/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telephone"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Phone"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Phone Dialpad"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Call history"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Report inaccurate number"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copy number"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copy transcription"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Block number"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> blocked"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Unblock number"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> unblocked"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"UNDO"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"delete"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Edit number before call"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Clear call history"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Delete voicemail"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Voicemail deleted"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"UNDO"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Clear call history?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"This will delete all calls from your history"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Clearing call history…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telephone"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Missed call"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Missed work call"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Missed calls"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Call back"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Message"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
+      <item quantity="one">Voicemail</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Couldn\'t play voicemail"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Loading voicemail…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Couldn\'t load voicemail"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Calls with voicemail only"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Incoming calls only"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Outgoing calls only"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Missed calls only"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visual voicemail"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"See and listen to your voicemail, without having to call a number. Data charges may apply."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Settings"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Voicemail updates not available"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"New voicemail waiting. Can\'t load right now."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Set up your voicemail"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio not available"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Set up"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Call voicemail"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Choose number"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Choose number"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Remember this choice"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"search"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"dial"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"number to dial"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Play or stop playback"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Switch on or off speakerphone"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Seek playback position"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Decrease playback rate"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Increase playback rate"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Call History"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"More options"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"dial pad"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Show outgoing only"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Show incoming only"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Settings"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"New contact"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"All contacts"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Call details"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Details not available"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Use touch tone keypad"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Return to call in progress"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Add call"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Incoming call"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Outgoing call"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Missed call"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Incoming video call"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Outgoing video call"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Missed video call"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Declined call"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blocked call"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Incoming calls"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Play voicemail"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"View contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Call <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Contact details for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> calls."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video call."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Send SMS to <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Unheard voicemail"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Start voice search"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Unknown"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
+    <string name="private_num" msgid="6374339738119166953">"Private number"</string>
+    <string name="payphone" msgid="7726415831153618726">"Payphone"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> at <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Can\'t call this number"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"To set up voicemail, go to Menu &gt; Settings."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"To call voicemail, first turn off Aeroplane mode."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Loading…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Loading from SIM card…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM card contacts"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"No contacts app available"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Voice search not available"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Cannot make a phone call because the Phone application has been disabled."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"No app for that on this device"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Search contacts"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Add number or search contacts"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Your call history is empty"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Make a call"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"You have no missed calls."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Your voicemail inbox is empty."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Show favourites only"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Call History"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"All"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Missed"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Voicemail"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Block <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Calls from this number will be blocked and voicemails will be automatically deleted."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Calls from this number will be blocked, but the caller may still be able to leave you voicemails."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOCK"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Unblock <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"This number will no longer be blocked from calling you."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"UNBLOCK"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Call history"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Create new contact"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Add to a contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Make video call"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Block number"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"No one is on your speed dial yet"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Add a favourite"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"You don\'t have any contacts yet"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Add a contact"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Touch image to see all numbers or touch &amp; hold to reorder"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Remove"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video call"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Sending a message"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Call details"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Call <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Missed call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Answered call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Unread voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"on <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Call"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Call <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Video call <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Listen to voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Play voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pause voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Delete voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> new voicemails</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> new voicemail</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Create contact for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Add <xliff:g id="NAMEORNUMBER">^1</xliff:g> to existing contact"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Call details for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Deleted from call history"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Today"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Yesterday"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Older"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Calls list"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Turn speaker on."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Turn speaker off."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Play faster."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Play slower."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start or pause playback."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Display options"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sounds and vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Phone ringtone"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Also vibrate for calls"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dialpad tones"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad tone length"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Long"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Quick responses"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Calls"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Call blocking"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Call blocking temporarily off"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Call blocking has been disabled because you contacted emergency services from this phone within the last 48 hours. It will be automatically re-enabled once the 48 hour period expires."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Import numbers"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"You previously marked some callers to be automatically sent to voicemail via other apps."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"View Numbers"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Import"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Import failed"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Unblock number"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Add number"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Calls from these numbers will be blocked and voicemails will be automatically deleted."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Calls from these numbers will be blocked, but they may still be able to leave you voicemails."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blocked numbers"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> is invalid."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> is already blocked."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Call blocking disabled for 48 hours"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Disabled because an emergency call was made."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Calling accounts"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Turn on"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Set permissions"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"To enable speed dial, turn on the Contacts permission."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"To see your call log, turn on the Phone permission."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"To see your contacts, turn on the Contacts permission."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"To access your voicemail, turn on the Phone permission."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"To search your contacts, turn on the Contacts permissions."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"To place a call, turn on the Phone permission."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Phone app does not have permission to write to system settings."</string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..30d69c2
--- /dev/null
+++ b/res/values-en-rGB/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telephone"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Phone"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Phone Dialpad"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Call history"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Report inaccurate number"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copy number"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copy transcription"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Block number"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> blocked"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Unblock number"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> unblocked"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"UNDO"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"delete"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Edit number before call"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Clear call history"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Delete voicemail"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Voicemail deleted"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"UNDO"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Clear call history?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"This will delete all calls from your history"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Clearing call history…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telephone"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Missed call"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Missed work call"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Missed calls"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Call back"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Message"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
+      <item quantity="one">Voicemail</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Couldn\'t play voicemail"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Loading voicemail…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Couldn\'t load voicemail"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Calls with voicemail only"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Incoming calls only"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Outgoing calls only"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Missed calls only"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visual voicemail"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"See and listen to your voicemail, without having to call a number. Data charges may apply."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Settings"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Voicemail updates not available"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"New voicemail waiting. Can\'t load right now."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Set up your voicemail"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio not available"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Set up"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Call voicemail"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Choose number"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Choose number"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Remember this choice"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"search"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"dial"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"number to dial"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Play or stop playback"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Switch on or off speakerphone"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Seek playback position"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Decrease playback rate"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Increase playback rate"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Call History"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"More options"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"dial pad"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Show outgoing only"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Show incoming only"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Settings"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"New contact"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"All contacts"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Call details"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Details not available"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Use touch tone keypad"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Return to call in progress"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Add call"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Incoming call"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Outgoing call"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Missed call"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Incoming video call"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Outgoing video call"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Missed video call"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Declined call"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blocked call"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Incoming calls"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Play voicemail"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"View contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Call <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Contact details for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> calls."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video call."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Send SMS to <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Unheard voicemail"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Start voice search"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Unknown"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
+    <string name="private_num" msgid="6374339738119166953">"Private number"</string>
+    <string name="payphone" msgid="7726415831153618726">"Payphone"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> at <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Can\'t call this number"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"To set up voicemail, go to Menu &gt; Settings."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"To call voicemail, first turn off Aeroplane mode."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Loading…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Loading from SIM card…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM card contacts"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"No contacts app available"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Voice search not available"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Cannot make a phone call because the Phone application has been disabled."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"No app for that on this device"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Search contacts"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Add number or search contacts"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Your call history is empty"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Make a call"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"You have no missed calls."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Your voicemail inbox is empty."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Show favourites only"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Call History"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"All"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Missed"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Voicemail"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Block <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Calls from this number will be blocked and voicemails will be automatically deleted."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Calls from this number will be blocked, but the caller may still be able to leave you voicemails."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOCK"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Unblock <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"This number will no longer be blocked from calling you."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"UNBLOCK"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Call history"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Create new contact"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Add to a contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Make video call"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Block number"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"No one is on your speed dial yet"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Add a favourite"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"You don\'t have any contacts yet"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Add a contact"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Touch image to see all numbers or touch &amp; hold to reorder"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Remove"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video call"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Sending a message"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Call details"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Call <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Missed call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Answered call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Unread voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"on <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Call"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Call <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Video call <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Listen to voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Play voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pause voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Delete voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> new voicemails</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> new voicemail</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Create contact for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Add <xliff:g id="NAMEORNUMBER">^1</xliff:g> to existing contact"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Call details for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Deleted from call history"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Today"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Yesterday"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Older"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Calls list"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Turn speaker on."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Turn speaker off."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Play faster."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Play slower."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start or pause playback."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Display options"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sounds and vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Phone ringtone"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Also vibrate for calls"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dialpad tones"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad tone length"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Long"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Quick responses"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Calls"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Call blocking"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Call blocking temporarily off"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Call blocking has been disabled because you contacted emergency services from this phone within the last 48 hours. It will be automatically re-enabled once the 48 hour period expires."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Import numbers"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"You previously marked some callers to be automatically sent to voicemail via other apps."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"View Numbers"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Import"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Import failed"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Unblock number"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Add number"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Calls from these numbers will be blocked and voicemails will be automatically deleted."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Calls from these numbers will be blocked, but they may still be able to leave you voicemails."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blocked numbers"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> is invalid."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> is already blocked."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Call blocking disabled for 48 hours"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Disabled because an emergency call was made."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Calling accounts"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Turn on"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Set permissions"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"To enable speed dial, turn on the Contacts permission."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"To see your call log, turn on the Phone permission."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"To see your contacts, turn on the Contacts permission."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"To access your voicemail, turn on the Phone permission."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"To search your contacts, turn on the Contacts permissions."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"To place a call, turn on the Phone permission."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Phone app does not have permission to write to system settings."</string>
+</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..30d69c2
--- /dev/null
+++ b/res/values-en-rIN/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telephone"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Phone"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Phone Dialpad"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Call history"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Report inaccurate number"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copy number"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copy transcription"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Block number"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> blocked"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Unblock number"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> unblocked"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"UNDO"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"delete"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Edit number before call"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Clear call history"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Delete voicemail"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Voicemail deleted"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"UNDO"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Clear call history?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"This will delete all calls from your history"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Clearing call history…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telephone"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Missed call"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Missed work call"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Missed calls"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missed calls"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Call back"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Message"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
+      <item quantity="one">Voicemail</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Couldn\'t play voicemail"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Loading voicemail…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Couldn\'t load voicemail"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Calls with voicemail only"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Incoming calls only"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Outgoing calls only"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Missed calls only"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visual voicemail"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"See and listen to your voicemail, without having to call a number. Data charges may apply."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Settings"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Voicemail updates not available"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"New voicemail waiting. Can\'t load right now."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Set up your voicemail"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio not available"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Set up"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Call voicemail"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Choose number"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Choose number"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Remember this choice"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"search"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"dial"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"number to dial"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Play or stop playback"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Switch on or off speakerphone"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Seek playback position"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Decrease playback rate"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Increase playback rate"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Call History"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"More options"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"dial pad"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Show outgoing only"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Show incoming only"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Settings"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"New contact"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"All contacts"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Call details"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Details not available"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Use touch tone keypad"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Return to call in progress"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Add call"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Incoming call"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Outgoing call"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Missed call"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Incoming video call"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Outgoing video call"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Missed video call"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Declined call"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blocked call"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Incoming calls"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Play voicemail"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"View contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Call <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Contact details for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> calls."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video call."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Send SMS to <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Unheard voicemail"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Start voice search"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Unknown"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
+    <string name="private_num" msgid="6374339738119166953">"Private number"</string>
+    <string name="payphone" msgid="7726415831153618726">"Payphone"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> at <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Can\'t call this number"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"To set up voicemail, go to Menu &gt; Settings."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"To call voicemail, first turn off Aeroplane mode."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Loading…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Loading from SIM card…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM card contacts"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"No contacts app available"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Voice search not available"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Cannot make a phone call because the Phone application has been disabled."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"No app for that on this device"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Search contacts"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Add number or search contacts"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Your call history is empty"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Make a call"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"You have no missed calls."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Your voicemail inbox is empty."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Show favourites only"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Call History"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"All"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Missed"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Voicemail"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Block <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Calls from this number will be blocked and voicemails will be automatically deleted."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Calls from this number will be blocked, but the caller may still be able to leave you voicemails."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOCK"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Unblock <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"This number will no longer be blocked from calling you."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"UNBLOCK"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Call history"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Create new contact"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Add to a contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Make video call"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Block number"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"No one is on your speed dial yet"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Add a favourite"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"You don\'t have any contacts yet"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Add a contact"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Touch image to see all numbers or touch &amp; hold to reorder"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Remove"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video call"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Sending a message"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Call details"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Call <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Missed call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Answered call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Unread voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"on <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Call"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Call <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Video call <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Listen to voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Play voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pause voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Delete voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> new voicemails</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> new voicemail</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Create contact for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Add <xliff:g id="NAMEORNUMBER">^1</xliff:g> to existing contact"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Call details for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Deleted from call history"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Today"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Yesterday"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Older"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Calls list"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Turn speaker on."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Turn speaker off."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Play faster."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Play slower."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start or pause playback."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Display options"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sounds and vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Phone ringtone"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Also vibrate for calls"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dialpad tones"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad tone length"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Long"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Quick responses"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Calls"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Call blocking"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Call blocking temporarily off"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Call blocking has been disabled because you contacted emergency services from this phone within the last 48 hours. It will be automatically re-enabled once the 48 hour period expires."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Import numbers"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"You previously marked some callers to be automatically sent to voicemail via other apps."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"View Numbers"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Import"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Import failed"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Unblock number"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Add number"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Calls from these numbers will be blocked and voicemails will be automatically deleted."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Calls from these numbers will be blocked, but they may still be able to leave you voicemails."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blocked numbers"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> is invalid."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> is already blocked."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Call blocking disabled for 48 hours"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Disabled because an emergency call was made."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Calling accounts"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Turn on"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Set permissions"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"To enable speed dial, turn on the Contacts permission."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"To see your call log, turn on the Phone permission."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"To see your contacts, turn on the Contacts permission."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"To access your voicemail, turn on the Phone permission."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"To search your contacts, turn on the Contacts permissions."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"To place a call, turn on the Phone permission."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Phone app does not have permission to write to system settings."</string>
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..ca2435e
--- /dev/null
+++ b/res/values-es-rUS/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Teléfono"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Teléfono"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Teclado del teléfono"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Historial de llamadas"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Informar número incorrecto"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copiar número"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copiar transcripción"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloquear número"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> bloqueado"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Desbloquear número"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> desbloqueado"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"DESHACER"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Borrar"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Editar número antes de realizar llamada"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Eliminar el historial de llamadas"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Borrar buzón de voz"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Buzón de voz borrado"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESHACER"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"¿Eliminar el historial de llamadas?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Se eliminarán todas las llamadas del historial."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Eliminando historial de llamadas…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Teléfono"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Llamada perdida"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Llamada de trabajo perdida"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Llamadas perdidas"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> llamadas perdidas"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Llamar"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mensaje"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz </item>
+      <item quantity="one">mensaje de voz</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuevo mensaje de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Error al reproducir el buzón de voz"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Cargando buzón de voz…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Error al cargar el buzón de voz"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Solo llamadas con buzón de voz"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Solo llamadas entrantes"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Solo llamadas salientes"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Solo llamadas perdidas"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Buzón de voz visual"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Puedes ver y escuchar los buzones de voz sin tener que llamar a ningún número. Es posible que se apliquen cargos de datos."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Configuración"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"No hay notificaciones disponibles del buzón de voz."</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Nuevo mensaje de buzón de voz en espera; no se puede cargar."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configurar el buzón de voz"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio no disponible"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Llamar buzón de voz"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Elige un número"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Elige un número"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Recuerda esta opción"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"búsqueda"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"marcar"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"número para marcar"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Reproducir o detener la reproducción"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Activar o desactivar el altavoz"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Busca la posición de reproducción"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Disminuir la velocidad de reproducción"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Aumentar la velocidad de reproducción"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historial de llamadas"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Más opciones"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"teclado"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar solo salientes"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar solo entrantes"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar solo perdidas"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar solo mensajes de voz"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas las llamadas"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Agregar pausa de 2 segundos"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Agregar espera"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Configuración"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nuevo contacto"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Todos los contactos"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detalles de llamada"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detalles no disponibles"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usar teclado numérico"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Regresar a la llamada en curso"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Agregar llamada"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Llamada entrante"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Llamada saliente"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Llamada perdida"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Videollamada entrante"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Videollamada saliente"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Te perdiste una videollamada."</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Mensaje de voz"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Llamada rechazada"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Llamada bloqueada"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Llamadas entrantes"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Reproducir mensaje de voz"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Ver contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Llamar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Datos de contacto de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> llamadas"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videollamada"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Enviar SMS a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Buzón de voz no escuchado"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar búsqueda por voz"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Llamar al <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Desconocido"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Correo de voz"</string>
+    <string name="private_num" msgid="6374339738119166953">"Número privado"</string>
+    <string name="payphone" msgid="7726415831153618726">"Teléfono público"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"El <xliff:g id="DATE">%1$s</xliff:g> a la hora <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"No se puede llamar a este número."</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar el buzón de voz, ve a a Menú &gt; Configuración."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para escuchar los mensajes de tu buzón de voz, desactiva primero el modo avión."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Cargando..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Cargando desde tarjeta SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contactos de tarjeta SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"No hay aplicaciones de contactos disponibles."</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Búsqueda por voz no disponible"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"No se pueden realizar llamadas porque se inhabilitó la aplicación Teléfono."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"No hay una aplicación para esa acción en este dispositivo."</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Buscar contactos"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Agregar número o buscar contactos"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Tu historial de llamadas está vacío"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Hacer una llamada"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"No tienes llamadas perdidas"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"La bandeja de entrada del buzón de voz está vacía."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Mostrar solo favoritos"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Historial de llamadas"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Todo"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Perdidas"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Buzón voz"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"¿Deseas bloquear <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Se bloquearán las llamadas que provengan de este número y se borrarán los mensajes del buzón de voz de forma automática."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Se bloquearán las llamadas que provengan de este número, pero es posible que la persona que llama pueda dejar mensajes en el buzón de voz."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOQUEAR"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"¿Deseas desbloquear <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Ya no se bloquearán las llamadas de este número."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DESBLOQUEAR"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Marcado rápido"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Historial de llamadas"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contactos"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Buzón de voz"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Eliminado de favoritos"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Deshacer"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Llamar al <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crear contacto nuevo"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Agregar a un contacto"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Realizar videollamada"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloquear número"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Aún no tienes contactos en la opción de marcado rápido"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Agregar un favorito"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Aún no tienes contactos"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Agregar un contacto"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Toca la imagen para ver todos los números o mantenla presionada para cambiar el orden."</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Eliminar"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videollamada"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Enviar un mensaje"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detalles de la llamada"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Llamada perdida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Llamada contestada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Mensaje de voz no leído de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Mensaje de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"en <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Llamar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Realizar una videollamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Escuchar buzón de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Reproducir buzón de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pausar buzón de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Borrar buzón de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> mensajes de voz nuevos</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> mensaje de voz nuevo</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Crear un contacto para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Agregar <xliff:g id="NAMEORNUMBER">^1</xliff:g> a un contacto existente"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detalles de llamada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Se eliminó del historial de llamadas."</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Hoy"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ayer"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Antiguos"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista de llamadas"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Activar altavoz"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Desactivar altavoz"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Aumentar velocidad de reproducción"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Disminuir velocidad de reproducción"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar o pausar la reproducción"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opciones de visualización"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sonidos y vibración"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilidad"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Tono del teléfono"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar también en llamadas"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonos del teclado"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Longitud del tono del teclado"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Largo"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respuestas rápidas"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Llamadas"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Bloqueo de llamadas"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Bloqueo de llamadas desactivado temporalmente"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Se inhabilitó el bloqueo de llamadas porque te comunicaste con servicios de emergencia en las últimas 48 horas desde este teléfono. Se volverá a habilitar de forma automática una vez que venza el período de 48 horas."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importar números"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Ya marcaste algunos emisores para que se envíen de forma automática al buzón de voz por medio de otras apps."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Ver números"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importar"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Error al importar"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Desbloquear número"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Agregar número"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Se bloquearán las llamadas que provengan de estos números y se borrarán los mensajes del buzón de voz de forma automática."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Se bloquearán las llamadas que provengan de estos números, pero es posible que se puedan dejar mensajes en el buzón de voz."</string>
+    <string name="block_list" msgid="7760188925338078011">"Números bloqueados"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> no es válido."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ya está bloqueado."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"El bloqueo de llamadas se inhabilitó durante 48 horas"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Se inhabilitó porque se realizó una llamada de emergencia."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Cuentas telefónicas"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Activar"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Configurar permisos"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Para habilitar el marcado rápido, activa el permiso Contactos."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Para ver el registro de llamadas, activa el permiso Teléfono."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Para ver los contactos, activa el permiso Contactos."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Para acceder al buzón de voz, activa el permiso Teléfono."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Para buscar contactos, activa el permiso Contactos."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Para realizar una llamada, activa el permiso Teléfono."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"La aplicación de teléfono no tiene permiso para modificar la configuración del sistema."</string>
+</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
new file mode 100644
index 0000000..0f5e16a
--- /dev/null
+++ b/res/values-es/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Teléfono"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Teléfono"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Teclado del teléfono"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Historial de llamadas"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Informar sobre número incorrecto"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copiar número"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copiar transcripción"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloquear número"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Se ha bloqueado el número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Desbloquear número"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Se ha desbloqueado el número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"DESHACER"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Eliminar"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Editar número antes de llamar"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Borrar historial de llamadas"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Eliminar mensaje de voz"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Buzón voz eliminado"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESHACER"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"¿Borrar historial de llamadas?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Se eliminarán todas las llamadas del historial."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Borrando historial de llamadas…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Teléfono"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Llamada perdida"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Llamada de trabajo perdida"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Llamadas perdidas"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> llamadas perdidas"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Llamar"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mensaje"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz </item>
+      <item quantity="one"> mensaje de voz</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuevo mensaje de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Error al reproducir el buzón de voz"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Cargando buzón de voz…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Error al cargar el buzón de voz"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Solo llamadas con mensajes de voz"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Solo llamadas entrantes"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Solo llamadas salientes"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Solo llamadas perdidas"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Buzón de voz visual"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Consulta y escucha tu buzón de voz sin tener que llamar a ningún número (se pueden aplicar cargos de datos)."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Ajustes"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Actualizaciones de buzón de voz no disponibles"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Nuevo mensaje de voz en espera. No se puede cargar ahora."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configurar tu buzón de voz"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio no disponible"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Llamar a buzón de voz"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Elige un número"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Elige un número"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Recordar esta opción"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"buscar"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"marcar"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"número que se va a marcar"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Iniciar o detener la reproducción"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Activar o desactivar el altavoz"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Buscar posición de reproducción"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Disminuir la velocidad de reproducción"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Aumentar la velocidad de reproducción"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historial de llamadas"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Más opciones"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"teclado"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar solo llamadas salientes"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar solo llamadas entrantes"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar solo llamadas perdidas"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Solo mensajes de voz"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas las llamadas"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Añadir pausa de 2 segundos"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Añadir espera"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Ajustes"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nuevo contacto"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Todos los contactos"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detalles de la llamada"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detalles no disponibles"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usar teclado táctil"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Volver a la llamada"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Añadir llamada"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Llamada entrante"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Llamada saliente"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Llamada perdida"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Videollamada entrante"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Videollamada realizada"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Videollamada perdida"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Buzón de voz"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Llamada rechazada"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Llamada bloqueada"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Llamadas entrantes"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Reproducir mensaje de voz"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Ver contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Llamar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Información de contacto de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> llamadas."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videollamada."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Enviar SMS a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mensaje de voz sin oír"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar búsqueda por voz"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Llamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Desconocidos"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Buzón de voz"</string>
+    <string name="private_num" msgid="6374339738119166953">"Número privado"</string>
+    <string name="payphone" msgid="7726415831153618726">"Teléfono público"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min y <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> a las <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"No se puede llamar a este número"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar el buzón de voz, toca la tecla de menú y, a continuación, toca Ajustes."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para llamar al buzón de voz, debes desactivar el modo avión."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Cargando..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Cargando desde tarjeta SIM…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contactos de tarjeta SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"No hay aplicaciones de contactos disponibles"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"La búsqueda por voz no está disponible"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"No se puede hacer llamadas porque se ha inhabilitado la aplicación Teléfono."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"No hay aplicaciones para esa acción en este dispositivo"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Buscar contactos"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Añade número o busca contactos"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Tu historial de llamadas está vacío"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Hacer una llamada"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"No tienes llamadas perdidas."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"La bandeja de entrada del buzón de voz está vacía."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Mostrar solo favoritos"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Historial de llamadas"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Todas"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Perdidas"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Mensaje de voz"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"¿Bloquear el número <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Se bloquearán las llamadas de este número y se eliminarán los mensajes del buzón de voz automáticamente."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Se bloquearán las llamadas de este número, pero la persona que llame puede seguir dejando mensajes en el buzón de voz."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOQUEAR"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"¿Desbloquear el número <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Las llamadas de este número ya no estarán bloqueadas."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DESBLOQUEAR"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Marcación rápida"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Historial de llamadas"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contactos"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Buzón de voz"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Eliminado de favoritos"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Deshacer"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Llamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crear nuevo contacto"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Añadir a un contacto"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Hacer videollamada"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloquear número"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Aún no tienes contactos en la función de marcación rápida"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Añadir un favorito"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Aún no tienes contactos"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Añadir un contacto"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Toca la imagen para ver todos los números o mantenla pulsada para cambiar el orden"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Eliminar"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videollamada"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Enviar un mensaje"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detalles de la llamada"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Llamada perdida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Has respondido una llamada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Mensaje de voz sin leer de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Mensaje de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"en <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Llamar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videollamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Escuchar el buzón de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Reproducir mensaje de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pausar mensaje de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Eliminar mensaje de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> mensajes de voz nuevos</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> mensaje de voz nuevo</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Crear contacto para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Añadir <xliff:g id="NAMEORNUMBER">^1</xliff:g> a un contacto"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detalles de llamada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Eliminada del historial de llamadas"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Hoy"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ayer"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Más antiguo"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista de llamadas"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Activar altavoz."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Desactivar altavoz."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Reproducir más rápido."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Reproducir más lento."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar o pausar reproducción."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opciones de visualización"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sonido y vibración"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilidad"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Tono del teléfono"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar también en llamadas"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonos del teclado"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duración del tono del teclado"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Tono normal"</item>
+    <item msgid="6177579030803486015">"Tono largo"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respuestas rápidas"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Llamadas"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Bloqueo de llamadas"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Bloqueo de llamadas desactivado temporalmente"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Se ha inhabilitado el bloqueo de llamadas porque te has puesto en contacto con los servicios de emergencia desde este teléfono en las últimas 48 horas. Se volverá a habilitar automáticamente cuando finalice este periodo de tiempo."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importar números"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Anteriormente marcaste algunas llamadas para que se enviaran automáticamente al buzón de voz a través de otras aplicaciones."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Ver números"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importar"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Error al importar"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Desbloquear número"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Añadir número"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Se bloquearán las llamadas de estos números y se eliminarán los mensajes del buzón de voz automáticamente."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Se bloquearán las llamadas de estos números, pero podrán seguir dejando mensajes en el buzón de voz."</string>
+    <string name="block_list" msgid="7760188925338078011">"Números bloqueados"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> no es válido."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ya está bloqueado."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Bloqueo de llamadas inhabilitado durante 48 horas"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Inhabilitado porque has hecho una llamada de emergencia."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Cuentas de llamadas"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Activar"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Establecer permisos"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Para habilitar la marcación rápida, activa el permiso la aplicación Contactos."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Para ver el registro de llamadas, activa el permiso de la aplicación Teléfono."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Para ver tus contactos, activa el permiso de la aplicación Contactos."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Para acceder al buzón de voz, activa el permiso de la aplicación Teléfono."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Para poder buscar tus contactos, activa los permisos de contactos."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Para hacer una llamada, activa el permiso de la aplicación Teléfono."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"La aplicación Teléfono no tiene permiso para editar los ajustes del sistema."</string>
+</resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
new file mode 100644
index 0000000..1e1f46a
--- /dev/null
+++ b/res/values-et-rEE/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefoni valimisklahvistik"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Kõneajalugu"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Valest numbrist teavitamine"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopeeri number"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopeeri transkribeerimine"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokeeri number"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Number <xliff:g id="NUMBER">%1$s</xliff:g> on blokeeritud"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Deblokeeri number"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Number <xliff:g id="NUMBER">%1$s</xliff:g> on deblokeeritud"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"VÕTA TAG."</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Kustuta"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Muuda enne helistamist numbrit"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Kustuta kõneajalugu"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Kustuta kõnepost"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Kõnepost kustutati"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"VÕTA TAGASI"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Kas kustutada kõneajalugu?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"See kustutab ajaloost kõik kõned"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Kõneajaloo kustutamine ..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Vastamata kõne"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Vastamata kõne töölt"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Vastamata kõned"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> vastamata kõnet"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Helista tagasi"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Saada sõnum"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> kõneposti teadet </item>
+      <item quantity="one">Kõneposti teade</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Esitamine"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Uus kõnepostisõnum kasutajalt <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Kõneposti ei õnnestunud esitada"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Kõneposti laadimine ..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Kõneposti laadimine ebaõnnestus"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Ainult kõnepostiga kõned"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Ainult sissetulevad kõned"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Ainult väljuvad kõned"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Ainult vastamata kõned"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visuaalne kõnepost"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Vaadake ja kuulake oma kõnepostisõnumeid numbrile helistamata. Lisanduda võivad andmesidetasud."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Seaded"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Kõneposti värskendused ei ole saadaval"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Uus kõnepostiteade. Praegu ei saa seda laadida."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Kõneposti seadistamine"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Heli ei ole saadaval"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Seadistamine"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Helista kõneposti"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Valige number"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Valige number"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Pea see valik meeles"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"otsing"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"Helista"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"number valimiseks"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Taasesituse alustamine või peatamine"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Valjuhääldi sisse- või väljalülitamine"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Taasesituse positsiooni otsimine"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Taasesituse kiiruse vähendamine"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Taasesituse kiiruse suurendamine"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Kõneajalugu"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Rohkem valikuid"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"valimisklahvistik"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Kuva ainult väljuvad"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Kuva ainult sissetulevad"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Kuva ainult vastamata"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Kuva ainult kõnepostisõnumeid"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Kuva kõik kõned"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Lisa 2-sekundiline paus"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Lisa ootama"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Seaded"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Uus kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Kõik kontaktid"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Kõne üksikasjad"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Üksikasjad ei ole saadaval"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Kasuta puutetooniga klahvistikku"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Tagasi käimasolevale kõnele"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Lisa kõne"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Sissetulev kõne"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Väljuv kõne"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Vastamata kõne"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Sissetulev videokõne"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Väljaminev videokõne"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Vastamata videokõne"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Kõnepost"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Keeldutud kõne"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blokeeritud kõne"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Sissetulevad kõned"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Esita kõnepostisõnum"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Kuva kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Helista: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Kontakti <xliff:g id="NAMEORNUMBER">%1$s</xliff:g> üksikasjad"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> kõnet."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videokõne."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"SMS-i saatmine kontaktile <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Kuulamata kõnepostisõnum"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Häälotsingu alustamine"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Helista: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Tundmatu"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Kõnepost"</string>
+    <string name="private_num" msgid="6374339738119166953">"Varjatud number"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefoniautomaat"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> kell <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Sellele numbrile ei saa helistada"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Kõneposti seadistamiseks minge valikusse Menüü &gt; Seaded."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Kõneposti kuulamiseks lülitage lennurežiim välja."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Laadimine ..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Laadimine SIM-kaardilt ..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM-kaardi kontaktid"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Kontaktide rakendus pole saadaval"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Häälotsing ei ole saadaval"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Helistada ei saa, sest telefonirakendus on keelatud."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Seadmes pole selleks sobilikku rakendust"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Otsige kontakte"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Lisage nr või otsige kontakte"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Teie kõneajalugu on tühi"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Helista"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Vastamata kõnesid pole."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Kõneposti postkast on tühi."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Kuva ainult lemmikud"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Kõneajalugu"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Kõik"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Vastamata"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Kõnepost"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Kas soovite blokeerida numbri <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Kõned sellelt numbrilt blokeeritakse ja kõnepostisõnumid kustutatakse automaatselt."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Kõned sellelt numbrilt blokeeritakse, kuid helistaja saab võib-olla siiski teile kõnepostisõnumeid jätta."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKEERI"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Kas soovite deblokeerida numbri <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Selle numbri jaoks pole teile helistamine enam blokeeritud."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DEBLOKEERI"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Kiirvalimine"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Kõneajalugu"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktid"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Kõnepost"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Eemaldatud lemmikute hulgast"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Võta tagasi"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Helista <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Loo uus kontakt"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Kontaktile lisamine"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS-i saatmine"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videokõne tegemine"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokeeri number"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> uus/uut vastamata kõne(t)"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Te pole veel kedagi kiirvalimisse lisanud"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Lisa lemmik"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Teil pole veel kontakte"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Lisa kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Puudutage kujutist, et näha kõiki numbreid, või puudutage pikalt järjestuse muutmiseks"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Eemalda"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videokõne"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Saada sõnum"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Kõne üksikasjad"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Helistamine: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Vastamata kõne: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Vastati kõnele: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Lugemata kõnepost kasutajalt <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Kõnepost kasutajalt <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Kõne: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"kontol <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Helistamine"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Helistamine: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videokõne kirjele <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Kontakti <xliff:g id="NAMEORNUMBER">^1</xliff:g> kõneposti kuulamine"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Kõnepostisõnumite esita kontaktilt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Kõnepostisõnumite peatamine kontaktilt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Kõnepostisõnumite kustutamine kontaktilt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uut kõnepostisõnumit</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> uus kõnepostisõnum</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Kontakti loomine kirjele <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Kirje <xliff:g id="NAMEORNUMBER">^1</xliff:g> lisamine olemasolevale kontaktile"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Kontakti <xliff:g id="NAMEORNUMBER">^1</xliff:g> kõne üksikasjad"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Kustutatud kõneajaloost"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Täna"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Eile"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Vanem"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Kõneloend"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Kõlari sisselülitamine."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Kõlari väljalülitamine."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Kiirem esitus."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Aeglasem esitus."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Esituse alustamine või peatamine."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Kuvamisvalikud"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Helid ja vibratsioon"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Juurdepääsetavus"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Telefoni helin"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibreeri ka kõnede puhul"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Valimisklahvistiku toonid"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Valimisklahvistiku tooni pikkus"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Tavaline"</item>
+    <item msgid="6177579030803486015">"Pikk"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Kiirvastused"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Kõned"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Kõnede blokeerimine"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Kõnede blokeerimine on ajutiselt väljas"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Kõnede blokeerimine on keelatud, kuna võtsite sellelt telefonilt viimase 48 tunni jooksul ühendust hädaabiteenustega. See lubatakse 48 tunni möödumisel automaatselt uuesti."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Impordi numbrid"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Märkisite varem, et osad helistajad saadetaks muude rakenduste kaudu automaatselt kõneposti."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Vaata numbreid"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Impordi"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Importimine ebaõnnestus"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Numbri deblokeerimine"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Lisa number"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Kõned nendelt numbritelt blokeeritakse ja kõnepostisõnumid kustutatakse automaatselt."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Kõned nendelt numbritelt blokeeritakse, kuid helistajad saavad võib-olla siiski teile kõnepostisõnumeid jätta."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blokeeritud numbrid"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> on kehtetu."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> on juba blokeeritud."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Kõnede blokeerimine on 48 tunniks keelatud"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Keelatud, kuna tehti hädaabikõne."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Helistamiskontod"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Lülita sisse"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Määra load"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Kiirvalimise lubamiseks lülitage sisse kontaktiluba."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Kõnelogi vaatamiseks lülitage sisse telefoniluba."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Kontaktide vaatamiseks lülitage sisse kontaktiluba."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Kõnepostile juurdepääsemiseks lülitage sisse telefoniluba."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Kontaktide otsimiseks lülitage sisse kontaktiload."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Helistamiseks lülitage sisse telefoniluba."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefonirakendusel pole luba süsteemiseadetesse kirjutada."</string>
+</resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
new file mode 100644
index 0000000..811813e
--- /dev/null
+++ b/res/values-eu-rES/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefonoa"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Deitu"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefonoaren markagailua"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefonoa"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Deien historia"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Jakinarazi zenbakia okerra dela"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopiatu zenbakia"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopiatu transkripzioa"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokeatu zenbakia"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> blokeatuta"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Desblokeatu zenbakia"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> desblokeatuta"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"DESEGIN"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Ezabatu"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Editatu zenbakia deitu aurretik"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Garbitu deien historia"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ezabatu ahots-mezua"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ahots-mezua ezabatzea"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESEGIN"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Deien historia garbitu nahi duzu?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Historiako dei guztiak ezabatuko dira"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Deien historia garbitzen…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefonoa"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Dei galdua"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Laneko dei bat galdu duzu"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Dei galduak"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> dei galdu"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Itzuli deia"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mezua"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> Erantzungailuko <xliff:g id="COUNT">%1$d</xliff:g> mezu </item>
+      <item quantity="one">Erantzungailuko mezua</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Erreproduzitu"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> deitzailearen ahots-mezu berria"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Ezin izan dira erreproduzitu ahots-mezuak"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Erantzungailua kargatzen…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Ezin izan da kargatu erantzungailua"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Erantzungailuko deiak soilik"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Sarrerako deiak soilik"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Irteerako deiak soilik"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Dei galduak soilik"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Ikusizko erantzungailua"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Ikusi eta entzun erantzungailuko mezuak, inora deitu beharrik gabe. Agian datu-konexioaren kostuak ordaindu beharko dituzu."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Ezarpenak"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Ez dago erantzungailuaren berririk"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Ahots-mezu berri bat duzu zain. Une honetan ezin da kargatu."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Konfiguratu erantzungailua"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audioa ez dago erabilgarri"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfiguratu"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Deitu erantzungail."</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Aukeratu zenbakia"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Aukeratu zenbakia"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Gogoratu aukera hau"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"bilatu"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"markatu"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"markatu beharreko zenbakia"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Erreproduzitu edo pausatu erreprodukzioa"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Aktibatu edo desaktibatu bozgorailua"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Bilatu erreprodukzioaren posizioa"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Mantsotu erreprodukzioaren abiadura"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Bizkortu erreprodukzioaren abiadura"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Deien historia"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Aukera gehiago"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"markagailua"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Erakutsi irteerakoak soilik"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Erakutsi sarrerakoak soilik"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Erakutsi galduak soilik"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Erakutsi erantzungailukoak soilik"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Erakutsi dei guztiak"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Gehitu 2 segundoko pausa"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Gehitu itxaronaldia"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Ezarpenak"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Kontaktu berria"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Kontaktu guztiak"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Deiaren xehetasunak"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Ez dago xehetasunik erabilgarri"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Erabili ukipen-tonuak dituen teklatua"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Itzuli abian den deira"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Gehitu deia"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Sarrerako deia"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Irteerako deia"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Dei galdua"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Sarrerako bideo-deia"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Irteerako bideo-deia"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Bideo-dei galdua"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Erantzungailua"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Baztertutako deia"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blokeatutako deia"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Sarrerako deiak"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Erreproduzitu erantzungailuko ahots-mezuak"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Ikusi <xliff:g id="NAME">%1$s</xliff:g> kontaktua"</string>
+    <string name="description_call" msgid="3443678121983852666">"Deitu <xliff:g id="NAME">%1$s</xliff:g> erabiltzaileari"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> kontaktuaren xehetasunak"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> dei."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Bideo-deia."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Bidali SMSa <xliff:g id="NAME">%1$s</xliff:g> kontaktuari"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Entzun ez diren erantzungailuko ahots-mezuak"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Hasi ahots bidezko bilaketa"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Deitu <xliff:g id="NUMBER">%s</xliff:g> zenbakira"</string>
+    <string name="unknown" msgid="740067747858270469">"Ezezaguna"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Erantzungailua"</string>
+    <string name="private_num" msgid="6374339738119166953">"Zenbaki pribatua"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefono publikoa"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> (<xliff:g id="TIME">%2$s</xliff:g>)"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Ezin da zenbaki horretara deitu"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Erantzungailua konfiguratzeko, joan Menua &gt; Ezarpenak atalera."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Erantzungailua entzuteko, Hegaldi modua desaktibatu behar duzu."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Kargatzen…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM txarteletik kargatzen…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM txarteleko kontaktuak"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Ez dago kontaktuen aplikaziorik erabilgarri"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Ahots bidezko bilaketa ez dago erabilgarri"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Ezin da telefono-deirik egin Telefonoa aplikazioa desgaitu egin delako."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Ez dago hori egin dezakeen aplikaziorik gailu honetan"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Bilatu kontaktuetan"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Gehitu zk. edo bilatu kontaktua"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Hutsik dago deien historia"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Deitu"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Ez duzu galdutako deirik."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Hutsik dago erantzungailuaren sarrerako ontzia."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Erakutsi gogokoak soilik"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Deien historia"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Guztiak"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Galduak"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Erantzungailuko deiak"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> blokeatu nahi duzu?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Zenbaki honetatik jasotzen diren deiak blokeatu egingo dira, eta mezuak automatikoki ezabatuko dira erantzungailutik."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Zenbaki honetatik jasotzen diren deiak blokeatu egingo dira, baina deitzaileak mezuak utzi ahal izango dizkizu erantzungailuan."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKEATU"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> desblokeatu nahi duzu?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Aurrerantzean, zenbakia ez da blokeatuta egongo eta zuri deitzeko gai izango da."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DESBLOKEATU"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Markatze bizkorra"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Deien historia"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktuak"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Erantzungailua"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Gogokoetatik kendu da"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desegin"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Deitu <xliff:g id="NUMBER">%s</xliff:g> zenbakira"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Sortu kontaktua"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Gehitu kontaktuetan"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Bidali SMS mezua"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Egin bideo-deia"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokeatu zenbakia"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> dei galdu berri"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Ez duzu inor markatze bizkorrean oraindik"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Gehitu gogokoak"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Ez duzu kontakturik oraindik"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Gehitu kontaktua"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Ukitu irudia zenbaki guztiak ikusteko, edo eduki ezazu ukituta berrantolatzeko"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Kendu"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Bideo-deia"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Bidali mezua"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Deiaren xehetasunak"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Deitu: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Galdutako deiaren xehetasunak: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Erantzundako deiaren xehetasunak: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Erantzungailuko mezua, irakurri gabe: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Erantzungailuko mezua: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Egindako deiaren xehetasunak: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> kontuan"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Deitu"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Deitu <xliff:g id="NAMEORNUMBER">^1</xliff:g> deitzaileari"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Egin bideo-deia (<xliff:g id="NAMEORNUMBER">^1</xliff:g>)."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Deitzaile honek erantzungailuan utzitako ahots-mezuak entzutea: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Erreproduzitu erantzungailuko <xliff:g id="NAMEORNUMBER">^1</xliff:g> deitzailearen mezua"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pausatu erantzungailuko <xliff:g id="NAMEORNUMBER">^1</xliff:g> deitzailearen mezua"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Ezabatu erantzungailuko <xliff:g id="NAMEORNUMBER">^1</xliff:g> deitzailearen mezua"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ahots-postako mezu berri</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ahots-postako mezu berri</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Sortu kontaktua (<xliff:g id="NAMEORNUMBER">^1</xliff:g>)"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Gehitu <xliff:g id="NAMEORNUMBER">^1</xliff:g> lehendik dagoen kontaktu batean"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> kontaktuaren xehetasunak"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Ezabatu deien historiatik"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Gaur"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Atzo"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Zaharrak"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Deien zerrenda"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Aktibatu bozgorailua."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Desaktibatu bozgorailua."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Erreproduzitu bizkorrago."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Erreproduzitu mantsoago."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Hasi edo gelditu erreprodukzioa."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Bistaratze-aukerak"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Soinuak eta dardara"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Erabilerraztasuna"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Telefonoaren tonua"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Dardara deiak jasotzean ere"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Markagailuaren tonuak"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Markagailuaren tonuaren iraupena"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normala"</item>
+    <item msgid="6177579030803486015">"Luzea"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Erantzun bizkorrak"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Deiak"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Deien blokeoa"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Deien blokeoa aldi baterako desgaituta"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Deiak blokeatzeko aukera desgaitu egin da, azken 48 orduetan larrialdi-zerbitzuekin harremanetan jarri zarelako telefono honetatik. Berriro gaituko da 48 orduko epea igaro ondoren."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Inportatu zenbakiak"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Deitzaile batzuk beste aplikazio batzuen bidez erantzungailura automatikoki bidaltzea aukeratu duzu."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Ikusi zenbakiak"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Inportatu"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Ezin izan da inportatu"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Desblokeatu zenbakia"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Gehitu zenbakia"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Zenbaki hauetatik jasotzen diren deiak blokeatu egingo dira, eta mezuak automatikoki ezabatuko dira erantzungailutik."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Zenbaki hauetatik jasotzen diren deiak blokeatu egingo dira, baina deitzaileek mezuak utzi ahal izango dizkizute erantzungailuan."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blokeatutako zenbakiak"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> zenbakiak ez du balio."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> blokeatuta dago dagoeneko."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Deiak blokeatzeko aukera desgaituta egongo da 48 orduan"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Desgaituta dago, larrialdi-dei bat egin delako."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Deiak egiteko kontuak"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Aktibatu"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Ezarri baimenak"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Markatze bizkorra gaitzeko, aktibatu Kontaktuak erabiltzeko baimena."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Deien erregistroa ikusteko, aktibatu Telefonoa erabiltzeko baimena."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Kontaktuak ikusteko, aktibatu Kontaktuak erabiltzeko baimena."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Erantzungailuan sartzeko, aktibatu Telefonoa erabiltzeko baimena."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Kontaktuak bilatzeko, aktibatu kontaktuak atzitzeko baimenak."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Deiak egiteko, aktibatu Telefonoa erabiltzeko baimena."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefonoaren aplikazioak ez du baimenik sistemaren ezarpenetan ezer idazteko."</string>
+</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
new file mode 100644
index 0000000..dfdedb0
--- /dev/null
+++ b/res/values-fa/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"تلفن"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"تلفن"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"صفحه شماره‌گیری تلفن"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"تلفن"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"سابقه تماس"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"گزارش شماره نادرست"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"کپی کردن شماره"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"کپی کردن آوانویسی"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"مسدود کردن شماره"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> مسدود شد"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"گشودن شماره"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> گشوده شد"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"واگرد"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"حذف"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"ویرایش شماره قبل از تماس"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"پاک کردن سابقه تماس"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"حذف پست صوتی"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"پست صوتی حذف شد"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"واگرد"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"سابقه تماس پاک شود؟"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"این کار همه تماس‌ها را از سابقه شما حذف می‌کند"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"در حال پاک کردن سابقه تماس..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"تلفن"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"تماس بی‌پاسخ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"تماس کاری بی‌پاسخ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"تماس‌های بی‌پاسخ"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> تماس بی‌پاسخ"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"پاسخ تماس"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"پیام"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> پست صوتی </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> پست صوتی </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"پخش"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>، <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"پست صوتی جدید از <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"پست صوتی پخش نشد"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"در حال بارگیری پست صوتی..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"پست صوتی بارگیری نشد"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"فقط تماس‌های دارای پست صوتی"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"فقط تماس‌های دریافتی"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"فقط تماس‌های خروجی"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"فقط تماس‌های بی‌پاسخ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"پست صوتی تصویری"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"بدون اینکه مجبور به گرفتن شماره‌ای باشید، پست صوتی را ببینید و به آن گوش دهید. ممکن است هزینه مصرف داده اعمال شود."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"تنظیمات"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"به‌روزرسانی‌های پست صوتی در دسترس نیستند"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"پست صوتی جدید در انتظار است. در حال حاضر نمی‌تواند بارگیری شود."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"پست صوتی‌تان را تنظیم کنید"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"صوت در دسترس نیست"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"راه‌اندازی"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"تماس با پست صوتی"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"انتخاب شماره"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"انتخاب شماره"</string>
+    <string name="make_primary" msgid="5829291915305113983">"این گزینه را به خاطر بسپار"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"جستجو"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"شماره گیری"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"شماره برای شماره گیری"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"پخش یا توقف بازپخش"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"روشن یا خاموش کردن بلندگوی تلفن"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"جستجوی موقعیت بازپخش"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"کاهش سرعت بازپخش"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"افزایش سرعت بازپخش"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"سابقه تماس"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"گزینه‌های بیشتر"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"صفحه شماره‌گیری"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"فقط نمایش خروجی"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"فقط نمایش ورودی"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"فقط نمایش بی‌پاسخ"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"فقط نمایش پست‌های صوتی"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"نمایش همه مکالمات"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"افزودن یک مکث ۲ ثانیه‌ای"</string>
+    <string name="add_wait" msgid="3360818652790319634">"افزودن انتظار"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"تنظیمات"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"مخاطب جدید"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"همه مخاطبین"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"جزئیات تماس"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"جزئیات در دسترس نیست"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"استفاده از صفحه‌کلید لمسی"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"برگشت به تماس درحال انجام"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"افزودن تماس"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"تماس ورودی"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"تماس خروجی"</string>
+    <string name="type_missed" msgid="2720502601640509542">"تماس بی پاسخ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"تماس ویدیویی ورودی"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"تماس ویدیویی خروجی"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"تماس ویدیویی بی‌پاسخ"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"پست صوتی"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"تماس ردشده"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"تماس مسدودشده"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"تماس‌های ورودی"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"پخش پست صوتی"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"مشاهده مخاطب <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"تماس با <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"جزئیات تماس برای <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> تماس."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"تماس ویدیویی."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"ارسال پیامک به <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"پست صوتی شنیده نشده"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"شروع جستجوی صوتی"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"تماس با <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"ناشناس"</string>
+    <string name="voicemail" msgid="3851469869202611441">"پست صوتی"</string>
+    <string name="private_num" msgid="6374339738119166953">"شماره خصوصی"</string>
+    <string name="payphone" msgid="7726415831153618726">"تلفن عمومی"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> دقیقه <xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> ساعت <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"تماس با این شماره ممکن نیست"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"‏برای راه‌اندازی پست صوتی به منو &gt; تنظیمات بروید."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"برای تماس با پست صوتی، ابتدا حالت هواپیما را غیرفعال کنید."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"در حال بارگیری..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"در حال بارگیری سیم کارت..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"مخاطبین سیم کارت"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"هیچ برنامه مخاطبی در دسترس نیست"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"جستجوی شفاهی در دسترس نیست"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"برقراری تماس تلفنی ممکن نیست، زیرا برنامه تلفن غیرفعال شده است."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"هیچ برنامه‌ای برای انجام این کار در این دستگاه نصب نیست"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"جستجوی مخاطبین"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"افزودن شماره یا جستجوی مخاطب"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"سابقه تماستان خالی است"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"برقراری تماس تلفنی"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"تماس از دست رفته‌ای ندارید."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"صندوق پست صوتی‌تان خالی است."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"فقط نمایش موارد دلخواه"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"سابقه تماس"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"همه موارد"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"بی‌پاسخ"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"پست صوتی"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> مسدود شود؟"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"تماس‌‌ها از این شماره مسدود می‌شود و پست‌‌های صوتی به‌طور خودکار حذف می‌شود."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"تماس‌ها از این شماره مسدود می‌شود، اما ممکن است تماس‌گیرنده همچنان بتواند برایتان پست صوتی بگذارد."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"مسدود کردن"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> گشوده شود؟"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"این شماره دیگر برای تماس با شما محدودیتی نخواهد داشت."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"گشودن"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"شماره‌گیری سریع"</string>
+    <string name="tab_history" msgid="2563144697322434940">"سابقه تماس"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"مخاطبین"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"پست صوتی"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"از موارد دلخواه حذف شد"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"واگرد"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"تماس با <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ایجاد مخاطب جدید"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"افزودن به مخاطب"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ارسال پیامک"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"برقراری تماس ویدیویی"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"مسدود کردن شماره"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> تماس‌ بی‌پاسخ جدید"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"هنوز کسی در فهرست شماره‌گیری سریع شما نیست"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"افزودن مورد دلخواه"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"هنوز هیچ مخاطبی ندارید"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"افزودن مخاطب"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"برای مشاهده همه شماره‌ها، تصویر را لمس کنید یا برای ترتیب مجدد لمس کنید و نگه دارید"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"حذف"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"تماس ویدیویی"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"ارسال پیام"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"جزئیات تماس"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"تماس با <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"تماس از دست رفته از <xliff:g id="NAMEORNUMBER">^1</xliff:g>، ‏<xliff:g id="TYPEORLOCATION">^2</xliff:g>، ‏<xliff:g id="TIMEOFCALL">^3</xliff:g>، ‏<xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"تماس پاسخ داده شده از <xliff:g id="NAMEORNUMBER">^1</xliff:g>، ‏<xliff:g id="TYPEORLOCATION">^2</xliff:g>، ‏<xliff:g id="TIMEOFCALL">^3</xliff:g>، ‏<xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"پست صوتی خوانده نشده از <xliff:g id="NAMEORNUMBER">^1</xliff:g>،‏ <xliff:g id="TYPEORLOCATION">^2</xliff:g>،‏ <xliff:g id="TIMEOFCALL">^3</xliff:g>،‏ <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"پست صوتی از <xliff:g id="NAMEORNUMBER">^1</xliff:g>،‏ <xliff:g id="TYPEORLOCATION">^2</xliff:g>،‏ <xliff:g id="TIMEOFCALL">^3</xliff:g>،‏ <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"تماس با <xliff:g id="NAMEORNUMBER">^1</xliff:g>، ‏<xliff:g id="TYPEORLOCATION">^2</xliff:g>، ‏<xliff:g id="TIMEOFCALL">^3</xliff:g>، ‏<xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"در <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"تماس"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"تماس با <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"تماس ویدیویی با <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"گوش دادن به پست صوتی از <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"پخش پست صوتی از <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"مکث پست صوتی از <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"حذف پست صوتی از <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one">‏<xliff:g id="COUNT_1">%d</xliff:g> پست صوتی جدید</item>
+      <item quantity="other">‏<xliff:g id="COUNT_1">%d</xliff:g> پست صوتی جدید</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"ایجاد مخاطب برای <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"افزودن <xliff:g id="NAMEORNUMBER">^1</xliff:g> به مخاطب موجود"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"جزئیات تماس برای <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"از سابقه تماس حذف شد"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"امروز"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"دیروز"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"قدیمی‌تر"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"لیست تماس‌ها"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"روشن کردن بلندگو."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"خاموش کردن بلندگو."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"پخش سریع‌تر"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"پخش آهسته‌تر."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"شروع یا مکث بازپخش."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">"، "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"گزینه‌های نمایش"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"صدا و لرزش"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"دسترس‌پذیری"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"آهنگ زنگ تلفن"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"تماس‌‌ها لرزش هم داشته باشند"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"صداهای صفحه شماره‌گیری"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"طول آهنگ صفحه شماره‌گیری"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"عادی"</item>
+    <item msgid="6177579030803486015">"طولانی"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"پاسخ‌های سریع"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"تماس‌ها"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"مسدود کردن تماس"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"انسداد تماس موقتاً خاموش است"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"چون در ۴۸ ساعت گذشته با این تلفن با سرویس‌های اضطراری تماس گرفتید، انسداد تماس غیرفعال شده است. پس از گذشت ۴۸ ساعت، این قابلیت دوباره فعال می‌شود."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"وارد کردن شماره‌ها"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"قبلاً ازطریق برنامه‌های دیگر، برخی از تماس‌گیرندگان را برای ارسال خودکار به پست صوتی علامت زده‌اید."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"مشاهده شماره‌ها"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"وارد کردن"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"وارد کردن انجام نشد"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"گشودن شماره"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"افزودن شماره"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"تماس‌‌ها از این شماره‌ها مسدود می‌شود و پست‌‌های صوتی به‌طور خودکار حذف می‌شود."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"تماس‌‌ها از این شماره‌ها مسدود می‌شود اما ممکن است همچنان بتوانند برای شما پست صوتی بگذارند."</string>
+    <string name="block_list" msgid="7760188925338078011">"شماره‌های مسدود شده"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> نامعتبر است."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> درحال‌حاضر مسدود شده است."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"مسدود کردن تماس برای ۴۸ ساعت غیرفعال شد"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"به علت برقرار شدن تماس اضطراری، غیرفعال شد."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"حساب‌های تماس"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"روشن کردن"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"تنظیم مجوزها"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"برای فعال کردن شماره‌گیری سریع، مجوز «مخاطبین» را روشن کنید."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"برای دیدن گزارش تماستان، مجوز «تلفن» را روشن کنید."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"برای دیدن مخاطبینتان، مجوز «مخاطبین» را روشن کنید."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"برای دسترسی به پست صوتی‌تان، مجوز «تلفن» را روشن کنید."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"برای جستجوی مخاطبینتان، مجوزهای مخاطبین را روشن کنید."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"برای برقراری تماس، مجوز «تلفن» را روشن کنید."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"برنامه تلفن اجازه نوشتن در تنظیمات سیستم را ندارد."</string>
+</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
new file mode 100644
index 0000000..bb1dc97
--- /dev/null
+++ b/res/values-fi/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Puhelin"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Puhelin"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Puhelimen näppäimistö"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Puhelin"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Soittohistoria"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Ilmoita epätarkasta numerosta"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopioi numero"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopioi transkriptio"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Estä numero"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Numero <xliff:g id="NUMBER">%1$s</xliff:g> estetty"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Kumoa numeron esto"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Numeron <xliff:g id="NUMBER">%1$s</xliff:g> esto kumottu"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"KUMOA"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Poista"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Muokkaa numeroa ennen puhelua"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Tyhjennä soittohistoria"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Poista vastaajaviesti"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Viesti poistettiin."</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"KUMOA"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Tyhjennetäänkö soittohistoria?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Kaikki soittohistorian tiedot poistetaan"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Tyhjennetään soittohistoriaa…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Puhelin"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Vastaamaton puhelu"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Vastaamaton työpuhelu"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Vastaamattomat puhelut"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> vastaamatonta puhelua"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Soita takaisin"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Viesti"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> vastaajaviestiä </item>
+      <item quantity="one">Vastaajaviesti</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Toista"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Uusi vastaajaviesti: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Viestin toistaminen epäonnistui"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Ladataan puhelinvastaajaa…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Puhelinvastaajan lataaminen epäonnistui"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Vain vastaajaan menneet puhelut"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Vain saapuvat puhelut"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Vain soitetut puhelut"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Vain vastaamattomat puhelut"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visuaalinen puhelinvastaaja"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Voit tarkistaa ja kuunnella vastaajaviestit soittamatta palveluun. Tiedonsiirto voi olla maksullista."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Asetukset"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Puhelinvastaajan tiedot eivät ole käytettävissä"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Uusia viestejä vastaajassa. Lataus ei onnistu tällä hetkellä."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Määritä puhelinvastaajan asetukset"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Ääni ei ole käytettävissä"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Asetusten määritys"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Soita vastaajaan"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Valitse numero"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Valitse numero"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Muista valinta"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"haku"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"soita"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"numero johon soitetaan"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Aloita tai lopeta toisto"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Ota kaiutin käyttöön tai poista käytöstä"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Toisto-osoitin"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Hidasta toistoa"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Nopeuta toistoa"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Soittohistoria"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Lisää vaihtoehtoja"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"näppäimistö"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Näytä vain soitetut"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Näytä vain saapuneet"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Näytä vain vastaamattomat"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Näytä vain vastaajaviestit"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Näytä kaikki puhelut"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Lisää 2 sekunnin tauko"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Lisää tauko"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Asetukset"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Uusi yhteystieto"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Kaikki yhteystiedot"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Puhelun tiedot"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Tiedot eivät ole käytettävissä"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Käytä näppäimistöä"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Palaa käynnissä olevaan puheluun"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Lisää puhelu"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Saapuva puhelu"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Lähtevä puhelu"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Vastaamatta jäänyt puhelu"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Saapuva videopuhelu"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Soitettava videopuhelu"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Vastaamaton videopuhelu"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Vastaaja"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Hylätty puhelu"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Estetty puhelu"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Saapuvat puhelut"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Toista vastaajaviesti"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Näytä yhteystieto <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Soita: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Yhteystiedot: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> puhelua."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videopuhelu."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Lähetä tekstiviesti: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Kuuntelematon vastaajaviesti"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Aloita puhehaku"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Soita <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Tuntematon"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Vastaaja"</string>
+    <string name="private_num" msgid="6374339738119166953">"Yksityinen numero"</string>
+    <string name="payphone" msgid="7726415831153618726">"Maksupuhelin"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> klo <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Numeroon ei voi soittaa"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Määritä puhelinvastaajan asetukset kohdassa Valikko &gt; Asetukset."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Poista lentokonetila käytöstä ennen vastaajaan soittamista."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Ladataan..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI-koodi"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Ladataan SIM-kortilta…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM-kortin yhteystiedot"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Ei käytettävissä olevaa yhteystietosovellusta"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Puhehaku ei ole käytettävissä"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Puhelua ei voi soittaa, koska Puhelin-sovellus on poistettu käytöstä."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Laitteessa ei ole kyseiseen toimintoon tarvittavaa sovellusta"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Hae yhteystietoja"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Lisää numero tai hae yhteystiedoista"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Soittohistoriasi on tyhjä."</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Soita puhelu"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Sinulla ei ole vastaamattomia puheluita."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Puhelinvastaajasi postilaatikko on tyhjä."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Näytä vain suosikit"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Soittohistoria"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Kaikki"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Vastaamattomat"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Vastaaja"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Estetäänkö <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Tästä numerosta tulevat puhelut estetään, ja vastaajaviestit poistetaan automaattisesti."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Tästä numerosta tulevat puhelut estetään, mutta soittaja voi silti mahdollisesti jättää vastaajaviestejä."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ESTÄ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Kumotaanko numeron <xliff:g id="NUMBER">%1$s</xliff:g> esto?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Tätä numeroa ei enää estetä soittamasta sinulle."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"KUMOA ESTO"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Pikavalinta"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Soittohistoria"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Yhteystiedot"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Puhelinvastaaja"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Poistettu suosikeista"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Kumoa"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Soita <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Luo uusi yhteystieto"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Lisää yhteystietoihin"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Lähetä tekstiviesti"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Soita videopuhelu"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Estä numero"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> uutta vastaamatonta puhelua"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Pikavalinnassa ei ole vielä yhtään yhteystietoa."</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Lisää suosikki"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Sinulla ei ole yhteystietoja."</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Lisää yhteystieto"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Katso kaikki numerot koskettamalla kuvaa tai järjestele tietoja koskettamalla kuvaa pitkään"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Poista"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videopuhelu"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Lähetä viesti"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Puhelun tiedot"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Soita: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Vastaamaton puhelu soittajalta <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Vastattu puhelu soittajalta <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Lukematon vastaajaviesti: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Vastaajaviesti: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Soita vastaanottajalle <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Soita"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Soita: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Soita videopuhelu: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Kuuntele vastaajaviesti: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Toista vastaajaviesti lähettäjältä <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Keskeytä vastaajaviesti lähettäjältä <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Poista vastaajaviesti lähettäjältä <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uutta vastaajaviestiä</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> uusi vastaajaviesti</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Luo kontakti: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Lisää <xliff:g id="NAMEORNUMBER">^1</xliff:g> olemassa olevaan kontaktiin."</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Yhteystiedon <xliff:g id="NAMEORNUMBER">^1</xliff:g> puhelutiedot"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Poistettu soittohistoriasta"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Tänään"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Eilen"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Vanhempi"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Puheluluettelo"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Ota kaiutin käyttöön."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Poista kaiutin käytöstä."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Toista nopeammin."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Toista hitaammin."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Aloita tai keskeytä toisto."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Näyttöasetukset"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Äänet ja värinä"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Esteettömyys"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Puhelimen soittoääni"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Värinä myös puheluille"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Näppäimistön äänet"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Näppäimistön äänen pituus"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normaali"</item>
+    <item msgid="6177579030803486015">"Pitkä"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Pikavastaukset"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Puhelut"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Puhelujen esto"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Puheluesto väliaikaisesti pois käytöstä"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Puheluiden estäminen on poistettu käytöstä, koska olet ottanut yhteyttä hätäpalveluihin tästä puhelimesta viimeisen 48 tunnin aikana. Esto otetaan automaattisesti uudelleen käyttöön, kun puhelusta on kulunut 48 tuntia."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Tuo numerot"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Valitsit aiemmin muilla sovelluksilla, että tiettyjen soittajien puhelut siirretään automaattisesti vastaajaan."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Näytä numerot"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Tuo"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Tuonti epäonnistui."</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Poista numeron esto"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Lisää numero"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Näistä numeroista tulevat puhelut estetään, ja vastaajaviestit poistetaan automaattisesti."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Näistä numeroista tulevat puhelut estetään, mutta soittajat voivat silti mahdollisesti jättää vastaajaviestejä."</string>
+    <string name="block_list" msgid="7760188925338078011">"Estetyt numerot"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> on virheellinen."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> on jo estetty."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Puhelujen esto poistettiin käytöstä 48 tunnin ajaksi"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Toiminto poistettiin käytöstä hätäpuhelun vuoksi."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Puhelutilit"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Ota käyttöön"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Määritä käyttöoikeudet"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Jos haluat käyttää pikavalintaa, ota Yhteystiedot-käyttöoikeus käyttöön."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Jos haluat katsella puhelulokiasi, ota Puhelin-käyttöoikeus käyttöön."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Jos haluat katsella yhteystietojasi, ota Yhteystiedot-käyttöoikeus käyttöön."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Jos haluat käyttää puhelinvastaajaa, ota Puhelin-käyttöoikeus käyttöön."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Jos haluat hakea kontaktejasi, ota käyttöön kontaktien käyttöoikeudet."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Jos haluat soittaa puheluja, ota Puhelin-käyttöoikeus käyttöön."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Puhelinsovelluksella ei ole oikeutta muokata järjestelmän asetuksia."</string>
+</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..501fd1b
--- /dev/null
+++ b/res/values-fr-rCA/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Téléphone"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Téléphone"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Clavier du téléphone"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Téléphone"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Historique des appels"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Signaler un numéro incorrect"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copier le numéro"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copier la transcription"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloquer le numéro"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Le numéro « <xliff:g id="NUMBER">%1$s</xliff:g> » est bloqué"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Débloquer le numéro"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Le numéro « <xliff:g id="NUMBER">%1$s</xliff:g> » est débloqué"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ANNULER"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Supprimer"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Modifier le numéro avant l\'appel"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Effacer l\'historique des appels"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Supprimer le message vocal"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mess. vocal supprimé"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANNULER"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Effacer l\'historique des appels?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tous les appels seront supprimés de votre historique."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Suppression historique des appels…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Téléphone"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Appel manqué"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Appel professionnel manqué"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Appels manqués"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> appels manqués"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Rappeler"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Message"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> message vocal </item>
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> messages vocaux </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lire"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nouveau message vocal de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Impossible de lire le message vocal"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Chargement du message vocal en cours…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Impossible de charger la messagerie vocale"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Seulement les appels avec message vocal"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Seulement les appels entrants"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Seulement les appels sortants"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Seulement les appels manqués"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Messagerie vocale visuelle"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Affichez et écoutez vos messages vocaux, sans devoir appeler un numéro. Des frais supplémentaires liés à la consommation de données peuvent s\'appliquer."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Paramètres"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Impossible de mettre à jour la messagerie vocale"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Nouveau message vocal. Impossible de le charger pour le moment."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configurez votre messagerie vocale"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio non disponible"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurer"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Appeler mess. vocale"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Sélectionner un numéro"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Sélectionner un numéro"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Mémoriser ce choix"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"rechercher"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"composer"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"numéro à composer"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Lire ou arrêter la lecture"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Activer ou désactiver le haut-parleur"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Rechercher une position de lecture"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Réduire la vitesse de lecture"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Accroître la vitesse de lecture"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historique des appels"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Plus d\'options"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"clavier numérique"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Afficher appels sortants uniq."</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Afficher appels entrants uniq."</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Afficher appels manqués uniq."</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Messages vocaux uniquement"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Afficher tous les appels"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Ajouter une pause de 2 s"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Ajouter Attendre"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Paramètres"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nouveau contact"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Tous les contacts"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Détails sur l\'appel"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Les détails ne sont pas disponibles"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Utiliser le clavier DTMF"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Reprendre l\'appel en cours"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Autre appel"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Appel entrant"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Appel sortant"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Appel manqué"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Appel vidéo entrant"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Appel vidéo sortant"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Appel vidéo manqué"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Messagerie vocale"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Appel refusé"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Appel bloqué"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Appels entrants"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Écouter le message vocal"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Afficher le contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Appeler <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Coordonnées de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> appels."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Appel vidéo."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Envoyer un texto à <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nouveau message vocal"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Démarrer la recherche vocale"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Inconnu"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Messagerie vocale"</string>
+    <string name="private_num" msgid="6374339738119166953">"Numéro privé"</string>
+    <string name="payphone" msgid="7726415831153618726">"Cabine téléphonique"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min et <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> à <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Vous ne pouvez pas appeler ce numéro"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Pour configurer la messagerie vocale, accédez à Menu &gt; Paramètres."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Veuillez désactiver le mode Avion avant d\'appeler la messagerie vocale."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Chargement en cours..."</string>
+    <string name="imei" msgid="3045126336951684285">"Code IIEM"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Chargement depuis la carte SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contacts de carte SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Aucune application de gestion des contacts n\'est disponible"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Recherche vocale non disponible"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Impossible d\'effectuer un appel téléphonique, car l\'application Téléphone a été désactivée."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Cette action ne peut être effectuée par aucune application sur cet appareil."</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Rechercher des contacts"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Ajouter nº ou chercher contact"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Votre historique des appels est vide"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Faire un appel"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Vous n\'avez aucun appel manqué."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"La boîte de réception de votre messagerie vocale est vide."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Afficher les contacts favoris uniquement"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Historique des appels"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Tous"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Manqués"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Mess. voc."</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Bloquer le numéro <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Les appels provenant de ce numéro seront bloqués et les messages vocaux seront automatiquement supprimés."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Les appels provenant de ce numéro seront bloqués, mais il se peut que l\'appelant puisse quand même vous laisser des messages vocaux."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOQUER"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Débloquer le numéro <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Les appels associés à ce numéro ne seront plus bloqués."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DÉBLOQUER"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Composition abrégée"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Historique des appels"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Messagerie vocale"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Créer un contact"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Ajouter à un contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Envoyer un texto"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Faire un appel vidéo"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloquer le numéro"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nouveaux appels manqués"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Aucun contact ne figure dans vos numéros de composition abrégée"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Ajouter un favori"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Vous n\'avez pas encore de contacts"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Ajouter un contact"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Touchez l\'image pour afficher tous les numéros, ou maintenez votre doigt sur l\'écran pour les réorganiser"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Supprimer"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Appel vidéo"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Envoyer un message"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Détails de l\'appel"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Appeler <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Appel manqué : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Appel répondu : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Message vocal non écouté de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Appel effectué : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"sur <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Appeler"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Appeler <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Appel vidéo avec <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Écouter le message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Jouer le message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Interrompre le message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Supprimer le message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> nouveau message vocal</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nouveaux messages vocaux</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Créer un contact pour <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Ajouter <xliff:g id="NAMEORNUMBER">^1</xliff:g> à un contact existant"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Détails de l\'appel pour <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"L\'appel a bien été supprimé de l\'historique"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Aujourd\'hui"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Hier"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Plus anciens"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Liste des appels"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Activer le haut-parleur."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Désactiver le haut-parleur."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Lire plus vite."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Lire moins vite."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Lancer ou interrompre la lecture."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Options d\'affichage"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons et vibrations"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilité"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Sonnerie du téléphone"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer aussi pour les appels"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonalités du clavier"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durée des tonalités du pavé numérique"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normale"</item>
+    <item msgid="6177579030803486015">"Longue"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Réponses rapides"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Appels"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blocage des appels"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blocage appels désactivé temporairement"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Le blocage des appels a été désactivé, car vous avez communiqué avec les services d\'urgence à partir de ce téléphone au cours des dernières 48 heures. Le blocage sera réactivé automatiquement après 48 heures."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importer les numéros"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Vous avez indiqué que certains appelants devaient automatiquement être renvoyés vers la messagerie vocale par d\'autres applications."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Afficher les numéros"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importer"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Échec de l\'importation"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Débloquer le numéro"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Ajouter un numéro"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Les appels provenant de ces numéros seront bloqués et les messages vocaux seront automatiquement supprimés."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Les appels provenant de ces numéros seront bloqués, mais il se peut que les appelants puissent quand même vous laisser des messages vocaux."</string>
+    <string name="block_list" msgid="7760188925338078011">"Numéros bloqués"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Le numéro <xliff:g id="NUMBER">%1$s</xliff:g> n\'est pas valide."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Le numéro <xliff:g id="NUMBER">%1$s</xliff:g> est déjà bloqué."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Blocage des appels désactivé pendant 48 heures"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Désactivé, car un appel d\'urgence a été effectué"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Comptes d\'appel"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Activer"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Définir les autorisations"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Pour activer la composition abrégée, activez l\'autorisation Contacts."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Pour consulter vos contacts, activez l\'autorisation Contacts."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Pour accéder à votre messagerie vocale, activez l\'autorisation Téléphone."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Pour rechercher vos contacts et les lieux à proximité, activez les autorisations Contacts."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Pour faire un appel, activez l\'autorisation Téléphone."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"L\'application Téléphone n\'est pas autorisée à modifier les paramètres du système."</string>
+</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
new file mode 100644
index 0000000..90beefa
--- /dev/null
+++ b/res/values-fr/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Téléphone"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Téléphone"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Clavier du téléphone"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Tél."</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Historique des appels"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Signaler un numéro incorrect"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copier le numéro"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copier la transcription"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloquer le numéro"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Le numéro \"<xliff:g id="NUMBER">%1$s</xliff:g>\" est bloqué."</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Débloquer le numéro"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Le numéro \"<xliff:g id="NUMBER">%1$s</xliff:g>\" est débloqué."</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ANNULER"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Supprimer"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Modifier le numéro avant de passer l\'appel"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Supprimer l\'historique des appels"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Supprimer le message vocal"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mess. vocal supprimé"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANNULER"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Supprimer l\'historique des appels ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tous les appels seront supprimés de votre historique."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Suppression historique des appels…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Téléphoner"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Appel manqué"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Appel professionnel manqué"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Appels manqués"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> appels manqués"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Rappeler"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Envoyer un SMS"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> message vocal </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> messages vocaux </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lire"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nouveau message vocal de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Impossible de lire le message vocal."</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Chargement du message vocal en cours…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Impossible de charger le message vocal."</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Seulement les appels avec message vocal"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Seulement les appels entrants"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Seulement les appels sortants"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Seulement les appels manqués"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Messagerie vocale visuelle"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Affichez et écoutez vos messages vocaux, sans devoir appeler un numéro. Des frais supplémentaires liés à la consommation de données peuvent être facturés."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Paramètres"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Impossible de mettre à jour la messagerie vocale."</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Nouveau message vocal. Impossible de le charger pour le moment."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configurer votre messagerie vocale"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio non disponible"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configuration"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Appeler mess. vocale"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Sélectionner un numéro"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Sélectionner un numéro"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Mémoriser ce choix"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"rechercher"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"composer"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"numéro à composer"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Lancer ou interrompre la lecture"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Activer ou désactiver le haut-parleur"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Rechercher une position de lecture"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Réduire la vitesse de lecture"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Accroître la vitesse de lecture"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historique des appels"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Plus d\'options"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"clavier numérique"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Afficher appels sortants uniq."</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Afficher appels entrants uniq."</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Afficher appels manqués uniq."</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Messages vocaux uniquement"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Afficher tous les appels"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Ajouter une pause de 2 s"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Ajouter une attente"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Paramètres"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nouveau contact"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Tous les contacts"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Informations sur l\'appel"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Détails non disponibles"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Utiliser le clavier DTMF"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Reprendre l\'appel en cours"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Autre appel"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Appel entrant"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Appel sortant"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Appel manqué"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Appel vidéo entrant"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Appel vidéo sortant"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Appel vidéo manqué"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Messagerie vocale"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Appel refusé"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Appel bloqué"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Appels entrants"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Écouter le message vocal"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Afficher le contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Appeler <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Coordonnées associées à <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> appels"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Appel vidéo"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Envoyer un SMS à <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nouveau message vocal"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Démarrer la recherche vocale"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Inconnu"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Messagerie vocale"</string>
+    <string name="private_num" msgid="6374339738119166953">"Numéro privé"</string>
+    <string name="payphone" msgid="7726415831153618726">"Cabine téléphonique"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> secondes"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min et <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> à <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Impossible d\'appeler ce numéro."</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Pour configurer la messagerie vocale, accédez à Menu &gt; Paramètres."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Veuillez désactiver le mode Avion avant d\'appeler la messagerie vocale."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Chargement…"</string>
+    <string name="imei" msgid="3045126336951684285">"Code IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Chargement depuis la carte SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contacts de carte SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Aucune application de gestion des contacts n\'est disponible."</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Recherche vocale non disponible"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Impossible d\'effectuer un appel téléphonique, car l\'application Téléphone a été désactivée."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Cette action ne peut être effectuée via aucune application sur cet appareil."</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Rechercher dans vos contacts"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Ajouter num. ou rech. contacts"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Votre historique des appels est vide."</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Passer un appel"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Vous n\'avez aucun appel manqué."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"La boîte de réception de la messagerie vocale est vide."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Afficher les contacts ajoutés aux favoris uniquement"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Historique des appels"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Tous"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Manqués"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Mess. vocale"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Bloquer le numéro \"<xliff:g id="NUMBER">%1$s</xliff:g>\" ?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Les appels associés à ce numéro seront bloqués, et les messages vocaux seront automatiquement supprimés."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Les appels associés à ce numéro seront bloqués, mais l\'appelant pourra peut-être toujours vous laisser des messages vocaux."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOQUER"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Débloquer le numéro \"<xliff:g id="NUMBER">%1$s</xliff:g>\" ?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Les appels associés à ce numéro ne seront plus bloqués sur votre téléphone."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DÉBLOQUER"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Numérotation abrégée"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Historique des appels"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Messagerie vocale"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris."</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Créer un contact"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Ajouter à un contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Envoyer un SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Passer un appel vidéo"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloquer le numéro"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Nouveaux appels manqués : <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Vous n\'avez encore défini la numérotation abrégée pour aucun contact."</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Ajouter un favori"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Vous n\'avez pas encore de contacts."</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Ajouter un contact"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Appuyer sur l\'image pour afficher tous les numéros, ou appuyer dessus de manière prolongée pour réorganiser ces derniers"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Supprimer"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Appel vidéo"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Envoyer un message"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Informations sur l\'appel"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Appeler <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Appel manqué <xliff:g id="TIMEOFCALL">^3</xliff:g> (appelant : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Appel reçu <xliff:g id="TIMEOFCALL">^3</xliff:g> (appelant : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Message vocal à écouter de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Appel émis <xliff:g id="TIMEOFCALL">^3</xliff:g> (destinataire : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"sur <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Appeler"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Appeler <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Appel vidéo de \"<xliff:g id="NAMEORNUMBER">^1</xliff:g>\""</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Écouter le message vocal laissé par le numéro ou le contact \"<xliff:g id="NAMEORNUMBER">^1</xliff:g>\""</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Lire le message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Interrompre le message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Supprimer le message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> nouveau message vocal</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nouveaux messages vocaux</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Créer un contact pour \"<xliff:g id="NAMEORNUMBER">^1</xliff:g>\""</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Ajouter \"<xliff:g id="NAMEORNUMBER">^1</xliff:g>\" à un contact"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Informations sur l\'appel pour <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"L\'appel a bien été supprimé de l\'historique."</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Aujourd\'hui"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Hier"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Plus anciens"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Liste des appels"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Activer le haut-parleur"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Désactiver le haut-parleur"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Lire plus vite"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Lire moins vite"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Lancer ou suspendre la lecture"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Options d\'affichage"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons et vibreur"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilité"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Sonnerie du téléphone"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer aussi pour les appels"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Son du clavier"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durée de la tonalité du clavier"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normale"</item>
+    <item msgid="6177579030803486015">"Longue"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Réponses rapides"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Appels"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blocage des appels"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blocage appels désactivé temporairement"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Le blocage des appels a été désactivé, car vous avez contacté les services d\'urgence à l\'aide de ce téléphone au cours des dernières 48 heures. Le blocage sera réactivé automatiquement après 48 heures."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importer les numéros"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Vous avez indiqué que certains appelants devaient automatiquement être renvoyés vers la messagerie vocale via d\'autres applications."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Afficher les numéros"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importer"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Échec lors de l\'importation."</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Débloquer le numéro"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Ajouter un numéro"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Les appels associés à ces numéros seront bloqués, et les messages vocaux seront automatiquement supprimés."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Les appels associés à ces numéros seront bloqués, mais les appelants pourront peut-être toujours vous laisser des messages vocaux."</string>
+    <string name="block_list" msgid="7760188925338078011">"Numéros bloqués"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Le numéro \"<xliff:g id="NUMBER">%1$s</xliff:g>\" n\'est pas valide."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Le numéro \"<xliff:g id="NUMBER">%1$s</xliff:g>\" est déjà bloqué."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Blocage des appels désactivé pendant 48 heures"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Désactivé, car un appel d\'urgence a été effectué"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Comptes téléphoniques"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Activer"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Définir les autorisations"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Pour activer la numérotation abrégée, activez l\'autorisation Contacts."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Pour consulter vos contacts, activez l\'autorisation Contacts."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Pour accéder à votre messagerie vocale, activez l\'autorisation Téléphone."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Pour rechercher vos contacts, activez l\'autorisation Contacts."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Pour passer un appel, activez l\'autorisation Téléphone."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"L\'application Téléphone n\'est pas autorisée à modifier les paramètres du système."</string>
+</resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
new file mode 100644
index 0000000..09bca9b
--- /dev/null
+++ b/res/values-gl-rES/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Teléfono"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Teléfono"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Teclado de marcación do teléfono"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Historial de chamadas"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Informar dun número incorrecto"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copiar número"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copiar transcrición"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloquear número"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Bloqueouse o <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Desbloquear número"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Desbloqueouse o <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"DESFACER"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Eliminar"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Editar número antes de chamar"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Borrar historial de chamadas"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Eliminar correo de voz"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correo voz eliminado"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESFACER"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Borrar o historial de chamadas?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Esta acción eliminará todas as chamadas do teu historial"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Borrando historial de chamadas…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Teléfono"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Chamada perdida"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Chamada de traballo perdida"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Chamadas perdidas"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas perdidas"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Devolver chamada"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mensaxe"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> correos de voz </item>
+      <item quantity="one">Correo de voz</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Novo correo de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Non se puido reproducir o correo de voz"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Cargando correo de voz…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Non se puido cargar o correo de voz"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Só chamadas con correo de voz"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Só chamadas entrantes"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Só chamadas saíntes"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Só chamadas perdidas"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Correo de voz visual"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Consulta e escoita o teu correo de voz sen ter que chamar a un número. É posible que se apliquen tarifas de datos."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Configuración"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Actualizacións de correo de voz non dispoñibles"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Novo correo de voz en espera. Non se pode cargar neste momento."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configura o teu correo de voz"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio non dispoñible"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Chamar correo de voz"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Escoller número"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Escoller número"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Lembrar esta opción"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"buscar"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"marcar"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"número que se vai marcar"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Reproducir ou deter a reprodución"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Activar ou desactivar o altofalante"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Buscar posición de reprodución"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Reducir a velocidade da reprodución"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Aumentar a velocidade de reprodución"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historial de chamadas"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Máis opcións"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"teclado de marcación"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar só as saíntes"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar só as entrantes"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar só as perdidas"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar só os correos de voz"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Engadir pausa de 2 segundos"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Engadir espera"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Configuración"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Contacto novo"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Todos os contactos"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detalles da chamada"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detalles non dispoñibles"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usar teclado de tons táctiles"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Volver á chamada en curso"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Engadir chamada"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Chamada entrante"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Chamada saínte"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Chamada perdida"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Videochamada entrante"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Videochamada saínte"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Videochamada perdida"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Correo de voz"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Chamada rexeitada"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Chamada bloqueada"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Chamadas entrantes"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Reproducir correo de voz"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Ver contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Chamar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Detalles de contacto de <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> chamadas"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videochamada"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Envía unha SMS a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Correo de voz sen escoitar"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar busca por voz"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Chamar ao <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Descoñecidos"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Correo de voz"</string>
+    <string name="private_num" msgid="6374339738119166953">"Número privado"</string>
+    <string name="payphone" msgid="7726415831153618726">"Teléfono público"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> ás <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Non é posible chamar a este número"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar o correo de voz, vai a Menú &gt; Configuración."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para chamar ao correo de voz, primeiro desactiva o modo avión."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Cargando..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Cargando da tarxeta SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contactos da tarxeta SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Non hai aplicacións de contactos dispoñibles"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Busca de voz non dispoñible"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Non se pode facer unha chamada telefónica porque se desactivou a aplicación de teléfono."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Non hai ningunha aplicación para esa acción neste dispositivo"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Buscar contactos"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Engade número/busca contactos"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"O teu historial de chamadas está baleiro"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Facer unha chamada"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Non tes chamadas perdidas."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"A caixa de entrada do correo de voz está baleira."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Mostrar só os favoritos"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Historial de chamadas"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Todos"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Perdidas"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Correo de voz"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Queres bloquear o <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Bloquearanse as chamadas deste número e eliminaranse automaticamente os correos de voz."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Bloquearanse as chamadas deste número, pero é posible que o emisor da chamada aínda poida deixarche correos de voz."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOQUEAR"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Queres desbloquear o <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"As chamadas desde este número xa non estarán bloqueadas."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DESBLOQUEAR"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Marcación rápida"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Historial de chamadas"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contactos"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Correo de voz"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Eliminado dos favoritos"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfacer"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Chamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crear novo contacto"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Engadir a un contacto"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Realizar unha videochamada"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloquear número"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> chamadas perdidas novas"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Aínda non tes ningún contacto na marcación directa"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Engade un favorito para a marcación directa"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Aínda non tes contactos"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Engade un contacto"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Toca a imaxe para ver todos os números ou mantena premida para reordenala"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Eliminar"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videochamada"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Enviar unha mensaxe"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detalles da chamada"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Chamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Chamada perdida desde <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Chamada respondida desde <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Correo de voz non lido de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Correo de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Chamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"en <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Chamar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Chamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videochamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Escoitar o correo de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Reproducir correo de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pausar correo de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Eliminar correo de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> correos de voz novos</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> correo de voz novo</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Crear contacto para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Engadir <xliff:g id="NAMEORNUMBER">^1</xliff:g> ao contacto existente"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detalles da chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Eliminouse do historial de chamadas"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Hoxe"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Onte"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Anteriores"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista de chamadas"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Activar o altofalante."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Desactivar o altofalante."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Reproducir máis rápido."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Reproducir máis lento."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar ou pausar a reprodución."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opcións de visualización"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibración"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilidade"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Ton de chamada do teléfono"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar tamén nas chamadas"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons do teclado de marcación"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duración do ton do teclado de marcación"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Longa"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Bloqueo de chamadas"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"O bloqueo de chamadas desactivouse temporalmente"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"O bloqueo de chamadas desactivouse porque contactaches cos servizos de emerxencias desde este teléfono nas últimas 48 horas. Volverase activar automaticamente unha vez que pase o período de 48 horas."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importar números"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Previamente marcaches algúns emisores da chamada para que se envíen automaticamente ao correo de voz a través doutras aplicacións."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Ver números"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importar"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Produciuse un erro na importación"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Desbloquear número"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Engadir número"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Bloquearanse as chamadas destes números e eliminaranse automaticamente os correos de voz."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Bloquearanse as chamadas destes números, pero é posible que aínda poidan deixarche correos de voz."</string>
+    <string name="block_list" msgid="7760188925338078011">"Números bloqueados"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"O <xliff:g id="NUMBER">%1$s</xliff:g> non e válido."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"O <xliff:g id="NUMBER">%1$s</xliff:g> xa está bloqueado."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Desactivouse o bloqueo de chamadas durante 48 horas"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Desactivouse porque se realizou unha chamada de emerxencia."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Activar"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Establecer permisos"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Para activar a marcación rápida, activa o permiso de Contactos."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Para ver o teu rexistro de chamadas, activa o permiso de Teléfono."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Para ver os teus contactos, activa o permiso de Contactos."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Para acceder ao correo de voz, activa o permiso de Teléfono."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Para buscar os teus contactos, activa os permisos de Contactos."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Para facer unha chamada, activa o permiso de Teléfono."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"A aplicación Teléfono non ten permiso para modificar a configuración do sistema."</string>
+</resources>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
new file mode 100644
index 0000000..0f8e294
--- /dev/null
+++ b/res/values-gu-rIN/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ફોન"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ફોન"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ફોન ડાયલપેડ"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ફોન"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"કૉલ ઇતિહાસ"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"અચોક્કસ નંબરની જાણ કરો"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"નંબર કૉપિ કરો"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ટ્રાંસ્ક્રિપ્શન કૉપિ કરો"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"નંબર અવરોધિત કરો"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> અવરોધિત કર્યો"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"નંબર અનાવરોધિત કરો"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> અનાવરોધિત કર્યો"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"પૂર્વવત્ કરો"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"કાઢી નાખો"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"કૉલ કરતાં પહેલાં નંબર સંપાદિત કરો"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"કૉલ ઇતિહાસ સાફ કરો"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"વૉઇસમેઇલ કાઢી નાખો"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"વૉઇસમેઇલ કાઢી નાખ્યો"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"પૂર્વવત્ કરો"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"કૉલ ઇતિહાસ સાફ કરીએ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"આ તમારા ઇતિહાસમાંથી તમામ કૉલ્સ કાઢી નાખશે"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"કૉલ ઇતિહાસ સાફ કરી રહ્યાં છે…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ફોન"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"છૂટેલો કૉલ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"ચૂકી ગયેલ કાર્ય કૉલ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"છૂટેલા કૉલ્સ"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> છૂટેલા કૉલ"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"કૉલ બૅક કરો"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"સંદેશ"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> વૉઇસમેઇલ્સ </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> વૉઇસમેઇલ્સ </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ચલાવો"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> તરફથી નવો વૉઇસમેઇલ."</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"વૉઇસમેઇલ ચલાવી શકાઈ નથી"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"વૉઇસમેઇલ લોડ કરી રહ્યું છે…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"વૉઇસમેઇલ લોડ કરી શકાઈ નથી"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"ફક્ત વૉઇસમેઇલ સાથેના કૉલ્સ"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"ફક્ત ઇનકમિંગ કૉલ્સ"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"ફક્ત આઉટગોઇંગ કૉલ્સ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"ફક્ત છૂટી ગયેલ કૉલ્સ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"વિઝ્યુઅલ વૉઇસમેઇલ"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"કોઈ નંબર પર કૉલ કર્યા વગર તમારી વૉઇસમેઇલ જુઓ અને સાંભળો. ડેટા શુલ્ક લાગુ પડી શકે છે."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"સેટિંગ્સ"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"વૉઇસમેઇલ અપડેટ્સ ઉપલબ્ધ નથી"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"નવી વૉઇસમેઇલ રાહ જુએ છે. અત્યારે લોડ કરી શકતાં નથી."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"તમારા વૉઇસમેઇલને સેટ કરો"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ઑડિઓ ઉપલબ્ધ નથી"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"સેટ અપ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"વૉઇસમેઇલ પર કૉલ કરો"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"નંબર પસંદ કરો"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"નંબર પસંદ કરો"</string>
+    <string name="make_primary" msgid="5829291915305113983">"આ પસંદ યાદ રાખો"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"શોધો"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ડાયલ કરો"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ડાયલ કરવા માટેનો નંબર"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"પ્લેબેક ચલાવો અથવા રોકો"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"સ્પીકરફોન ચાલુ કે બંધ કરો"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"પ્લેબેક સ્થિતિ શોધો"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"પ્લેબેક રેટ ઘટાડો"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"પ્લેબેક રેટ વધારો"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"કૉલ ઇતિહાસ"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"વધુ વિકલ્પો"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ડાયલ પેડ"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"ફક્ત આઉટગોઇંગ બતાવો"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"ફક્ત આવનારા બતાવો"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"ફક્ત છૂટેલ બતાવો"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ફક્ત વૉઇસમેઇલ્સ બતાવો"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"તમામ કૉલ્સ બતાવો"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-સંકડનો વિરામ ઉમેરો"</string>
+    <string name="add_wait" msgid="3360818652790319634">"પ્રતીક્ષા ઉમેરો"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"સેટિંગ્સ"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"નવો સંપર્ક"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"તમામ સંપર્કો"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"કૉલની વિગતો"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"વિગતો ઉપલબ્ધ નથી"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ટચ ટોન કીપેડનો ઉપયોગ કરો"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"કૉલ પર પાછા આવવું પ્રગતિ પર છે"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"કૉલ ઉમેરો"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"આવનાર કૉલ"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"આઉટગોઇંગ કૉલ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"છૂટેલો કૉલ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"આવનાર વિડિઓ કૉલ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"આઉટગોઇંગ વિડિઓ કૉલ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"વિડિઓ કૉલ ચૂકી ગયાં"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"વૉઇસમેઇલ"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"નકારેલો કૉલ"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"અવરોધિત કૉલ"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ઇનકમિંગ કૉલ્સ"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"વૉઇસમેઇલ ચલાવો"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> સંપર્ક જુઓ"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> ને કૉલ કરો"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> માટે સંપર્ક વિગતો"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> કૉલ્સ."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"વિડિઓ કૉલ."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> ને SMS મોકલો"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"વણસાંભળેલ વૉઇસમેઇલ"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"વૉઇસ શોધ શરૂ કરો"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> ને કૉલ કરો"</string>
+    <string name="unknown" msgid="740067747858270469">"અજાણ્યાં"</string>
+    <string name="voicemail" msgid="3851469869202611441">"વૉઇસમેઇલ"</string>
+    <string name="private_num" msgid="6374339738119166953">"ખાનગી નંબર"</string>
+    <string name="payphone" msgid="7726415831153618726">"પેફોન"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> સેકંડ"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> મિ <xliff:g id="SECONDS">%s</xliff:g> સે"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> નાં રોજ <xliff:g id="TIME">%2$s</xliff:g> વાગ્યે"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"આ નંબર પર કૉલ કરી શકતાં નથી"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"વૉઇસમેઇલ સેટ કરવા માટે, મેનૂ &gt; સેટિંગ્સ પર જાઓ."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"વૉઇસમેઇલ પર કૉલ કરવા માટે, પહેલાં એરપ્લેન મોડને બંધ કરો."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"લોડ કરી રહ્યું છે..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM કાર્ડમાંથી લોડ કરી રહ્યું છે…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM કાર્ડ સંપર્કો"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"કોઈ સંપર્કો એપ્લિકેશન ઉપલબ્ધ નથી"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"વૉઇસ શોધ ઉપલબ્ધ નથી"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ફોન કૉલ કરી શકાતો નથી કારણ કે ફોન એપ્લિકેશન અક્ષમ કરવામાં આવી છે."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"આ ઉપકરણ પર તે માટે કોઈ એપ્લિકેશન નથી"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"સંપર્કો શોધો"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"નંબર ઉમેરો અથવા સંપર્કો શોધો"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"તમારો કૉલ ઇતિહાસ ખાલી છે"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"એક કૉલ કરો"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"તમારી પાસે કોઇ છૂટેલાં કૉલ્સ નથી."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"તમારું વૉઇસમેઇલ ઇનબોક્સ ખાલી છે."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"ફક્ત મનપસંદ બતાવો"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"કૉલ ઇતિહાસ"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"તમામ"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"છૂટેલ"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"વૉઇસમેઇલ"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> ને અવરોધિત કરીએ?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"આ નંબરથી આવનારા કૉલ્સ અવરોધિત કરવામાં આવશે અને વૉઇસમેઇલ્સ આપમેળે કાઢી નાખવામાં આવશે."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"આ નંબરથી આવનારા કૉલ્સ અવરોધિત કરવામાં આવશે, પરંતુ કૉલર હજી પણ તમારા માટે વૉઇસમેઇલ્સ મૂકવામાં સમર્થ હોઈ શકે છે."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"અવરોધિત કરો"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> ને અનાવરોધિત કરીએ?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"આ નંબરને હવે તમને કૉલ કરવાથી અવરોધિત કરવામાં આવશે નહીં."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"અનાવરોધિત કરો"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"સ્પીડ ડાયલ"</string>
+    <string name="tab_history" msgid="2563144697322434940">"કૉલ ઇતિહાસ"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"સંપર્કો"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"વૉઇસમેઇલ"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"મનપસંદમાંથી દૂર કર્યું"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"પૂર્વવત્ કરો"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ને કૉલ કરો"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"નવો સંપર્ક બનાવો"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"સંપર્કમાં ઉમેરો"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS મોકલો"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"વિડિઓ કૉલ કરો"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"નંબર અવરોધિત કરો"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> નવા છૂટેલા કૉલ્સ"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"તમારા ઝડપી ડાયલ પર હજી સુધી કોઇ નથી"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"એક મનપસંદ ઉમેરો"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"તમે હજી સુધી કોઇપણ સંપર્કો ધરાવતાં નથી"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"સંપર્ક ઉમેરો"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"બધા નંબર્સ જોવા માટે છબી ટેપ કરો અથવા પુનઃક્રમાંકિત કરવા માટે પકડી રાખો"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"દૂર કરો"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"વિડિઓ કૉલ"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"એક સંદેશ મોકલો"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"કૉલની વિગતો"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ને કૉલ કરો"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> નો છૂટેલ કૉલ"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> નો જવાબી કૉલ"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> તરફથી ન વાંચેલો વૉઇસમેઇલ"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> તરફથી વૉઇસમેઇલ"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> પર કૉલ."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> પર"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"કૉલ કરો"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ને કૉલ કરો"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ને વિડિઓ કૉલ કરો."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ના વૉઇસમેઇલને સાંભળો"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> માંથી વૉઇસમેઇલ ચલાવો"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> માંથી વૉઇસમેઇલ થોભાવો"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> માંથી વૉઇસમેઇલ કાઢી નાખો"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> નવી વૉઇસમેઇલ્સ</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> નવી વૉઇસમેઇલ્સ</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> માટે સંપર્ક બનાવો"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ને અસ્તિત્વમાંના સંપર્કમાં ઉમેરો"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> માટે કૉલ વિગતો"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"કૉલ ઇતિહાસમાંથી કાઢી નાખી"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"આજે"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ગઈ કાલે"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"જૂનું"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"કૉલ્સની સૂચિ"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"સ્પીકર ચાલુ કરો."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"સ્પીકર બંધ કરો."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"વધુ ઝડપથી ચલાવો."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"વધુ ધીરેથી ચલાવો."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"પ્લેબેક ચલાવો અથવા થોભાવો"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"પ્રદર્શન વિકલ્પો"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ધ્વનિ અને વાઇબ્રેશન"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ઍક્સેસિબિલિટી"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ફોન રિંગટોન"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"કૉલ્સ માટે વાઇબ્રેટ પણ કરો"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ડાયલપેડ ટોન્સ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad ટોનની લંબાઈ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"સામાન્ય"</item>
+    <item msgid="6177579030803486015">"લાંબુ"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ઝડપી પ્રતિસાદ"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"કૉલ્સ"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"કૉલ અવરોધ"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"કૉલ અવરોધિત કરવાનું અસ્થાયીરૂપે બંધ છે"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"કૉલ અવરોધિત કરવાનું અક્ષમ કરવામાં આવ્યું છે કારણ કે તમે આ ફોનમાંથી છેલ્લા 48 કલાકમાં કટોકટીની સેવાઓનો સંપર્ક કર્યો હતો. એકવાર 48 કલાકનો સમયગાળો સમાપ્ત થાય, પછી તે આપમેળે ફરીથી સક્ષમ કરવામાં આવશે."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"નંબર્સ આયાત કરો"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"તમે પહેલાં કેટલાક કૉલર્સને અન્ય ઍપ્લિકેશનો મારફતે વૉઇસમેઇલ પર આપમેળે મોકલવા માટે ચિહ્નિત કર્યા."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"સંખ્યા જુઓ"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"આયાત કરો"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"આયાત નિષ્ફળ થયું"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"નંબર અનાવરોધિત કરો"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"નંબર ઉમેરો"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"આ નંબરથી આવનારા કૉલ્સ અવરોધિત કરવામાં આવશે અને વૉઇસમેઇલ્સ આપમેળે કાઢી નાખવામાં આવશે."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"આ નંબરથી આવનારા કૉલ્સ અવરોધિત કરવામાં આવશે, પરંતુ તેઓ હજી પણ તમારા માટે વૉઇસમેઇલ્સ મૂકવામાં સમર્થ હોઈ શકે છે."</string>
+    <string name="block_list" msgid="7760188925338078011">"અવરોધિત નંબરો"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> અમાન્ય છે."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ને પહેલેથી અવરોધિત કરવામાં આવ્યો છે."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"કૉલ અવરોધિત કરવાનું 48 કલાક માટે અક્ષમ કરાયું"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"અક્ષમ કરાયું કારણ કે એક કટોકટીનો કૉલ કરવામાં આવ્યો હતો."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"કૉલિંગ એકાઉન્ટ્સ"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ચાલુ કરો"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"પરવાનગીઓ સેટ કરો"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"ઝડપી ડાયલ સક્ષમ કરવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"તમારો કૉલ લૉગ જોવા માટે, ફોન પરવાનગી ચાલુ કરો."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"તમારા સંપર્કો જોવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"તમારી વૉઇસમેઇલને ઍક્સેસ કરવા માટે, ફોન પરવાનગી ચાલુ કરો."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"તમારા સંપર્કો શોધવા માટે, સંપર્કોની પરવાનગીઓ ચાલુ કરો."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"કૉલ કરવા માટે, ફોન પરવાનગી ચાલુ કરો."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ફોન એપ્લિકેશનને સિસ્ટમ સેટિંગ્સ પર લખવાની પરવાનગી નથી."</string>
+</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
new file mode 100644
index 0000000..bf2a9cb
--- /dev/null
+++ b/res/values-hi/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"फ़ोन"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"फ़ोन"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"फ़ोन डायलपैड"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"फ़ोन"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"कॉल इतिहास"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"गलत नंबर की रिपोर्ट करें"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"नंबर कॉपी करें"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ट्रांसक्रिप्शन को कॉपी करें"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"नंबर अवरुद्ध करें"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> अवरोधित किया गया"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"नंबर अनवरोधित करें"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> अनवरोधित किया गया"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"वापस लाएं"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"हटाएं"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"कॉल करने से पहले नंबर संपादित करें"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"कॉल इतिहास साफ़ करें"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"वॉइसमेल हटाएं"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"वॉइसमेल हटाया गया"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"वापस लाएं"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"कॉल इतिहास साफ़ करें?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"इससे आपके इतिहास से सभी कॉल हटा दिए जाएंगे"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"कॉल इतिहास साफ़ किया जा रहा है…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"फ़ोन"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"छूटा कॉल"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"कार्यस्थल का छूटा हुआ कॉल"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"छूटे कॉल"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> छूटे कॉल"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"वापस कॉल करें"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"संदेश"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> वॉइसमेल </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> वॉइसमेल </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"चलाएं"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> की ओर से नया ध्‍वनिमेल"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"वॉइसमेल नहीं चलाया जा सका"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"वॉइसमेल लोड हो रहा है…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"वॉइसमेल लोड नहीं किया जा सका"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"केवल वॉयस मेल वाले कॉल"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"केवल इनकमिंग कॉल"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"केवल आउटगोइंग कॉल"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"केवल छूटे कॉल"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"विज़ुअल वॉइसमेल"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"किसी नंबर पर कॉल करने की आवश्‍यकता के बिना, अपना वॉइसमेल देखें और सुनें. डेटा शुल्‍क लागू हो सकते हैं."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"सेटिंग"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"वॉइसमेल अपडेट उपलब्‍ध नहीं हैं"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"नया वॉइसमेल प्रतीक्षा में है. इस समय लोड नहीं किया जा सकता."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"अपना वॉइसमेल सेट करें"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ऑडियो उपलब्‍ध नहीं है"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"सेट करें"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"वॉयस मेल कॉल करें"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"नंबर चुनें"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"नंबर चुनें"</string>
+    <string name="make_primary" msgid="5829291915305113983">"यह विकल्प याद रखें"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"खोजें"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"डायल करें"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"डायल करने के लिए नंबर"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"प्लेबैक चलाएं या बंद करें"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"स्पीकरफ़ोन को चालू या बंद पर स्विच करें"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"प्लेबैक स्थिति का पता लगाएं"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"प्लेबैक दर घटाएं"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"प्लेबैक दर बढ़ाएं"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"कॉल इतिहास"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"अधिक विकल्प"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"डायलपैड"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"केवल आउटगोइंग ही दिखाएं"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"केवल इनकमिंग ही दिखाएं"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"केवल छूटे हुए ही दिखाएं"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"केवल ध्‍वनि‍मेल दि‍खाएं"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"सभी कॉल दि‍खाएं"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-सेकंड का विराम जोड़ें"</string>
+    <string name="add_wait" msgid="3360818652790319634">"प्रतीक्षा का समय बढ़ाएं"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"सेटिंग"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"नया संपर्क"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"सभी संपर्क"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"कॉल विवरण"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"विवरण उपलब्‍ध नहीं है"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"टच टोन कीपैड का उपयोग करें"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"कॉल पर लौटना प्रगति पर है"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"कॉल जोड़ें"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"इनकमिंग कॉल"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"आउटगोइंग कॉल"</string>
+    <string name="type_missed" msgid="2720502601640509542">"छूटी कॉल"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"इनकमिंग वीडियो कॉल"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"जावक वीडियो कॉल"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"छूटे वीडियो कॉल"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"वॉयस मेल"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"अस्वीकृत किया गया कॉल"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"अवरुद्ध किए गए कॉल"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"इनकमिंग कॉल"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"ध्‍वनिमेल चलाएं"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> संपर्क देखें"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> को कॉल करें"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> का संपर्क विवरण"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> कॉल."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"वीडियो कॉल."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> को SMS भेजें"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"नहीं सुना गया वॉयस मेल"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"बोलकर खोजें शुरु करें"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें"</string>
+    <string name="unknown" msgid="740067747858270469">"अज्ञात"</string>
+    <string name="voicemail" msgid="3851469869202611441">"वॉयस मेल"</string>
+    <string name="private_num" msgid="6374339738119166953">"निजी नंबर"</string>
+    <string name="payphone" msgid="7726415831153618726">"पे-फ़ोन"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> सेकंड"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> मि. <xliff:g id="SECONDS">%s</xliff:g> से."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> को <xliff:g id="TIME">%2$s</xliff:g> बजे"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"इस नंबर पर कॉल नहीं किया जा सकता"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ध्‍वनिमेल सेट करने के लिए, मेनू &gt; सेटिंग पर जाएं."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"ध्‍वनिमेल कॉल करने के लिए, पहले हवाई जहाज़ मोड बंद करें."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"लोड हो रही है..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"सिम कार्ड से लोड हो रहा है…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"सिम कार्ड के संपर्क"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"कोई भी संपर्क ऐप उपलब्‍ध नहीं है"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"बोलकर खोजना उपलब्‍ध नहीं है"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"फ़ोन कॉल नहीं किया जा सकता क्योंकि फ़ोन ऐप्लिकेशन अक्षम कर दिया गया है."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"उसके लिए इस डिवाइस पर कोई एेप नहीं है"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"संपर्क खोजें"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"नंबर जोड़ें या संपर्क खोजें"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"आपका कॉल इतिहास खाली है"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"कॉल करें"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"आपके पास कोई भी छूटा हुआ कॉल नहीं है."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"आपका वॉइसमेल इनबाॅक्‍स खाली है."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"केवल पसंदीदा दिखाएं"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"कॉल इतिहास"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"सभी"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"छूटे हुए"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"वॉयस मेल"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> को अवरुद्ध करें?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"इस नंबर से आने वाले कॉल अवरुद्ध कर दिए जाएंगे और वॉइसमेल अपने आप हटा दिए जाएंगे."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"इस नंबर से आने वाले कॉल अवरुद्ध कर दिए जाएंगे, लेकिन कॉलर अब भी आपके लिए वॉइसमेल भेज सकेंगे."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"अवरुद्ध करें"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> को अनवरोधित करें?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"इस नंबर को अब आपको कॉल करने से अवरुद्ध नहीं किया जाएगा."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"अनवरोधित करें"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"स्पीड डायल"</string>
+    <string name="tab_history" msgid="2563144697322434940">"कॉल इतिहास"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"संपर्क"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"वॉइसमेल"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"पसंदीदा से निकाल दिया गया"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"वापस लाएं"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"नया संपर्क बनाएं"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"किसी संपर्क में जोड़ें"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS भेजें"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"वीडियो कॉल करें"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"नंबर अवरुद्ध करें"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>  छूटे हुए नए कॉल"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"आपके स्‍पीड डायल पर अभी तक कोई भी नहीं है"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"कोई पसंदीदा जोड़ें"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"आपके पास अभी कोई भी संपर्क नहीं है"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"कोई संपर्क जोड़ें"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"सभी नंबर देखने के लिए चित्र को स्‍पर्श करें या पुन: क्रमित करने के लिए स्‍पर्श करके रखें"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"निकालें"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"वीडियो कॉल"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"संदेश भेजें"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"कॉल विवरण"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> को कॉल करें"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> से छूटा हुआ कॉल."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> से आए कॉल का उत्तर दिया गया."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> के अपठित वॉइसमेल."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> के वॉइसमेल."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> पर किया गया कॉल."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> पर"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"कॉल करें"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> को कॉल करें"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> को वीडियो कॉल करें."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> की वॉयस मेल सुनें"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> का वॉइसमेल चलाएं"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> का वॉइसमेल रोकें"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> का वॉइसमेल हटाएं"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> नए वॉइसमेल</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> नए वॉइसमेल</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> के लिए संपर्क बनाएं"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> को मौजूदा संपर्क में जोड़ें"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> के कॉल विवरण"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"कॉल इतिहास से हटाएं"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"आज"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"कल"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"पुराना"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"कॉल की सूची"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"स्पीकर चालू करें."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"स्पीकर बंद करें."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"तेज़ी से चलाएं."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"धीरे चलाएं."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"प्लेबैक प्रारंभ करें या रोकें."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"प्रदर्शन विकल्प"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ध्‍वनि और कंपन"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"सरल उपयोग"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"फ़ोन रिंगटोन"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"कॉल के लिए भी कंपन"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"डायलपैड टोन"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"डायलपैड टोन की अवधि"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"सामान्य"</item>
+    <item msgid="6177579030803486015">"लंबी"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"झटपट उत्तर"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"कॉल"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"कॉल अवरुद्ध करें"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"कॉल अवरुद्ध करना अस्‍थायी रूप से बंद है"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"कॉल अवरुद्ध किए जाने को अक्षम कर दिया गया है क्योंकि पिछले 48 घंटों में आपने इस फ़ोन से आपातकालीन सेवाओं से संपर्क किया है. 48 घंटे की अवधि बीत जाने पर यह अपने आप फिर से सक्षम हो जाएगी."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"नंबर आयात करें"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"आपने पहले कुछ कॉलर को अपने आप अन्य ऐप्स के द्वारा वॉइसमेल भेजे जाने के लिए चिह्नित किया था."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"नंबर देखें"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"आयात करें"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"आयात करना विफल रहा"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"नंबर अनवरोधित करें"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"नंबर जोड़ें"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"इन नंबर से आने वाले कॉल अवरुद्ध कर दिए जाएंगे और वॉइसमेल अपने आप हटा दिए जाएंगे."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"इन नंबर से आने वाले कॉल अवरुद्ध कर दिए जाएंगे, लेकिन वे अब भी आपके लिए वॉइसमेल भेज  सकेंगे."</string>
+    <string name="block_list" msgid="7760188925338078011">"अवरोधित नंबर"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> अमान्य है."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> पहले से अवरोधित है."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"कॉल अवरुद्ध करना 48 घंटे के लिए अक्षम कर दिया गया"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"आपातकालीन कॉल किए जाने के कारण अक्षम कर दिया गया."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"कॉलिंग खाते"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"चालू करें"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"अनुमतियां सेट करें"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"स्पीड डायल सक्षम करने के लिए, संपर्क अनुमति चालू करें."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"अपना कॉल लॉग देखने के लिए, फ़ोन अनुमति चालू करें."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"अपने संपर्क देखने के लिए, संपर्क अनुमति चालू करें."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"अपना वॉइसमेल ऐक्सेस करने के लिए, फ़ोन अनुमति चालू करें."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"अपने संपर्कों की खोज करने के लिए, संपर्क अनुमतियों को चालू करें."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"कॉल करने के लिए, फ़ोन अनुमति चालू करें."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"फ़ोन ऐप को सिस्टम सेटिंग में लिखने की अनुमति नहीं है."</string>
+</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
new file mode 100644
index 0000000..123d3ce
--- /dev/null
+++ b/res/values-hr/strings.xml
@@ -0,0 +1,257 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Numerička tipkovnica telefona"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Povijest poziva"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Prijavi netočan broj"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopiraj broj"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopiraj prijepis"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokiraj broj"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> blokiran"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Deblokiraj broj"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> deblokiran"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"PONIŠTI"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Izbriši"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Uredi broj prije pozivanja"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Izbriši povijest poziva"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Izbriši govornu poštu"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Gov. pošta izbrisana"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"PONIŠTI"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Želite li izbrisati povijest poziva?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Izbrisat će se svi pozivi iz vaše povijesti"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Brisanje povijesti poziva…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Propušteni poziv"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Propušten poslovni poziv"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Propušteni pozivi"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Propušteni pozivi (<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>)"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Uzvrati poziv"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Poruka"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> poruka govorne pošte </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> poruke govorne pošte </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> poruka govorne pošte </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduciraj"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova govorna pošta od kontakta <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Nije moguće reproducirati govornu poštu"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Učitavanje govorne pošte…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Govorna pošta nije učitana"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Samo pozivi s govornom poštom"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Samo dolazni pozivi"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Samo odlazni pozivi"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Samo propušteni pozivi"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vizualna govorna pošta"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Pogledajte i poslušajte govornu poštu bez pozivanja broja. Možda se naplaćuje podatkovna usluga."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Postavke"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Ažuriranja govorne pošte nisu dostupna"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Nova govorna pošta na čekanju. Učitavanje zasad nije moguće."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Postavite govornu poštu"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Zvuk nije dostupan"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Postavljanje"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Zovi govornu poštu"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Odaberite broj"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Odaberite broj"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Zapamti ovaj izbor"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"pretraži"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"biraj"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"broj za pozivanje"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Pokretanje ili zaustavljanje reprodukcije"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Uključivanje ili isključivanje zvučnika"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Traženje položaja reprodukcije"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Smanjenje brzine reprodukcije"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Povećanje brzine reprodukcije"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Povijest poziva"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Više opcija"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"površina za biranje brojeva"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Prikaži samo odlazne"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Prikaži samo dolazne"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Prikaži samo propuštene"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Prikaži samo govorne pošte"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Prikaz svih poziva"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj pauzu od 2 sek."</string>
+    <string name="add_wait" msgid="3360818652790319634">"Dodaj čekanje"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Postavke"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Novi kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Svi kontakti"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Pojedinosti poziva"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Pojedinosti nisu dostupne"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Koristi dodirnu zvučnu tipkovnicu"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Natrag na poziv u tijeku"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Dodaj poziv"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Dolazni poziv"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Odlazni poziv"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Propušteni poziv"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Dolazni videopoziv"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Odlazni videopoziv"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Propušten videopoziv"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Govorna pošta"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Odbijeni poziv"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blokirani poziv"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Dolazni pozivi"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Reprodukcija govorne pošte"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Prikaz kontakta <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Pozovi: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Pojedinosti o kontaktu <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"Broj poziva: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videopoziv."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Slanje SMS-a kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nepreslušana govorna pošta"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Pokretanje glasovnog pretraživanja"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Nazovite <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Nepoznato"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Govorna pošta"</string>
+    <string name="private_num" msgid="6374339738119166953">"Privatni broj"</string>
+    <string name="payphone" msgid="7726415831153618726">"Javna telefonska govornica"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> u <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Nije moguće nazvati taj broj"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Da biste postavili govornu poštu, idite na Izbornik &gt; Postavke."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Da biste nazvali govornu poštu, najprije isključite način rada u zrakoplovu."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Učitavanje..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Učitavanje sa SIM kartice..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontakti SIM kartice"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nije dostupna nijedna aplikacija za kontakte"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Glasovno pretraživanje nije dostupno"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Telefoniranje nije moguće jer je aplikacija Telefon onemogućena."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Na ovom uređaju nema aplikacije za to"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Pretražite kontakte"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Dodaj broj ili potraži kontakt"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Vaša je povijest poziva prazna"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Uputite poziv"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nemate propuštene pozive."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Nemate pristiglih poruka govorne pošte."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Prikaži samo favorite"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Povijest poziva"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Sve"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Propušteni"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Gov. pošta"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Želite li blokirati <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Pozivi s tog broja blokirat će se, a govorna pošta automatski će se brisati."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Pozivi s tog broja blokirat će se, ali pozivatelj će vam moći ostavljati govornu poštu."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKIRAJ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Želite li deblokirati <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Pozivi koji su vam upućeni s tog broja više se neće blokirati."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DEBLOKIRAJ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Brzo biranje"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Povijest poziva"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontakti"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Govorna pošta"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Uklonjeno iz favorita"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Poništi"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Nazovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Izrada novog kontakta"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Dodaj kontaktu"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Pošalji SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uputite videopoziv"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokiraj broj"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Broj novih propuštenih poziva: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Još nemate nikog na brzom biranju"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Dodaj favorit"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Još nemate nijedan kontakt"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Dodajte kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Dodirnite sliku da biste vidjeli sve brojeve ili dodirnite i zadržite da biste promijenili raspored"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Ukloni"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videopoziv"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Pošalji poruku"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Pojedinosti poziva"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Nazovi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Propušten poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Prihvaćen poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Nepročitana govorna pošta kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Govorna pošta kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"na <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Poziv"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Pozovi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videopoziv <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Slušanje govorne pošte kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Reproduciranje govorne pošte od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pauziranje govorne pošte od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Brisanje govorne pošte od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> nova govorna pošta</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nove govorne pošte</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> novih govornih pošta</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Izrada kontakta za <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Dodavanje kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g> postojećem kontaktu"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Pojedinosti o pozivu za kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Izbrisano iz povijesti poziva"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Danas"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Jučer"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Stariji"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Popis poziva"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Uključivanje zvučnika."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Isključivanje zvučnika."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Brža reprodukcija."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Sporija reprodukcija."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Pokretanje ili pauziranje reprodukcije."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opcije prikaza"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvukovi i vibracije"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Pristupačnost"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Melodija zvona telefona"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibracija i za pozive"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonovi biranja brojeva"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duljina zvuka tipkovnice"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Uobičajena"</item>
+    <item msgid="6177579030803486015">"Duga"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Brzi odgovori"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Pozivi"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blokiranje poziva"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blokiranje poziva privremeno isključeno"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Blokiranje poziva onemogućeno je jer ste kontaktirali hitne službe s ovog telefona u posljednjih 48 sati. Automatski će se ponovo omogućiti kada prođe 48 sati."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Uvoz brojeva"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Ranije ste na drugim aplikacijama naveli da se neki pozivatelji automatski šalju na govornu poštu."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Prikaži brojeve"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Uvezi"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Uvoz nije uspio"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Deblokiranje broja"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Dodaj broj"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Pozivi s tih brojeva blokirat će se, a govorna pošta automatski će se brisati."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Pozivi s tih brojeva blokirat će se, ali pozivatelji će vam moći ostavljati govornu poštu."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blokirani brojevi"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Broj <xliff:g id="NUMBER">%1$s</xliff:g> nije važeći."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Broj <xliff:g id="NUMBER">%1$s</xliff:g> već je blokiran."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Blokiranje poziva onemogućeno je na 48 sati"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Onemogućeno jer je upućen hitni poziv."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Pozivanje računa"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Uključi"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Postavi dopuštenja"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Da biste omogućili brzo biranje, uključite dopuštenje za kontakte."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Da biste vidjeli zapisnik poziva, uključite dopuštenje za telefon."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Da biste vidjeli svoje kontakte, uključite dopuštenje za kontakte."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Da biste pristupili govornoj pošti, uključite dopuštenje za telefon."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Da biste pretraživali kontakte, uključite dopuštenja za kontakte."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Da biste nazvali nekog, uključite dopuštenje za telefon."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacija Telefon nema dopuštenje za pisanje u postavke sustava."</string>
+</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
new file mode 100644
index 0000000..d574255
--- /dev/null
+++ b/res/values-hu/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefon tárcsázója"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Híváslista"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Pontatlan szám jelentése"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Szám másolása"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Átírás másolása"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Szám tiltása"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"A következő szám letiltva: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Szám tiltásának feloldása"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"A következő szám tiltása feloldva: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"VISSZAVONÁS"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Törlés"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Szám szerkesztése hívás előtt"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"A híváslista törlése"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Hangposta törlése"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Hangposta törölve"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"VISSZAVONÁS"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Törli a híváslistát?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ezzel törli az összes hívást az előzmények közül"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Híváslista törlése…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefonhívás"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Elmulasztott hívás"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Nem fogadott munkahelyi hívás"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Elmulasztott hívások"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> elmulasztott hívás"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Visszahívás"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Üzenet"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> hangpostaüzenet </item>
+      <item quantity="one">Hangpostaüzenet</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lejátszás"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Új hangüzenet tőle: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Nem sikerült lejátszani a hangpostát"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Hangposta betöltése…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Nem sikerült betölteni a hangpostát"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Csak hangpostahívások"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Csak bejövő hívások"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Csak kimenő hívások"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Csak nem fogadott hívások"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vizuális hangpostaüzenet"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Telefonálás nélkül tekintheti meg és hallgathatja vissza hangpostafiókja tartalmát. A művelet adatforgalmi díjakkal járhat."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Beállítások"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Nem érhetők el hangpostafrissítések"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Új hangpostaüzenet várakozik; jelenleg nem lehet betölteni."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Állítsa be hangpostáját"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Nem áll rendelkezésre hang"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Beállítás"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Hangposta hívása"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Válassza ki a számot"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Válassza ki a számot"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Választás megjegyzése"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"keresés"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"tárcsázás"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"a tárcsázandó szám"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Lejátszás indítása vagy leállítása"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Kihangosító be- vagy kikapcsolása"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Lejátszási pozíció módosítása"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Lejátszás sebességének csökkentése"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Lejátszás sebességének növelése"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Hívási előzmények"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"További beállítások"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"tárcsázó"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Csak a kimenők megjelenítése"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Csak a bejövők megjelenítése"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Csak a nem fogadottak"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Csak a hangüzenetek"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Összes hívás megjelenítése"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2 mp-es szünet hozzáadása"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Várakozás hozzáadása"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Beállítások"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Új névjegy"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Összes névjegy"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Hívás adatai"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Nem érhetők el a részletek"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Hangkódos telefonbillentyűzet használata"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Vissza a folyamatban lévő híváshoz"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Hívás hozzáadása"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Bejövő hívás"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Kimenő hívás"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Nem fogadott hívás"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Bejövő videohívás"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Kimenő videohívás"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Nem fogadott videohívás"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Hangposta"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Elutasított hívás"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Letiltott hívás"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Bejövő hívások"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Hangposta lejátszása"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> névjegyének megtekintése"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> hívása"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> részletes adatai."</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> hívás"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videohívás."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"SMS küldése <xliff:g id="NAME">%1$s</xliff:g> részére"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nem lejátszott hangüzenet"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Hangalapú keresés indítása"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Hívás: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Ismeretlen"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Hangposta"</string>
+    <string name="private_num" msgid="6374339738119166953">"Magántelefonszám"</string>
+    <string name="payphone" msgid="7726415831153618726">"Nyilvános telefon"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> másodperc"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> perc <xliff:g id="SECONDS">%s</xliff:g> másodperc"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Nem lehet felhívni ezt a számot"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"A hangposta beállításához válassza a Menü &gt; Beállítások pontot."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Hangposta hívásához kapcsolja ki a Repülőgép üzemmódot."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Betöltés..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Betöltés a SIM kártyáról..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Névjegyek a SIM kártyán"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nincs elérhető névjegyek alkalmazás"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"A hangalapú keresés nem érhető el"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Nem lehet telefonhívást kezdeményezni, mert a Telefon alkalmazást letiltották."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Nincs megfelelő alkalmazás a művelethez ezen az eszközön"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Névjegyek keresése"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Adjon meg egy számot, vagy keressen a névjegyek között"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"A híváslista üres"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Hívásindítás"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nincsenek nem fogadott hívások."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Hangpostafiókjában nincsenek beérkezett üzenetek."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Csak kedvencek megjelenítése"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Híváslista"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Összes"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Nem fogadott"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Hangposta"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Letiltja a következő számot: <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Az erről a számról érkező hívásokat a rendszer letiltja, továbbá automatikusan törli az onnan érkező hangpostaüzeneteket is."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Az erről a számról érkező hívásokat letiltja a rendszer, azonban a hívó fél továbbra is hagyhat hangpostaüzeneteket."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"LETILTÁS"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Feloldja a következő szám tiltását: <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Ez a szám többé nem lesz letiltva, így hívás érkezhet róla."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"TILTÁS FELOLDÁSA"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Gyorshívó"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Híváslista"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Címtár"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Hangposta"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Eltávolítva a kedvencek közül"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Visszavonás"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Hívás: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Új névjegy létrehozása"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Hozzáadás névjegyhez"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS küldése"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videohívás kezdeményezése"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Szám tiltása"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> új nem fogadott hívás"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Még semelyik telefonszám sincs gyorshívón"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Kedvenc hozzáadása"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Még nem rendelkezik egyetlen névjeggyel sem"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Névjegy hozzáadása"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Érintse meg a képet az összes szám megjelenítéséhez, vagy tartsa nyomva az átrendezéshez"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Eltávolítás"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videohívás"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Üzenet küldése"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Hívás adatai"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> hívása"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Elmulasztott hívás: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Fogadott hívás: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Olvasatlan hangpostaüzenet a következőtől: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Hangpostaüzenet a következőtől: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Kimenő hívás: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telefonhívás"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> hívása"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"A következő hívása videokapcsolattal: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> hangpostaüzenetének meghallgatása"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Hangposta lejátszása a következőnél: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Hangposta szüneteltetése a következőnél: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Hangposta törlése a következőnél: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> új hangpostaüzenet</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> új hangpostaüzenet</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Névjegy létrehozása a következőhöz: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"A(z) <xliff:g id="NAMEORNUMBER">^1</xliff:g> hozzáadása meglévő névjegyhez"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> – hívásrészletek"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Törölve a híváslistáról"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Ma"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Tegnap"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Korábbi"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Híváslista"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Hangszóró bekapcsolása."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Hangszóró kikapcsolása."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Gyorsabb lejátszás."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Lassabb lejátszás."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Lejátszás indítása vagy szüneteltetése."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Megjelenítési beállítások"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Hangok és rezgés"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Kisegítő lehetőségek"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Telefon csengőhangja"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"A hívásoknál rezegjen is"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tárcsázó hangjai"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tárcsázási hang hossza"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normál"</item>
+    <item msgid="6177579030803486015">"Hosszú"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Gyors válaszok"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Hívások"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Hívásletiltás"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Hívástiltás átmenetileg felfüggesztve"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Felfüggesztettük a hívások tiltását, mert az elmúlt 48 órában tárcsázta a segélyhívót erről a telefonról. A funkciót automatikusan újból engedélyezzük 48 óra elteltével."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Számok importálása"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Más alkalmazásokban korábban beállította, hogy bizonyos személyeket automatikusan a hangpostafiókba irányítsa a rendszer, amikor felhívják Önt."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Számok megtekintése"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importálás"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Az importálás nem sikerült"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Szám tiltásának feloldása"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Szám hozzáadása"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Az ezekről a számokról érkező hívásokat a rendszer letiltja, továbbá automatikusan törli az onnan érkező hangpostaüzeneteket is."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Az ezekről a számokról érkező hívásokat letiltja a rendszer, azonban a hívó felek továbbra is hagyhatnak hangpostaüzeneteket."</string>
+    <string name="block_list" msgid="7760188925338078011">"Letiltott számok"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"A(z) <xliff:g id="NUMBER">%1$s</xliff:g> érvénytelen."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"A következő szám már le van tiltva: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"A hívások tiltása funkció kikapcsolva 48 órára"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Letiltva vészhívás miatt."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Telefonos fiókok"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Engedélyezés"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Engedélyek beállítása"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Gyorshívás engedélyezéséhez kapcsolja be a Névjegyek engedélyt."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"A hívásnapló megtekintéséhez kapcsolja be a Telefon engedélyt."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"A névjegyek megtekintéséhez kapcsolja be a Névjegyek engedélyt."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"A hangposta eléréséhez kapcsolja be a Telefon engedélyt."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"A névjegyek kereséséhez adja meg a Névjegyek engedélyeket."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Hívásindításhoz kapcsolja be a Telefon engedélyt."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"A Telefon alkalmazásnak nincs engedélye szerkeszteni a rendszerbeállításokat."</string>
+</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
new file mode 100644
index 0000000..1027c20
--- /dev/null
+++ b/res/values-hy-rAM/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Հեռախոս"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Հեռախոս"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Հեռախոսի թվաշար"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Հեռախոս"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Զանգերի պատմությունը"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Հաղորդել սխալ համարի մասին"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Պատճենել համարը"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Պատճենել տառադարձությունը"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Արգելափակել համարը"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Արգելափակվել է <xliff:g id="NUMBER">%1$s</xliff:g> համար"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Արգելաբացել համարը"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Արգելաբացվել է <xliff:g id="NUMBER">%1$s</xliff:g> համար"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ՀԵՏԱՐԿԵԼ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Ջնջել"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Խմբագրել համարը զանգելուց առաջ"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Ջնջել զանգերի պատմությունը"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ջնջել ձայնային փոստը"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ձայնային փոստը ջնջվեց"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ՀԵՏԱՐԿԵԼ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Մաքրե՞լ զանգերի պատմությունը:"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Այս գործողությունը ամբողջովին կջնջի զանգերի պատմությունը"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Զանգերի պատմության մաքրում…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Հեռախոս"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Բաց թողնված զանգ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Բաց թողնված աշխատանքային զանգ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Բաց թողնված զանգեր"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> բաց թողնված զանգ"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Հետ զանգել"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Հաղորդագրություն"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Նվագարկել"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Նոր ձայնային փոստ <xliff:g id="CALLER">%1$s</xliff:g>-ից"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Հաղորդագրությունը չհաջողվեց նվագարկել"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Ձայնային հաղորդագրության բեռնում…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Հաղորդագրությունը չհաջողվեց բեռնել"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Միայն ձայնային փոստով զանգերը"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Միայն մուտքային զանգեր"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Միայն ելքային զանգերը"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Միայն բաց թողնված զանգերը"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Տեսողական ձայնային փոստ"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Դիտեք և ունկնդրեք ձեր ձայնային փոստի հաղորդագրությունները առանց զանգ կատարելու անհրաժեշտության: Տվյալների փոխանցման համար կարող են վճարներ գանձվել:"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Կարգավորումներ"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Ձայնային փոստի տվյալները չի հաջողվում բեռնել"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Նոր ձայնային հաղորդագրություն կա: Այս պահին հնարավոր չէ բեռնել:"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Կարգավորեք ձայնային փոստը"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Ձայնային տարբերակը հասանելի չէ"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Կարգավորել"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Միանալ ձայնային փոստին"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Ընտրել համարը"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Ընտրել համարը"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Հիշել այս ընտրությունը"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"որոնել"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"համարարկել"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"համարհավաքման հեռախոսահամարը"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Միացնել կամ անջատել նվագարկումը"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Միացնել կամ անջատել բարձրախոսը"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Փնտրել նվագարկման դիրքը"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Իջեցնել նվագարկման վարկանիշը"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Բարձրացնել նվագարկման վարկանիշը"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Զանգերի պատմությունը"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Այլ ընտրանքներ"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"թվաշար"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Ցույց տալ միայն ելքայինները"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Ցույց տալ միայն մուտքայինները"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Ցույց տալ միայն բաց թողնվածները"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Ցուցադրել միայն ձայնային փոստերը"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Ցուցադրել բոլոր զանգերը"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Ավելացնել 2 վայրկյան դադար"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Ավելացնել սպասում"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Կարգավորումներ"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Նոր կոնտակտ"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Բոլոր կոնտակտները"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Զանգի մանրամասները"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Մանրամասները հասանելի չեն"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Օգտագործել հնչերանգներով ստեղնաշարը"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Վերադառնալ ընթացիկ զանգին"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Ավելացնել զանգ"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Մուտքային զանգ"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Ելքային զանգ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Բաց թողնված զանգ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Մուտքային տեսազանգ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Ելքային տեսազանգ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Բաց թողնված տեսազանգ"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Ձայնային փոստ"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Մերժված զանգ"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Արգելափակված զանգ"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Մուտքային զանգեր"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Նվագարկել ձայնային փոստը"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Դիտել <xliff:g id="NAME">%1$s</xliff:g> կոնտակտը"</string>
+    <string name="description_call" msgid="3443678121983852666">"Զանգել <xliff:g id="NAME">%1$s</xliff:g>-ին"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>-ի կոնտակտային տվյալները"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> զանգ:"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Տեսազանգ"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Ուղարկել SMS <xliff:g id="NAME">%1$s</xliff:g>-ին"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Չլսված ձայնային փոստ"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Սկսկեք ձայնային որոնումը"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Զանգել <xliff:g id="NUMBER">%s</xliff:g>-ին"</string>
+    <string name="unknown" msgid="740067747858270469">"Անհայտ"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Ձայնային փոստ"</string>
+    <string name="private_num" msgid="6374339738119166953">"Անձնական համարը"</string>
+    <string name="payphone" msgid="7726415831153618726">"Հանրային հեռախոս"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> վրկ"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> րոպե <xliff:g id="SECONDS">%s</xliff:g> վայրկյան"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g>-ին, ժամը <xliff:g id="TIME">%2$s</xliff:g>-ին"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Հնարավոր չէ զանգահարել այս համարով"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ձայնային փոստը կարգավորելու համար գնացեք Ցանկ &gt; Կարգավորումներ:"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Ձայնային փոստին զանգելու համար նախ անջատեք թռիչքային ռեժիմը:"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Բեռնում..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM քարտը բեռնվում է..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM քարտի կոնտակտները"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Կոնտակտների հավելված չկա"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Ձայնային որոնումը հասանելի չէ"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Հնարավոր չէ զանգահարել, քանի որ Հեռախոս հավելվածն անջատված է:"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Սարքի վրա համապատասխան հավելված չկա"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Որոնել կոնտակտներ"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Ավելացրեք համար/որոնեք կոնտակտներ"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Ձեր զանգերի պատմությունը դատարկ է"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Զանգահարել"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Բաց թողած զանգեր չունեք:"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Ձայնային փոստի մուտքի արկղը դատարկ է:"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Ցույց տալ միայն ընտրյալները"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Զանգերի պատմությունը"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Բոլորը"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Բաց թողնված"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Ձայնափոստ"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Արգելափակե՞լ <xliff:g id="NUMBER">%1$s</xliff:g> համարը:"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Այս համարից զանգերը կարգելափակվեն, իսկ ձայնային փոստի հաղորդագրություններն ավտոմատ կերպով կջնջվեն:"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Այս համարից զանգերը կարգելափակվեն, սակայն զանգողը կկարողանա ձեզ համար ձայնային փոստի հաղորդագրություններ թողնել:"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ԱՐԳԵԼԱՓԱԿԵԼ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Արգելաբացե՞լ <xliff:g id="NUMBER">%1$s</xliff:g> համարը:"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Այս համարից զանգերն այլևս չեն արգելափակվի:"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ԱՐԳԵԼԱԲԱՑԵԼ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Արագ համարարկում"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Զանգերի պատմությունը"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Կոնտակտներ"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Ձայնային փոստ"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Հեռացված է ընտրյալներից"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Հետարկել"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Զանգել <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Ստեղծել նոր կոնտակտ"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Ավելացնել կոնտակտին"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Ուղարկել SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Կատարել տեսազանգ"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Արգելափակել համարը"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> նոր բաց թողնված զանգ"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Արագ համարահավաքման ցանկը դատարկ է"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Ավելացնել ընտրանում"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Դեռ կոնտակտներ չունեք"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Ավելացնել կոնտակտ"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Բոլոր համարները տեսնելու համար հպեք պատկերին: Վերադասավորելու համար հպեք և պահեք:"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Հեռացնել"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Տեսազանգ"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Ուղարկել հաղորդագրություն"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Զանգի մանրամասները"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Զանգել <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ին"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Բաց է թողնվել զանգ <xliff:g id="NAMEORNUMBER">^1</xliff:g> կոնտակտից, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>:"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Ընդունվել է զանգ <xliff:g id="NAMEORNUMBER">^1</xliff:g> կոնտակտից, <xliff:g id="TYPEORLOCATION">^2</xliff:g> , <xliff:g id="TIMEOFCALL">^3</xliff:g> , <xliff:g id="PHONEACCOUNT">^4</xliff:g>:"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Չկարդացված ձայնային փոստի հաղորդագրություն <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ից, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>:"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Ձայնային փոստի հաղորդագրություն <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ից, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>:"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Զանգ <xliff:g id="NAMEORNUMBER">^1</xliff:g> կոնտակտին, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>:"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Զանգել"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Զանգել <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ին"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Տեսազանգ <xliff:g id="NAMEORNUMBER">^1</xliff:g> կոնտակտին:"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Լսել ձայնային փոստը <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ից"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Նվագարկել <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ի ձայնային փոստի հաղորդագրությունները"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Դադարեցնել <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ից ձայնային փոստի հաղորդագրությունների ստացումը"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Ջնջել <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ի ձայնային փոստի հաղորդագրությունները"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> նոր ձայնային փոստ</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> նոր ձայնային փոստ</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Ավելացնել <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ը կոնտակտների ցանկին"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Ավելացնել <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ը առկա կոնտակտին"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> զանգի մասին տվյալներ"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Ջնջվել է զանգերի պատմությունից"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Այսօր"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Երեկ"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Ավելի հին"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Զանգերի ցանկ"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Միացնել բարձրախոսը:"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Անջատել բարձրախոսը:"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Նվագարկել ավելի արագ:"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Նվագարկել ավելի դանդաղ:"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Սկսել կամ դադարեցնել նվագարկումը:"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Ցուցադրման ընտրանքներ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ձայներ և թրթռում"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Մատչելիություն"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Հեռախոսի զանգերանգ"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Նաև թրթռալ զանգերի ժամանակ"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Թվաշարի ձայներանգներ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Թվաշարի ձայնային ազդանշանի երկարություն"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Սովորական"</item>
+    <item msgid="6177579030803486015">"Երկար"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Արագ պատասխաններ"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Զանգեր"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Զանգերի արգելափակում"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Զանգերի արգելափակումը կասեցվել է"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Զանգերի արգելափակումը կասեցվել է, քանի որ վերջին 48 ժամվա ընթացքում դուք այս հեռախոսից զանգել եք արտակարգ իրավիճակների ծառայություններին: 48 ժամ տևողությամբ ժամանակահատվածի ավարտից հետո այն ավտոմատ կերպով կվերամիացվի:"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Ներմուծել համարները"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Համաձայն ձեր նախկին կարգավորումների՝ որոշ զանգողների պետք է ինքնաշխատորեն ուղարկվի ձայնային փոստ այլ հավելվածների միջոցով:"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Կոնտակտների թիվը"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Ներմուծում"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Ներմուծումը չհաջողվեց"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Արգելաբացել համարը"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Ավելացնել համար"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Այս համարներից զանգերը կարգելափակվեն, իսկ ձայնային փոստի հաղորդագրություններն ավտոմատ կերպով կջնջվեն:"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Այս համարներից զանգերը կարգելափակվեն, սակայն նրանք կկարողանան ձեզ համար ձայնային փոստի հաղորդագրություններ թողնել:"</string>
+    <string name="block_list" msgid="7760188925338078011">"Արգելափակված համարներ"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> համարը սխալ է:"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> համարն արդեն արգելափակված է:"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Զանգերի արգելափակումն անջատվել է 48 ժամով"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Անջատվել է, քանի որ կատարվել է արտակարգ իրավիճակների զանգ:"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Հաշիվներ զանգերի համար"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Միացնել"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Թույլտվությունների սահմանում"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Արագ համարահավաքը թույլատրելու համար միացրեք Կոնտակտների թույլտվությունը:"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Ձեր զանգերի մատյանը տեսնելու համար միացրեք Հեռախոսի թույլտվությունը:"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Ձեր կոնտակտները տեսնելու համար միացրեք Կոնտակտների թույլտվությունը:"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Ձայնային փոստն օգտագործելու համար միացրեք Հեռախոսի թույլտվությունը:"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Կոնտակտները որոնելու համար միացրեք Կոնտակտների թույլտվությունները:"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Զանգ կատարելու համար միացրեք Հեռախոսի թույլտվությունը:"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Հեռախոս հավելվածը համակարգի կարգավորումները գրելու թույլտվություն չունի:"</string>
+</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
new file mode 100644
index 0000000..ad8926e
--- /dev/null
+++ b/res/values-in/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telepon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telepon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Tombol Nomor Ponsel"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telepon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Riwayat panggilan"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Laporkan nomor yang tidak akurat"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Salin nomor"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Salin transkripsi"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokir nomor"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> diblokir"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Bebaskan nomor"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> dibebaskan"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"URUNGKAN"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Hapus"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Edit nomor sebelum memanggil"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Hapus riwayat panggilan"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Hapus pesan suara"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Pesan suara dihapus"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"URUNGKAN"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Hapus riwayat panggilan?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tindakan ini akan menghapus semua panggilan telepon dari riwayat"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Menghapus riwayat panggilan..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telepon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Panggilan tak terjawab"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Panggilan tak terjawab di telepon kerja"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Panggilan tak terjawab"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> panggilan tak terjawab"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Telepon balik"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Pesan"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Pesan suara </item>
+      <item quantity="one">Pesan suara</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Putar"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Pesan suara baru dari <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Tidak dapat memutar pesan suara"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Memuat pesan suara..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Tidak dapat memuat pesan suara"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Hanya panggilan dengan pesan suara"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Hanya panggilan masuk"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Hanya panggilan keluar"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Hanya panggilan tak terjawab"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Pesan suara visual"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Lihat dan dengarkan pesan suara, tanpa harus menelepon si pengirim. Dapat dikenakan tagihan data."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Setelan"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Pembaruan pesan suara tidak tersedia"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Pesan suara baru sedang menunggu. Tidak dapat memuat sekarang."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Siapkan pesan suara"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio tidak tersedia"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Siapkan"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Telepon pesan suara"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Pilih nomor"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Pilih nomor"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Ingat pilihan ini"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"telusuri"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"panggil"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"nomor untuk dipanggil"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Memutar atau menghentikan pemutaran"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Mengaktifkan/menonaktifkan pengeras suara ponsel"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Mencari posisi pemutaran"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Menurunkan laju pemutaran"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Meningkatkan laju pemutaran"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Riwayat Panggilan"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Opsi lainnya"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"tombol nomor"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Tampilkan panggilan keluar"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Tampilkan panggilan masuk saja"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Tampilkan panggilan terlewat"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Tampilkan pesan suara saja"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Tampilkan semua panggilan"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Tambahkan jeda 2 dtk"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Tambahkan tunggu"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Setelan"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Kontak baru"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Semua kontak"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detail panggilan"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detail tidak tersedia"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Gunakan keypad nada sentuh"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Kembali ke panggilan sedang berlangsung"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Tambahkan panggilan"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Panggilan masuk"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Panggilan keluar"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Panggilan tak terjawab"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Video call masuk"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Video call keluar"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Video call tak terjawab"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Kotak Pesan"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Panggilan ditolak"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Panggilan diblokir"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Panggilan masuk"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Putar pesan suara"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Lihat kontak <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Telepon <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Detail kontak untuk <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> panggilan."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video call."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Kirim SMS ke <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Pesan suara yang belum didengar"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Memulai penelusuran suara"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Telepon <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Tidak diketahui"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Kotak Pesan"</string>
+    <string name="private_num" msgid="6374339738119166953">"Nomor pribadi"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telepon Umum"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> dtk"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> mnt <xliff:g id="SECONDS">%s</xliff:g> dtk"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> pukul <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Tidak dapat menelepon nomor ini"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Untuk menyiapkan kotak pesan, buka Menu &gt; Setelan."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Untuk memanggil pesan suara, pertama-tama matikan mode Pesawat."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Memuat..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Memuat dari kartu SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontak pada kartu SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Aplikasi kontak tidak tersedia"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Penelusuran suara tidak tersedia"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Tidak dapat melakukan panggilan telepon karena aplikasi Telepon telah dinonaktifkan."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Tidak ada aplikasi untuk tindakan tersebut di perangkat ini"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Telusuri kontak"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Tambahkan nomor atau telusuri kontak"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Riwayat panggilan kosong"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Lakukan panggilan telepon"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Tidak ada panggilan yang tidak terjawab."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Kotak masuk pesan suara kosong."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Hanya tampilkan favorit"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Riwayat Panggilan"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Semua"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Tak Dijawab"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"PesanSuara"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Blokir <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Panggilan telepon dari nomor ini akan diblokir dan pesan suara akan dihapus secara otomatis."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Panggilan telepon dari nomor ini akan diblokir, tetapi penelepon mungkin masih dapat meninggalkan pesan suara."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKIR"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Bebaskan <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Nomor ini tidak akan diblokir lagi dan dapat menelepon Anda."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"BEBASKAN"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Panggilan cepat"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Riwayat Panggilan"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontak"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Pesan suara"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Dihapus dari favorit"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Batalkan"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telepon <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Buat kontak baru"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Tambahkan ke kontak"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Kirim SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Lakukan video call"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokir nomor"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> panggilan tidak terjawab baru"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Daftar panggilan cepat masih kosong"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Tambahkan favorit"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Anda belum memiliki kontak"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Tambahkan kontak"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Sentuh foto untuk melihat semua nomor atau sentuh &amp; tahan untuk menyusun ulang"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Hapus"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Panggilan video"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Kirim pesan"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detail panggilan"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Telepon <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Panggilan tak terjawab dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Panggilan terjawab dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Pesan suara yang belum dibaca dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Pesan suara dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Panggilan ke <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"di <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telepon"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Telepon <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Lakukan panggilan video ke <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Dengarkan kotak pesan dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Putar pesan suara dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Jeda pesan suara dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Hapus pesan suara dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> pesan suara baru</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> pesan suara baru</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Buat kontak untuk <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Tambahkan <xliff:g id="NAMEORNUMBER">^1</xliff:g> ke akun yang ada"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detail panggilan telepon untuk <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Dihapus dari riwayat panggilan"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Hari ini"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Kemarin"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Lebih lama"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Daftar panggilan telepon"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Aktifkan pengeras suara."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Nonaktifkan pengeras suara."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Putar lebih cepat."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Putar lebih lambat."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Mulai atau jeda pemutaran."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opsi tampilan"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Suara dan getaran"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Aksesibilitas"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Nada dering ponsel"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Juga getar saat ada panggilan"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Nada tombol nomor"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Panjang nada tombol nomor"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Panjang"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respons cepat"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Panggilan telepon"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Pemblokiran panggilan telepon"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blokir panggilan dinonaktifkan sementara"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Pemblokiran panggilan telepon telah dinonaktifkan karena Anda menghubungi layanan darurat dari telepon ini dalam 48 jam terakhir. Akan diaktifkan kembali secara otomatis setelah masa 48 jam berakhir."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Impor nomor"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Anda sebelumnya menandai beberapa penelepon agar dialihkan secara otomatis ke pesan suara melalui aplikasi lain."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Lihat Nomor"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Impor"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Impor gagal"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Bebaskan nomor"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Tambahkan nomor"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Panggilan telepon dari nomor ini akan diblokir dan pesan suara akan dihapus secara otomatis."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Panggilan telepon dari nomor ini akan diblokir, tetapi penelepon mungkin masih dapat meninggalkan pesan suara."</string>
+    <string name="block_list" msgid="7760188925338078011">"Nomor yang diblokir"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> tidak valid."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> sudah diblokir."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Pemblokiran panggilan dinonaktifkan selama 48 jam"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Dinonaktifkan karena panggilan darurat dilakukan."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Akun panggilan"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Aktifkan"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Setel izin"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Untuk mengaktifkan panggilan cepat, aktifkan izin Kontak."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Untuk melihat log panggilan, aktifkan izin Telepon."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Untuk melihat kontak, aktifkan izin Kontak."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Untuk mengakses pesan suara, aktifkan izin Telepon."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Untuk menelusuri kontak, aktifkan izin Kontak."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Untuk melakukan panggilan, aktifkan izin Telepon."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikasi telepon tidak memiliki izin untuk menulis ke setelan sistem."</string>
+</resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
new file mode 100644
index 0000000..dc476e7
--- /dev/null
+++ b/res/values-is-rIS/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Sími"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Sími"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Takkaborð síma"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Sími"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Símtalaferill"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Tilkynna rangt númer"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Afrita númer"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Afrita umritun"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Setja númer á bannlista"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Lokað fyrir <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Taka númer af bannlista"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> tekið af bannlista"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"AFTURKALLA"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Eyða"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Breyta númeri áður en hringt er"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Hreinsa símtalaferil"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Eyða talhólfsskilaboðum"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Talhólfi eytt"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"AFTURKALLA"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Hreinsa símtalaferil?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Þetta eyðir öllum símtölum af ferlinum"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Hreinsar símtalaferil…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Sími"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Ósvarað símtal"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Ósvarað vinnusímtal"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Ósvöruð símtöl"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ósvöruð símtöl"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Hringja til baka"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Skilaboð"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spila"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Ný talhólfsskilaboð frá <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Ekki tókst að spila talhólfsskilaboð"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Hleður talhólfsskilaboð…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Ekki tókst að hlaða talhólfsskilaboð"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Símtöl með talhólfi eingöngu"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Móttekin símtöl eingöngu"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Hringd símtöl eingöngu"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Ósvöruð símtöl eingöngu"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Myndrænt talhólf"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Skoðaðu og hlustaðu á talhólfið þitt án þess að þurfa að hringja. Getur haft gagnakostnað í för með sér."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Stillingar"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Talhólfsuppfærslur ekki í boði"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Ný talhólfsskilaboð bíða. Ekki er hægt að hlaða þau eins og er."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Settu upp talhólfið þitt"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Hljóð er ekki í boði"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Uppsetning"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Hringja í talhólf"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Veldu símanúmer"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Veldu símanúmer"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Muna þetta val"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"leita"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"hringja"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"númer til að hringja í"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Hefja eða stöðva spilun"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Kveikja eða slökkva á hátalara"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Breyta spilunarstöðu"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Draga úr spilunarhraða"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Auka spilunarhraða"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Símtalaferill"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Fleiri valkostir"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"takkaborð"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Sýna hringd símtöl eingöngu"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Sýnir móttekin símtöl eingöngu"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Sýna ósvöruð símtöl eingöngu"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Sýna talhólfsskilaboð eingöngu"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Sýna öll símtöl"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Bæta við 2 sekúndna töf"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Bæta töf við"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Stillingar"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nýr tengiliður"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Allir tengiliðir"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Símtalsupplýsingar"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Upplýsingar ekki í boði"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Nota snertitónatakkaborð"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Fara aftur í símtal í gangi"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Bæta við símtali"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Móttekið símtal"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Hringt símtal"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Ósvarað símtal"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Myndsímtal berst"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Myndsímtal hringt"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Ósvarað myndsímtal"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Talhólfsskilaboð"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Símtali hafnað"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Símtal á bannlista"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Móttekin símtöl"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Spila talhólfsskilaboð"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Skoða tengiliðinn <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Hringja í <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Tengiliðaupplýsingar um <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> símtöl."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Myndsímtal"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Senda SMS til <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Óspiluð talhólfsskilaboð"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Hefja raddleit"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Hringja í <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Óþekkt"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Talhólf"</string>
+    <string name="private_num" msgid="6374339738119166953">"Leyninúmer"</string>
+    <string name="payphone" msgid="7726415831153618726">"Símasjálfsali"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> mín. og <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Ekki er hægt að hringja í þetta númer"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Til að setja upp talhólf þarftu að opna valmyndina og velja Stillingar."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Til að hringja í talhólfið þarftu fyrst að slökkva á flugstillingu."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Hleður…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Hleður af SIM-kortinu…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Tengiliðir á SIM-korti"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Ekkert tengiliðaforrit í boði"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Raddleit er ekki í boði"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Ekki er hægt að hringja vegna þess að forritið Sími hefur verið gert óvirkt."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Ekkert forrit fyrir þetta er í tækinu"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Leita að tengiliðum"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Bættu við númeri eða tengilið"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Símtalaferillinn er auður"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Hringja símtal"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Þú ert ekki með nein ósvöruð símtöl."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Talhólfið þitt er tómt."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Sýna aðeins uppáhaldstengiliði"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Símtalaferill"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Allt"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Ósvöruð"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Talhólf"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Setja <xliff:g id="NUMBER">%1$s</xliff:g> á bannlista?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Lokað verður fyrir símtöl frá þessu númeri og talhólfsskilaboðum sjálfkrafa eytt."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Lokað verður fyrir símtöl frá þessu númeri. Hugsanlegt er að sá sem hringir geti engu að síður sent þér talhólfsskilaboð."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"SETJA Á BANNLISTA"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Taka <xliff:g id="NUMBER">%1$s</xliff:g> af bannlista?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Ekki verður lengur lokað á símtöl úr þessu númeri."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"TAKA AF BANNLISTA"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Hraðval"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Símtalaferill"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Tengiliðir"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Talhólf"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Fjarlægður úr uppáhaldi"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Afturkalla"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Hringja í <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Búa til nýjan tengilið"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Bæta við tengilið"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Senda SMS-skilaboð"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Hringja myndsímtal"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Setja númer á bannlista"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ný ósvöruð símtöl"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Þú ert ekki með neinn í hraðvali enn sem komið er"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Bæta uppáhaldi við"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Þú ert ekki með neina tengiliði enn sem komið er"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Bæta tengilið við"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Snertu myndina til að sjá öll númer eða haltu henni inni til að endurraða"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Fjarlægja"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Myndsímtal"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Senda skilaboð"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Símtalsupplýsingar"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Hringja í <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Ósvarað símtal frá <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Svarað símtal frá <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Ólesin talhólfsskilaboð frá <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Talhólfsskilaboð frá <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Símtal til <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"í gegnum <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Hringja"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Hringja í <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Hringja myndsímtal í <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Hlusta á talhólfsskilaboð frá <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Spila talhólfsskilaboð sem <xliff:g id="NAMEORNUMBER">^1</xliff:g> sendi"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Gera hlé á talhólfsskilaboðum sem <xliff:g id="NAMEORNUMBER">^1</xliff:g> sendi"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Eyða talhólfsskilaboðum sem <xliff:g id="NAMEORNUMBER">^1</xliff:g> sendi"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ný talhólfsskilaboð</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ný talhólfsskilaboð</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Búa til tengilið fyrir <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Bæta <xliff:g id="NAMEORNUMBER">^1</xliff:g> við fyrirliggjandi tengilið"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Símtalsupplýsingar fyrir <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Eytt af símtalaferli"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Í dag"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Í gær"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Eldra"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Símtalalisti"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Kveikja á hátalara."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Slökkva á hátalara."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Spila hraðar."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Spila hægar."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Hefja eða gera hlé á spilun."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Birtingarvalkostir"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Hljóð og titringur"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Aðgengi"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Hringitónn síma"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Titra líka fyrir símtöl"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tónar takkaborðs"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Lengd takkatóns"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Venjulegur"</item>
+    <item msgid="6177579030803486015">"Langur"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Snarsvör"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Símtöl"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Lokað fyrir símtöl"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Tímabundið slökkt á lokun fyrir símtöl"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Lokun fyrir símtöl hefur verið gerð óvirk vegna þess að þú hafðir samband við neyðarþjónustu úr þessum síma á undanförnum tveimur sólarhringum. Lokunin verður aftur virk að þessum tveimur sólarhringum liðnum."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Flytja inn númer"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Þú merktir áður nokkra hringjendur þannig að þeir verði sjálfkrafa sendir í talhólfið í gegnum önnur forrit."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Skoða tölur"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Flytja inn"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Innflutningur mistókst"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Taka númer af bannlista"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Bæta númeri við"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Lokað verður fyrir símtöl frá þessum númerum og talhólfsskilaboðum sjálfkrafa eytt."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Lokað verður fyrir símtöl frá þessum númerum. Hugsanlegt er að þeir sem hringja geti engu að síður sent þér talhólfsskilaboð."</string>
+    <string name="block_list" msgid="7760188925338078011">"Númer á bannlista"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> er ógilt."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> er nú þegar á bannlista."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Slökkt á lokun símtala í 48 klukkustundir"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Óvirkt vegna þess að neyðarsímtal var hringt."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Símtalareikningar"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Kveikja"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Stilla heimildir"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Kveiktu á tengiliðaheimildinni til að gera hraðval virkt."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Kveiktu á heimild símaforritsins til að sjá símtalaskrána þína."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Kveiktu á tengiliðaheimildinni til að sjá tengiliðina þína."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Kveiktu á heimild símaforritsins til að fá aðgang að talhólfinu þínu."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Kveiktu á heimildunum fyrir tengiliði til að leita að tengiliðum."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Kveiktu á heimild símaforritsins til að hringja símtal."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Símaforritið hefur ekki heimild til að breyta kerfisstillingum."</string>
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
new file mode 100644
index 0000000..fa281cf
--- /dev/null
+++ b/res/values-it/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefono"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefono"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Tastierino del telefono"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefono"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Cronologia chiamate"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Segnala numero sbagliato"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copia numero"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copia trascrizione"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blocca numero"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> bloccato"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Sblocca numero"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> sbloccato"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ANNULLA"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Elimina"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Modifica numero prima di effettuare la chiamata"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Cancella cronologia chiamate"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Elimina messaggi della segreteria"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mes vocali eliminati"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANNULLA"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Cancellare la cronologia chiamate?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Verranno eliminate tutte le chiamate dalla cronologia"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Cancellazione cronologia chiamate…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefono"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Chiamata senza risposta"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Chiamata di lavoro persa"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Chiamate senza risposta"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chiamate senza risposta"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Richiama"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Messaggio"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> messaggi in segreteria </item>
+      <item quantity="one">Messaggio in segreteria</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Riproduci"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuovo messaggio vocale da <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Impossibile riprodurre i messaggi vocali"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Caricamento dei messaggi vocali…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Impossibile caricare i messaggi vocali"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Solo chiamate con segreteria"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Solo chiamate in arrivo"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Solo chiamate in uscita"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Solo chiamate perse"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Leggi la segreteria"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Leggi e ascolta i tuoi messaggi in segreteria senza chiamare alcun numero. Potrebbero essere applicate le tariffe previste per il traffico di dati."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Impostazioni"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Aggiornamenti della segreteria non disponibili"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Nuovo messaggio vocale in attesa. Impossibile caricare al momento."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configura la segreteria"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio non disponibile"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Imposta"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Chiama segreteria"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Scegli numero"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Scegli numero"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Memorizza questa scelta"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"cerca"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"componi"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"numero da comporre"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Avvia o interrompi riproduzione"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Attiva o disattiva vivavoce"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Cerca posizione di riproduzione"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Diminuisci velocità di riproduzione"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Aumenta velocità di riproduzione"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Cronologia chiamate"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Altre opzioni"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"tastierino"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostra solo in uscita"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostra solo in arrivo"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Mostra solo senza risposta"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostra solo messaggi vocali"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostra tutte le chiamate"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Aggiungi pausa 2 sec"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Aggiungi attesa"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Impostazioni"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nuovo contatto"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Tutti i contatti"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Dettagli chiamata"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Dettagli non disponibili"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usa tastierino per selezione a toni"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Torna alla chiamata in corso"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Aggiungi chiamata"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Chiamata in arrivo"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Chiamata effettuata"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Chiamata persa"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Videochiamata in arrivo"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Videochiamata in uscita"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Videochiamata persa"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Segreteria"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Chiamata rifiutata"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Chiamata bloccata"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Chiamate in arrivo"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Riproduci messaggio vocale"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Visualizza <xliff:g id="NAME">%1$s</xliff:g> contatto"</string>
+    <string name="description_call" msgid="3443678121983852666">"Chiama <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Dettagli contatto <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> chiamate."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videochiamata."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Invia SMS a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Messaggio vocale non ascoltato"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Avvia la ricerca vocale"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Chiama <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Sconosciuto"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Segreteria"</string>
+    <string name="private_num" msgid="6374339738119166953">"Numero privato"</string>
+    <string name="payphone" msgid="7726415831153618726">"Cabina telefonica"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> secondi"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min e <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> alle ore <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Impossibile chiamare questo numero"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Per configurare la segreteria, seleziona Menu &gt; Impostazioni."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Per chiamare la segreteria, disattiva la modalità aereo."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Caricamento..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Caricamento da SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contatti SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nessuna app di contatti disponibile"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Ricerca vocale non disponibile"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Impossibile effettuare una telefonata perché l\'applicazione Telefono è stata disattivata."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Sul dispositivo non sono presenti app per tale azione"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Cerca nei contatti"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Aggiungi numero/cerca contatti"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"La cronologia delle chiamate è vuota"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Fai una chiamata"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nessuna chiamata senza risposta."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"La segreteria è vuota."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Mostra solo i preferiti"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Cronologia chiamate"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Tutte"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Perse"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Segreteria"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Bloccare il numero <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Le chiamate da questo numero verranno bloccate e i messaggi in segreteria verranno automaticamente eliminati."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Le chiamate da questo numero verranno bloccate, ma il chiamante potrebbe lasciarti messaggi in segreteria."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOCCA"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Sbloccare il numero <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Questo numero non sarà più bloccato e potrà chiamarti."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"SBLOCCA"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Composizione rapida"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Cronologia chiamate"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contatti"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Segreteria"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Rimosso dai preferiti"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Annulla"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Chiama <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crea nuovo contatto"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Aggiungi a un contatto"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Invia SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fai una videochiamata"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blocca numero"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nuove chiamate senza risposta"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Nessun preferito disponibile nella Composizione rapida"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Aggiungi un preferito"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Nessun contatto disponibile"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Aggiungi un contatto"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Tocca l\'immagine per visualizzare tutti i numeri, oppure tocca e tieni premuto per cambiare l\'ordine"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Rimuovi"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videochiamata"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Invia un messaggio"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Dettagli chiamata"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Chiama <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Chiamata senza risposta di <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Risposta alla chiamata di <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Messaggio in segreteria da ascoltare da <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Messaggio in segreteria da <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Chiamata a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"da o verso <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Chiama"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Chiama <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videochiamata <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Ascolta il messaggio vocale di: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Riproduci i messaggi di <xliff:g id="NAMEORNUMBER">^1</xliff:g> in segreteria"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Metti in pausa i messaggi di <xliff:g id="NAMEORNUMBER">^1</xliff:g> in segreteria"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Elimina i messaggi di <xliff:g id="NAMEORNUMBER">^1</xliff:g> dalla segreteria"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nuovi messaggi vocali</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nuovo messaggio vocale</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Crea contatto per <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Aggiungi <xliff:g id="NAMEORNUMBER">^1</xliff:g> al contatto esistente"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Dettagli chiamata per <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Eliminato dalla cronologia chiamate"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Oggi"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ieri"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Meno recenti"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Elenco chiamate"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Attiva altoparlante."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Disattiva altoparlante."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Riproduci più velocemente."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Riproduci più lentamente."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Avvia o metti in pausa la riproduzione."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opzioni di visualizzazione"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Suoni e vibrazione"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilità"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Suoneria telefono"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrazione per le chiamate"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Toni tastierino"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durata tono tastierino"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normale"</item>
+    <item msgid="6177579030803486015">"Lunga"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Risposte rapide"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Chiamate"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blocco delle chiamate"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blocco chiamate temporaneam. disattivato"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Il blocco chiamate è stato disattivato perché hai contattato servizi di emergenza da questo telefono nelle ultime 48 ore. Verrà riattivato automaticamente una volta trascorso il periodo di 48 ore."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importa numeri"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Hai già contrassegnato alcuni chiamanti da inviare automaticamente alla segreteria tramite altre app."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Visualizza numeri"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importa"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Importazione non riuscita"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Sblocca numero"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Aggiungi numero"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Le chiamate da questi numeri verranno bloccate e i messaggi in segreteria verranno automaticamente eliminati."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Le chiamate da questi numeri verranno bloccate, ma i chiamanti potrebbero lasciarti messaggi in segreteria."</string>
+    <string name="block_list" msgid="7760188925338078011">"Numeri bloccati"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> non è valido."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> è già bloccato."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Il blocco chiamate è stato disattivato per 48 ore"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Funzione disattivata: è stata fatta una chiamata di emergenza."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Account di chiamata"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Attiva"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Imposta autorizzazioni"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Per attivare la composizione rapida, attiva l\'autorizzazione Contatti."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Per accedere al registro chiamate, attiva l\'autorizzazione sul telefono."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Per accedere ai tuoi contatti, attiva l\'autorizzazione Contatti."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Per accedere alla segreteria, attiva l\'autorizzazione sul telefono."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Per cercare nei tuoi contatti, attiva le autorizzazioni Contatti."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Per fare una chiamata, attiva l\'autorizzazione sul telefono."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"L\'app Telefono non dispone dell\'autorizzazione per modificare le impostazioni di sistema."</string>
+</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
new file mode 100644
index 0000000..cc7427b
--- /dev/null
+++ b/res/values-iw/strings.xml
@@ -0,0 +1,259 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"טלפון"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"טלפון"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"לוח חיוג של הטלפון"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"טלפון"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"היסטוריית שיחות"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"דווח על מספר לא מדויק"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"העתק מספר"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"העתק תמלול"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"חסום מספר"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> חסום"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"בטל חסימת מספר"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"בוטלה החסימה של <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"בטל"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"מחק"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"ערוך את המספר לפני השיחה"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"נקה את היסטוריית השיחות"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"מחק דואר קולי"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"דואר קולי נמחק"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"בטל"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"האם לנקות את היסטוריית השיחות?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"פעולה זו תמחק את כל השיחות מההיסטוריה שלך"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"מנקה היסטוריית שיחות…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"טלפון"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"שיחה שלא נענתה"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"שיחה עסקית שלא נענתה"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"שיחות שלא נענו"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> שיחות שלא נענו"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"התקשר חזרה"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"הודעה"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="two"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
+      <item quantity="one">הודעת דואר קולי</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"הפעל"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"דואר קולי חדש מאת <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"לא ניתן היה להשמיע דואר קולי"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"טוען דואר קולי…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"לא ניתן היה לטעון דואר קולי"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"שיחות עם דואר קולי בלבד"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"שיחות נכנסות בלבד"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"שיחות יוצאות בלבד"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"שיחות שלא נענו בלבד"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"דואר קולי ויזואלי"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"הצג את הדואר הקולי והאזן לו בלי להתקשר למספר אחר. ייתכנו חיובים על צריכת נתונים."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"הגדרות"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"עדכוני דואר קולי אינם זמינים"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"יש דואר קולי חדש בהמתנה. לא ניתן לטעון כעת."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"הגדר את הדואר הקולי שלך"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"אודיו אינו זמין"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"הגדר"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"התקשר לדואר קולי"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"בחר מספר"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"בחר מספר"</string>
+    <string name="make_primary" msgid="5829291915305113983">"זכור בחירה זו"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"חפש"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"חייג"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"מספר לחיוג"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"הפעל או הפסק הפעלה"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"הפעל או כבה את רמקול הטלפון"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"חפש מיקום בהפעלה"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"האט את מהירות ההפעלה"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"הגבר את מהירות ההפעלה"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"היסטוריית שיחות"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"אפשרויות נוספות"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"לוח חיוג"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"הצג רק שיחות יוצאות"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"הצג רק שיחות נכנסות"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"הצג רק שיחות שלא נענו"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"הצג הודעות דואר קולי בלבד"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"הצג את כל השיחות"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"הוסף השהיה של 2 שניות"</string>
+    <string name="add_wait" msgid="3360818652790319634">"הוסף המתנה"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"הגדרות"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"איש קשר חדש"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"כל אנשי הקשר"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"פרטי שיחה"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"אין פרטים זמינים"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"השתמש במקלדת עם חיוג צלילים"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"חזור לשיחה פעילה"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"הוסף שיחה"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"שיחה נכנסת"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"שיחה יוצאת"</string>
+    <string name="type_missed" msgid="2720502601640509542">"שיחה שלא נענתה"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"שיחת וידאו נכנסת"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"שיחת וידאו יוצאת"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"שיחת וידאו שלא נענתה"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"דואר קולי"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"שיחה שנדחתה"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"שיחה חסומה"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"שיחות נכנסות"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"הפעל דואר קולי"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"הצג את איש הקשר <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"התקשר אל <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"פרטי יצירת קשר עבור <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> שיחות."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"שיחת וידאו."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"‏שלח SMS אל <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"דואר קולי שעדיין לא נשמע"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"התחל חיפוש קולי"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"התקשר אל <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"לא ידוע"</string>
+    <string name="voicemail" msgid="3851469869202611441">"דואר קולי"</string>
+    <string name="private_num" msgid="6374339738119166953">"מספר פרטי"</string>
+    <string name="payphone" msgid="7726415831153618726">"טלפון ציבורי"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> שניות"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> דק\' <xliff:g id="SECONDS">%s</xliff:g> שנ\'"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> ב-<xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"לא ניתן להתקשר אל המספר הזה"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"‏כדי להגדיר את הדואר הקולי, עבור אל \'תפריט\' &gt; \'הגדרות\'."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"כדי להתקשר לדואר קולי, ראשית כבה את מצב הטיסה."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"טוען..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"‏טוען מכרטיס SIM…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"‏אנשי קשר בכרטיס SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"אין אפליקציה זמינה עבור אנשי קשר"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"חיפוש קולי אינו זמין"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"לא ניתן לבצע שיחת טלפון מפני שאפליקציית הטלפון הושבתה."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"אין אפליקציה עבור הפעולה הזו במכשיר הזה"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"חפש אנשי קשר"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"הוסף מספר או חפש אנשי קשר"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"היסטוריית השיחות שלך ריקה"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"התקשר"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"אין שיחות שלא נענו."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"תיבת הדואר הקולי ריקה."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"הצג מועדפים בלבד"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"היסטוריית שיחות"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"הכל"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"שיחה שלא נענתה"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"דואר קולי"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"האם לחסום את המספר <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"שיחות ממספר זה ייחסמו והודעות דואר קולי יימחקו באופן אוטומטי."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"שיחות ממספר זה ייחסמו, אבל המתקשר עדיין יוכל להשאיר לך הודעות דואר קולי."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"חסום"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"האם לבטל את חסימת המספר <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"מספר זה כבר לא יהיה חסום ויוכל להתקשר אליך."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ביטול חסימה"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"חיוג מהיר"</string>
+    <string name="tab_history" msgid="2563144697322434940">"היסטוריית שיחות"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"אנשי קשר"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"דואר קולי"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"הוסר מהמועדפים"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"בטל"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"התקשר אל <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"צור איש קשר חדש"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"הוסף לאיש קשר"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"‏שלח SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"בצע שיחת וידאו"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"חסום מספר"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> שיחות חדשות שלא נענו"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"עדיין לא הוגדר חיוג מהיר לאף איש קשר"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"הוסף פריט מועדף"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"עדיין אין לך אנשי קשר"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"הוסף איש קשר"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"גע בתמונה כדי לראות את כל המספרים או גע נגיעה ממושכת כדי לשנות את הסדר"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"הסר"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"שיחת וידאו"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"שלח הודעה"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"פרטי שיחה"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"התקשר אל <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"שיחה לא נענתה מ-<xliff:g id="NAMEORNUMBER">^1</xliff:g>‏, <xliff:g id="TYPEORLOCATION">^2</xliff:g>‏, <xliff:g id="TIMEOFCALL">^3</xliff:g>‏, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"נענתה שיחה מ-<xliff:g id="NAMEORNUMBER">^1</xliff:g>‏, <xliff:g id="TYPEORLOCATION">^2</xliff:g>‏, <xliff:g id="TIMEOFCALL">^3</xliff:g>‏, <xliff:g id="PHONEACCOUNT">^4</xliff:g>‏."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"דואר קולי שלא נקרא מ-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"דואר קולי מ-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"שיחה אל <xliff:g id="NAMEORNUMBER">^1</xliff:g>‏, <xliff:g id="TYPEORLOCATION">^2</xliff:g>‏, <xliff:g id="TIMEOFCALL">^3</xliff:g>‏, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"ב-<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"התקשר"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"התקשר אל <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"שיחת וידאו עם <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"האזן לדואר קולי מאת <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"השמע דואר קולי מאת <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"השהה דואר קולי מאת <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"מחק דואר קולי מאת <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> הודעות דואר קולי חדשות</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> הודעות דואר קולי חדשות</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> הודעות דואר קולי חדשות</item>
+      <item quantity="one">הודעת דואר קולי חדשה <xliff:g id="COUNT_0">%d</xliff:g></item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"צור איש קשר בשביל <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"הוסף את <xliff:g id="NAMEORNUMBER">^1</xliff:g> לאיש קשר קיים"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"פרטי שיחה עבור <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"נמחקה מהיסטוריית השיחות"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"היום"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"אתמול"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"ישנות יותר"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"רשימת שיחות"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"הפעל את הרמקול."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"כבה את הרמקול."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"הפעל מהר יותר."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"הפעל לאט יותר."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"התחל או השהה הפעלה."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"אפשרויות תצוגה"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"צלילים ורטט"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"נגישות"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"רינגטון של טלפון"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"הפעל רטט גם עבור שיחות"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"צלילי לוח החיוג"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"אורך צליל של לוח חיוג"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"רגיל"</item>
+    <item msgid="6177579030803486015">"ארוך"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"תגובות מהירות"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"שיחות"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"חסימת שיחות"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"חסימת השיחות מושבתת באופן זמני"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"חסימת השיחות הושבתה מפני שיצרת קשר מטלפון זה עם שירותי חירום במהלך 48 השעות האחרונות. הפונקציה תופעל מחדש באופן אוטומטי בתום 48 השעות."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"יבא מספרים"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"סימנת בעבר באמצעות יישומים אחרים כמה מתקשרים שיישלחו באופן אוטומטי לדואר קולי."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"הצג מספרים"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"יבא"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"הייבוא נכשל"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"בטל חסימת מספר"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"הוסף מספר"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"שיחות ממספרים אלה ייחסמו והודעות דואר קולי יימחקו באופן אוטומטי."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"שיחות ממספרים אלה ייחסמו, אבל המתקשרים עדיין יוכלו להשאיר לך הודעות דואר קולי."</string>
+    <string name="block_list" msgid="7760188925338078011">"מספרים חסומים"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> אינו חוקי."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> כבר חסום."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"חסימת השיחות הושבתה ל-48 שעות"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"מושבתת מפני שבוצעה שיחת חירום."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"חשבונות לביצוע שיחות"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"הפעל"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"הגדר הרשאות"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"כדי להפעיל חיוג מהיר, הפעל את ההרשאה \'אנשי קשר\'."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"כדי לראות את יומן השיחות, הפעל את ההרשאה \'טלפון\'."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"כדי להציג את אנשי הקשר, הפעל את ההרשאה \'אנשי קשר\'."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"כדי לגשת לדואר הקולי, הפעל את ההרשאה \'טלפון\'."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"כדי לחפש באנשי הקשר, הפעל את ההרשאה \'אנשי קשר\'."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"כדי להתקשר, הפעל את ההרשאה \'טלפון\'."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"לאפליקציית הטלפון אין הרשאה לכתוב בהגדרות המערכת."</string>
+</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
new file mode 100644
index 0000000..7bd2bad
--- /dev/null
+++ b/res/values-ja/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"電話"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"電話"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"電話ダイヤルパッド"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"通話履歴"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"不正確な番号を報告"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"番号をコピー"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"音声文字変換をコピー"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"番号をブロック"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g>をブロックしました"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"番号のブロックを解除"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g>のブロックを解除しました"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"元に戻す"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"削除"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"発信前に番号を編集"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"通話履歴を消去"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ボイスメールを削除"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"ボイスメールの削除"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"元に戻す"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"通話履歴を消去しますか?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"消去すると、すべての通話が履歴から削除されます"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"通話履歴の消去中…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"電話"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"不在着信"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"仕事の通話の不在着信"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"不在着信"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"不在着信 <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 件"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"折り返す"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"メッセージ"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g>件のボイスメール</item>
+      <item quantity="one">1件のボイスメール</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"再生"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>、<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>から新着ボイスメール"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"ボイスメールを再生できませんでした"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"ボイスメールを読み込んでいます…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"ボイスメールを読み込めませんでした"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"ボイスメールのある着信のみ"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"着信のみ"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"発信のみ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"不在着信のみ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"ビジュアルボイスメール"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"電話を発信せずにボイスメールを確認して聞くことができます。データ通信料が発生する場合があります。"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"設定"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"新着ボイスメールは現在利用できません"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"新着ボイスメールがあります。現在は読み込めません。"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"ボイスメールを設定してください"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"音声を利用できません"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"セットアップ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ボイスメール呼び出し"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>)<xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"番号を選択"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"番号を選択"</string>
+    <string name="make_primary" msgid="5829291915305113983">"この選択を保存"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"検索"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"発信"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"発信番号"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"再生を開始または停止する"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"スピーカーフォンのON/OFFを切り替える"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"再生位置を探す"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"再生速度を下げる"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"再生速度を上げる"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"通話履歴"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"その他のオプション"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ダイヤルパッド"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"発信のみを表示"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"着信のみを表示"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"不在着信のみを表示"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ボイスメールのみ表示"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"すべての通話を表示"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2秒間の停止を追加"</string>
+    <string name="add_wait" msgid="3360818652790319634">"待機を追加"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"設定"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"連絡先を新規登録"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"すべての連絡先"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"通話詳細"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"詳細情報がありません"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"プッシュホン式キーパッドを使う"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"通話に戻る"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"別の通話を追加"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"通話着信"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"発信履歴"</string>
+    <string name="type_missed" msgid="2720502601640509542">"不在着信"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ビデオハングアウト着信"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"ビデオハングアウト発信"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"ビデオハングアウト不在着信"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"ボイスメール"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"拒否された通話"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"ブロックされた通話"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"着信"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"ボイスメールを再生"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g>の連絡先を表示"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g>に発信"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>の連絡先の詳細"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"通話回数は<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>回。"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ビデオハングアウト"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g>さんにSMSを送信"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未再生のボイスメール"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"音声検索を開始"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>に発信"</string>
+    <string name="unknown" msgid="740067747858270469">"通知不可能"</string>
+    <string name="voicemail" msgid="3851469869202611441">"ボイスメール"</string>
+    <string name="private_num" msgid="6374339738119166953">"非通知設定"</string>
+    <string name="payphone" msgid="7726415831153618726">"公衆電話"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g>秒"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g>分<xliff:g id="SECONDS">%s</xliff:g>秒"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g>、<xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"この番号に電話できません"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ボイスメールをセットアップするには、MENUキー&gt;[設定]をタップします。"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"機内モードをOFFにしてからボイスメールを呼び出してください。"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"読み込んでいます..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI(端末識別番号)"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIMカードから読み取り中..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIMカードの連絡先"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"連絡先アプリがありません"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"音声検索を利用できません"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"電話アプリが無効になっているため発信できません。"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"この操作を行うアプリが端末上にありません"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"連絡先を検索"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"番号を追加するか連絡先を検索"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"通話履歴はありません"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"発信"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"不在着信はありません。"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"ボイスメール受信トレイは空です。"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"お気に入りのみを表示"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"通話履歴"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"すべて"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"不在着信"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"ボイスメール"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g>をブロックしますか?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"この番号からの着信はブロックされ、ボイスメールは自動的に削除されます。"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"この番号からの着信はブロックされますが、発信者は今後もボイスメールを残すことができます。"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ブロック"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g>のブロックを解除しますか?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"この番号からの着信はブロックされなくなります。"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ブロックを解除"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"クイックアクセス"</string>
+    <string name="tab_history" msgid="2563144697322434940">"通話履歴"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"連絡先"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"ボイスメール"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"お気に入りから削除されました"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"元に戻す"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>に発信"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"新しい連絡先を作成"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"連絡先に追加"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMSを送信"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ビデオハングアウト"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"番号をブロック"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>件の不在着信"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"クイックアクセスに登録済みの連絡先はまだありません"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"お気に入りを追加"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"連絡先はまだありません"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"連絡先を追加"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"画像をタップするとすべての番号を表示でき、押し続けると並べ替えることができます"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"削除"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ビデオハングアウト"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"メッセージを送信"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"通話の詳細"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>に発信"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="TIMEOFCALL">^3</xliff:g>の<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="PHONEACCOUNT">^4</xliff:g>)からの不在着信。"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="TIMEOFCALL">^3</xliff:g>の<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="PHONEACCOUNT">^4</xliff:g>)からの着信。"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="TIMEOFCALL">^3</xliff:g>の<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="PHONEACCOUNT">^4</xliff:g>)からの未読のボイスメール。"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="TIMEOFCALL">^3</xliff:g>の<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="PHONEACCOUNT">^4</xliff:g>)からのボイスメール。"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="TIMEOFCALL">^3</xliff:g>の<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="PHONEACCOUNT">^4</xliff:g>)への発信。"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"発信"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>に発信します"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>にビデオハングアウト発信します。"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>からのボイスメールを再生"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>からのボイスメールを再生"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>からのボイスメールを一時停止"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>からのボイスメールを削除"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>件の新着ボイスメール</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>件の新着ボイスメール</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>の連絡先を作成します"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"既存の連絡先に<xliff:g id="NAMEORNUMBER">^1</xliff:g>を追加します"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>の通話の詳細"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"通話履歴から削除しました"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"今日"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"昨日"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"以前の着信"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"通話リスト"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"スピーカーをONにします。"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"スピーカーをOFFにします。"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"速く再生します。"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"遅く再生します。"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"再生を開始または一時停止します。"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"表示オプション"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"音とバイブレーション"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ユーザー補助機能"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"着信音"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"着信時にバイブレーションもON"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ダイヤルパッドの音"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ダイヤルパッドの音の長さ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"標準"</item>
+    <item msgid="6177579030803486015">"長め"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"クイック返信"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"通話"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"通話をブロックしています"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"通話のブロックは一時的にOFFです"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"このスマートフォンから緊急通報番号への発信が過去48時間以内に行われているため、通話のブロックは無効になっています。48時間経過すると、通話のブロックは自動的に有効になります。"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"番号をインポート"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"以前に一部の発信者について、他のアプリを通じて自動的にボイスメールに転送するようマークを付けています。"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"番号を表示"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"インポート"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"インポートに失敗しました"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"番号のブロックを解除"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"電話番号を追加"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"この番号からの着信はブロックされ、ボイスメールは自動的に削除されます。"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"この番号からの着信はブロックされますが、発信者は今後もボイスメールを残すことができます。"</string>
+    <string name="block_list" msgid="7760188925338078011">"ブロックした番号"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g>は無効な番号です。"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g>は既にブロックしています。"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"通話のブロックは48時間経過するまで無効になりました"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"緊急通報を行ったため無効になりました。"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"通話アカウント"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ONにする"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"権限を設定"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"クイックアクセスを有効にするには、連絡先権限をONにしてください。"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"通話履歴を表示するには、電話権限をONにしてください。"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"連絡先を表示するには、連絡先権限をONにしてください。"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"ボイスメールにアクセスするには、電話権限をONにしてください。"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"連絡先を検索するには、連絡先権限をONにしてください。"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"電話をかけるには、電話権限をONにしてください。"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"電話アプリにはシステム設定への書き込み権限がありません。"</string>
+</resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
new file mode 100644
index 0000000..d4bc4a2
--- /dev/null
+++ b/res/values-ka-rGE/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ტელეფონი"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ტელეფონი"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ტელეფონის ციფერბლატი"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ტელეფონი"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"საუბრის ისტორია"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"არაზუსტი ნომრის შეტყობინება"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"ნომრის კოპირება"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ტრანსკრიპტის კოპირება"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"ნომრის დაბლოკვა"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> დაბლოკილია"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"ნომრის განბლოკვა"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> განბლოკილია"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"დაბრუნება"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"წაშლა"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"ნომრის რედაქტირება დარეკვამდე"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"საუბრის ისტორიის გასუფთავება"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ხმოვანი ფოსტის წაშლა"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"ხმოვანი ფოსტა წაიშალა"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"დაბრუნება"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"გასუფთავდეს ზარის ისტორია?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ეს წაშლის ყველა ზარს თქვენი ისტორიიდან"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"მიმდ. ზარ. ისტ. გასუფთავება…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"დარეკვა"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"გამოტოვებული ზარი"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"გამოტოვებული ზარი (სამსახური)"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"გამოტოვებული ზარები"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> გამოტოვებული ზარი"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"გადარეკვა"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"შეტყობინება"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ხმოვანი ფოსტა </item>
+      <item quantity="one">ხმოვანი ფოსტა</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"დაკვრა"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ახალი ხმოვანი ფოსტა <xliff:g id="CALLER">%1$s</xliff:g>-ისგან"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"ვერ ხორციელდება ხმოვანი ფოსტა ჩართვა"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"ხმოვანი ფოსტა იტვირთება…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"ვერ ხორციელდება ხმოვანი ფოსტის ჩატვირთვა"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"მხოლოდ ზარები ხმოვანი ფოსტით"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"მხოლოდ შემომავალი ზარები"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"მხოლოდ გამავალი ზარები"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"მხოლოდ გამოტოვებული ზარები"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"ვიზუალური ხმოვანი ფოსტა"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"ნახეთ და მოუსმინეთ თქვენს ხმოვან ფოსტას ნომერზე დარეკვის გარეშე. შესაძლოა, გამოიწვიოს დამატებითი ხარჯები."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"პარამეტრები"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"არ არის შესაძლებელი ხმოვანი ფოსტის განახლებები"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"გელოდებათ ახალი ხმოვანი ფოსტა. ახლავე ჩატვირთვა ვერ ხორციელდება."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"დააყენეთ თქვენი ხმოვანი ფოსტა"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"აუდიო არ არის ხელმისაწვდომი"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"კონფიგურაცია"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ხმოვან ფოსტასთან დაკავშირება"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>-ში"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"ნომრის შერჩევა"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"ნომრის შერჩევა"</string>
+    <string name="make_primary" msgid="5829291915305113983">"დაიმახსოვრე ეს არჩევანი"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ძიება"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"დარეკვა"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ასაკრეფი ნომერი"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"დაკვრის შეჩერება ან გაშვება"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"სპიკერები შეგიძლიათ ჩართოთ და გამორთოთ."</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"დაკვრის პოზიციის მოძებნა"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"დაკვრის კოეფიციენტის შემცირება"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"დაკვრის კოეფიციენტის გაზრდა"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"საუბრის ისტორია"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"სხვა პარამეტრები"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ციფერბლატი"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"მხოლოდ გამავალის ჩვენება"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"მხოლოდ შემომავალის ჩვენება"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"მხოლოდ გამოტოვებულის ჩვენება"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"მხოლოდ ხმოვანი ფოსტის ჩვენება"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"ყველა ზარის ჩვენება"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"ორწამიანი პაუზის დამატება"</string>
+    <string name="add_wait" msgid="3360818652790319634">"ლოდინის დამატება"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"პარამეტრები"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"ახალი კონტაქტი"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"ყველა კონტაქტი"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"ზარის დეტალები"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"დეტალები არ არის ხელმისაწვდომი"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ტონალური კლავიატურის გამოყენება"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"მიმდინარე ზარზე დაბრუნება"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"ზარის დამატება"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"შემომავალი ზარი"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"გამავალი ზარი"</string>
+    <string name="type_missed" msgid="2720502601640509542">"გამოტოვებული ზარი"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"შემომავალი ვიდეოზარი"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"გამავალი ვიდეოზარი"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"გამოტოვებული ვიდეოზარი"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"ხმოვანი ფოსტა"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"უარყოფილი ზარი"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"დაბლოკილი ზარი"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"შემომავალი ზარები"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"ხმოვანი ფოსტის ჩართვა"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"კონტაქტის <xliff:g id="NAME">%1$s</xliff:g> ნახვა"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g>-თან დარეკვა"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>-ის კონტაქტის დეტალები"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ზარი."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ვიდეოზარი."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"გააგზავნეთ SMS <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"მოსასმენი ხმოვანი ფოსტა"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"ხმოვანი ძიების დაწყება"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"დარეკვა <xliff:g id="NUMBER">%s</xliff:g>-ზე"</string>
+    <string name="unknown" msgid="740067747858270469">"უცნობი"</string>
+    <string name="voicemail" msgid="3851469869202611441">"ხმოვანი ფოსტა"</string>
+    <string name="private_num" msgid="6374339738119166953">"დაფარული ნომერი"</string>
+    <string name="payphone" msgid="7726415831153618726">"გადახდის ტელეფონი"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> წმ"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> მინ <xliff:g id="SECONDS">%s</xliff:g> წამ"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ვერ ხორციელდება ამ ნომერზე დარეკვა"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ხმოვანი ფოსტის დასაყენებლად გადადით მენიუს &gt; პარამეტრებზე."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"ხმოვან ფოსტასთან დასაკავშირებლად პირველ რიგში გამორთეთ თვითმფრინავის რეჟიმი."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"იტვირთება…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"იტვირთება SIM ბარათიდან…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM ბარათის კონტაქტები"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"კონტაქტების აპლიკაცია არ არის ხელმისაწვდომი"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"ხმოვანი ძიება არ არის ხელმისაწვდომი"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"სატელეფონო ზარის განხორციელება ვერ ხერხდება, ვინაიდან ტელეფონის აპლიკაცია გაუქმებულია."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"ამ მოწყობილობაზე არ არის შესაბამისი აპლიკაცია"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"კონტაქტების ძიება"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"დაამატეთ ნომერი ან მოიძიეთ კონტაქტებიდან"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"თქვენი საუბრის ისტორია ცარიელია"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"დარეკვა"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"გამოტოვებული ზარები არ გაქვთ."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"თქვენი ხმოვანი ელფოსტის შემოსულები ცარიელია."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"მხოლოდ რჩეულების ჩვენება"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"საუბრის ისტორია"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"ყველა"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"გამოტოვებული"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"ხმოვანი ფოსტა"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"გსურთ, დაბლოკოთ <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ამ ნომრიდან შემოსული ზარები დაიბლოკება, ხოლო ხმოვანი ფოსტა ავტომატურად წაიშლება."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ამ ნომრიდან შემოსული ზარები დაიბლოკება, თუმცა აბონენტს მაინც შეეძლება თქვენთვის ხმოვანი ფოსტის დატოვება."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"დაბლოკვა"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"გსურთ, განბლოკოთ <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"ამ ნომრიდან შემომავალი ზარები აღარ დაიბლოკება."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"განბლოკვა"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"სწრაფი დარეკვა"</string>
+    <string name="tab_history" msgid="2563144697322434940">"საუბრის ისტორია"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"კონტაქტები"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"ხმოვანი ფოსტა"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"წაიშალა რჩეულებიდან"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"დაბრუნება"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"დარეკვა <xliff:g id="NUMBER">%s</xliff:g>-ზე"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ახალი კონტაქტის შექმნა"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"კონტაქტისადმი დამატება"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS-ის გაგზავნა"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ვიდეოზარის განხორციელება"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"ნომრის დაბლოკვა"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ახალი გაცდენილი ზარი"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"სწრაფი აკრეფისთვის რჩეულები ჯერ არ გყავთ"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"რჩეული კონტაქტის დამატება"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"კონტაქტები ჯერ არ გაქვთ"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"კონტაქტის დამატება"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"ყველა ნომრის სანახავად შეეხეთ სურათს ან და გეჭიროთ მასზე ხელახალი შეკვეთისათვის"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"ამოშლა"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ვიდეო ზარი"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"შეტყობინების გაგზავნა"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"ზარის მონაცემები"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-თან დარეკვა"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"გამოტოვებული ზარი აბონენტისგან: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"უპასუხო ზარი აბონენტისგან <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"წაუკითხავი ხმოვანი ფოსტა აბონენტისგან: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"ხმოვანი ფოსტა აბონენტისგან: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"ზარი აბონენტთან <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>-ზე"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"დარეკვა"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"დარეკვა <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"ვიდეო ზარი <xliff:g id="NAMEORNUMBER">^1</xliff:g>-თან."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-ის ხმოვანი ფოსტის მოსმენა"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-გან ხმოვანი ფოსტის მოსმენა"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-გან ხმოვანი ფოსტის დაპაუზება"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-გან ხმოვანი ფოსტის წაშლა"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ახალი ხმოვანი ფოსტა</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ახალი ხმოვანი ფოსტა</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-ისთვის კონტაქტის შექმნა"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-ის დამატება არსებულ კონტაქტზე"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ზარის დეტალები"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"ზარის ისტორიიდან წაშლილი"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"დღეს"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"გუშინ"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"უფრო ძველი"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"ზარების სია"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"სპიკერის ჩართვა."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"სპიკერის გამორთვა."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"დაკვრის აჩქარება."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"დაკვრის შენელება."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"დაკვრის დაწყება ან პაუზა."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ეკრანის პარამეტრები"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"კინო და ვიბრაცია"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"მარტივი წვდომა"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ტელეფონის ზარი"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ზარებზე ასევე ვიბრირება"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ციფერბლატის ტონები"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ციფერბლატის ტონის ხანგრძლივობა"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ჩვეულებრივი"</item>
+    <item msgid="6177579030803486015">"გრძელი"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"სწრაფი პასუხი"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"ზარები"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"ზარების დაბლოკვა"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"ზარების დაბლოკვა დროებით გამოირთო"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"ზარების დაბლოკვა გაითიშა, რადგან ბოლო 48 საათში ამ ტელეფონიდან საგანგებო სამსახურებს დაუკავშირდით. 48 საათის გასვლის შემდეგ ის ავტომატურად ჩაირთვება."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"ნომრების იმპორტი"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"სხვა აპების მეშვეობით თქვენ მიერ ადრე ზოგიერთი აბონენტის ხმოვან ფოსტაზე ავტომატური გადამისამართება მოინიშნა."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"ნომრების ნახვა"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"იმპორტი"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"იმპორტი ვერ მოხერხდა"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"ნომრის განბლოკვა"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"ნომრის დამატება"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ამ ნომრებიდან შემოსული ზარები დაიბლოკება, ხოლო ხმოვანი ფოსტა ავტომატურად წაიშლება."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ამ ნომრებიდან შემოსული ზარები დაიბლოკება, თუმცა აბონენტებს მაინც შეეძლებათ თქვენთვის ხმოვანი ფოსტის დატოვება."</string>
+    <string name="block_list" msgid="7760188925338078011">"დაბლოკილი ნომრები"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> არასწორია."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> უკვე დაბლოკილია."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"ზარების დაბლოკვა გაითიშა 48 საათით"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"გათიშულია, რადგან განხორციელდა საგანგებო ზარი."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"ანგარიშების გამოძახება"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ჩართვა"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"ნებართვების დაყენება"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"სწრაფი აკრეფის გასააქტიურებლად, ჩართეთ კონტაქტების ნებართვა."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"ზარების ჟურნალის სანახავად, ჩართეთ ტელეფონის ნებართვა."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"კონტაქტების სანახავად, ჩართეთ კონტაქტების ნებართვა."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"ხმოვან ფოსტაზე წვდომისთვის, ჩართეთ ტელეფონის ნებართვა."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"თქვენი კონტაქტების მოსაძებნად ჩართეთ კონტაქტების ნებართვები."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"ზარის განსახორციელებლად, ჩართეთ ტელეფონის ნებართვა."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ტელეფონის აპს სისტემის პარამეტრებში ჩაწერის ნებართვა არ აქვს."</string>
+</resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
new file mode 100644
index 0000000..bbc44a4
--- /dev/null
+++ b/res/values-kk-rKZ/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Телефон"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Телефон теру тақтасы"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Қоңыраулар тарихы"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Қате нөмір туралы есеп беру"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Нөмірді көшіру"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Транскрипцияны көшіру"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Нөмірді бөгеу"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгелген"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Нөмірге рұқсат беру"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгеуден шығарылған"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"КЕРІ ОРЫНДАУ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Жою"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Қоңырау алдында нөмірді өзгерту"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Қоңыраулар тарихын тазалау"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Дауыстық хабарды жою"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Дауыстық хабар жойылды"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"КЕРІ ҚАЙТАРУ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Қоңыраулар тарихын тазалау керек пе?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Бұл тарихтан барлық қоңырауларды жояды"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Қоңыраулар тарихы тазалануда…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Телефон"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Өткізіп алған қоңырау"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Өткізіп алынған жұмыс қоңырауы"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Қабылданбаған қоңыраулар"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> өткізіп алған қоңырау"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Кері қоңырау шалу"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Хабар"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> дауыстық хабар </item>
+      <item quantity="one">Дауыстық хабар</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Ойнау"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> жіберген жаңа дауыс-хабар"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Дауыстық хабарды ойнату мүмкін болмады"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Дауыстық хабар жүктелуде…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Дауыстық хабарды жүктеу мүмкін болмады"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Дауыс хабары бар қоңыраулар ғана"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Келген қоңыраулар ғана"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Шығыс қоңыраулары ғана"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Қабылданбаған қоңыраулар ғана"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Визуалды дауыстық хабар"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Нөмірге қоңырау шалмастан, дауыстық поштаңызды қараңыз және тыңдаңыз. Деректер ақысы алынуы мүмкін."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Параметрлер"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Дауыстық пошта жаңартулары қол жетімді емес"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Жаңа дауыстық хабар күтуде. Дәл қазір жүктеу мүмкін емес."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Дауыс-хабарды реттеу"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Аудио қол жетімді емес"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Орнату"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Дауыс-хабарға қоңырау шалу"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Нөмірді таңдау"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Нөмірді таңдау"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Бұл таңдау есте сақталсын."</string>
+    <string name="description_search_button" msgid="3660807558587384889">"іздеу"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"теру"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"теретін нөмір"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Ойнату немесе ойнатуды тоқтату"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Спикерфонды қосу немесе өшіру"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Ойнату орнын іздеу"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Ойнату жылдамдығын азайту"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Ойнату жылдамдығын арттыру"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Қоңырау тарихы"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Басқа опциялар"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"теру тақтасы"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Шығыс қоңырауларды ғана көрсету"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Келгендерді ғана көрсету"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Қабылданбағандарды ғана көрсету"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Дауыс-хабарларын ғана көрсету"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Барлық қоңырауларды көрсету"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2 сек үзіліс қосу"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Күтуді қосу"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Параметрлер"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Жаңа контакт"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Барлық контактілер"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Қоңырау деректері"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Мәліметтер қол жетімді емес"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Сенсорлы әуенді пернетақта"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Қосылып тұрған қоңырауға оралу"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Қоңырау қосу"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Келген қоңырау"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Шығыс қоңырау"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Қабылданбаған қоңырау"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Кіріс бейне қоңырау"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Шығыс бейне қоңырау"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Өткізіп алынған бейне қоңырау"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Дауыстық пошта"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Қабылданбаған қоңырау"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Тыйым салынған қоңырау"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Келген қоңыраулар"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Дауыс-хабарды ойнату"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> контактісін көру"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> нөміріне қоңырау шалу"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> контакт деректері"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> қоңыраулар."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Бейне қоңырау."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Мынаған SMS жіберу: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Естілмеген дауыс-хабар"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Дауыс іздеуді бастау"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> нөміріне қоңырау шалу"</string>
+    <string name="unknown" msgid="740067747858270469">"Белгісіз"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Дауыстық пошта"</string>
+    <string name="private_num" msgid="6374339738119166953">"Жеке нөмір"</string>
+    <string name="payphone" msgid="7726415831153618726">"Автомат-телефон"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Бұл нөмірге қоңырау шалу мүмкін емес"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Дауыс-хабарын жасақтау үшін Mәзір &gt; Параметрлер тармақтарына кіріңіз."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Дауыс-хабарына қоңырау шалу үшін ұшақ режимін өшіру қажет."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Жүктелуде..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI (Халықаралық мобильдік құрылғы анықтағышы)"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID (ұялы жабдық анықтағыш)"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM картасынан жүктеу…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM картасының контактілері"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Контактілер қолданбасы қол жетімді емес"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Дауыс арқылы іздеу қол жетімді емес"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Телефон қоңырауын шалу мүмкін емес, өйткені «Телефон» қолданбасы өшірілген."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Бұл үшін осы құрылғыда қолданба жоқ"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Контактілерді іздеу"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Нөмірді енгізіңіз немесе контактілерден іздеп табыңыз"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Қоңыраулар тарихы бос"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Қоңырау шалу"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Қабылданбаған қоңырауларды жоқ."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Дауыстық поштаның \"Кіріс\" қалтасы бос."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Сүйіктілерді ғана көрсету"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Қоңыраулар тарихы"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Барлық"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Қабылданбаған"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Дауыстық хабар"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгеу керек пе?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Осы нөмірден болашақ қоңыраулар бөгеледі және дауыстық хабарлар автоматты түрде жойылады."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Осы нөмірден қоңыраулар бөгеледі, бірақ қоңырау шалушы әлі де сізге дауыстық хабарлар қалдыра алуы мүмкін."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"БӨГЕУ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгеуден шығару керек пе?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Бұл нөмірдің сізге қоңырау соғуы енді бөгелмейді."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"БӨГЕУДЕН ШЫҒАРУ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Жылдам теру"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Қоңыраулар тарихы"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Контактілер"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Дауыстық хабар"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Сүйіктілерден алынған"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Кері орындау"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> нөміріне қоңырау шалу"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Жаңа контакт жасау"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Контактіге қосу"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS жіберу"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Бейне қоңырау шалу"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Нөмірді бөгеу"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> жаңа қабылданбаған қоңыраулар"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Жылдам теруде әлі ешкім жоқ"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Таңдаулыны қосу"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Әлі ешқандай контактілер жоқ"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Контакт қосу"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Барлық нөмірлерді көру үшін түртіңіз немесе ретін өзгерту үшін түртіп, ұстап тұрыңыз"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Алып тастау"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Бейне қоңырау"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Хабар жіберу"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Қоңырау мәліметтері"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> нөміріне қоңырау шалу"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> қоңырауы өткізіп алынды, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> қоңырауына жауап берілді, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Оқылмаған дауыстық хабар: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Дауыстық хабар: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> нөміріне қоңырау шалу, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> ішінде"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Қоңырау шалу"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> нөміріне қоңырау шалу"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> бейне қоңырау шалу."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дауыстық хабарын тыңдау"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дауыстық хабары ойнатылады"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дауыстық хабары кідіртіледі"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> жіберген дауыстық хабар жойылады"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> жаңа дауыс поштасы</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> жаңа дауыс поштасы</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> үшін контакт жасау"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> бар контактіге қосу"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> үшін қоңырау мәліметтері"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Қоңыраулар тарихынан жойылды"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Бүгін"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Кеше"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Ескілеу"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Қоңыраулар тізімі"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Динамикті қосу."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Динамикті өшіру."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Тезірек ойнату."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Баяуырақ ойнату."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Ойнатуды бастау немесе кідірту."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Көрсету опциялары"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Дыбыстар мен діріл"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Арнайы мүмкіндіктер"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Телефон қоңырау әуені"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Сондай-ақ, қоңыраулар үшін дірілдету"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Теру тақтасының үндері"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Теру тақтасы дыбысының ұзындығы"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Қалыпты"</item>
+    <item msgid="6177579030803486015">"Ұзақ"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Жылдам жауаптар"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Қоңыраулар"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Қоңырауларға тыйым салу"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Қоңырауларға тыйым салу уақытша өшірулі"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Қоңырауларға тыйым салу өшірілді, өйткені сіз соңғы 48 сағат ішінде осы телефоннан төтенше қызметтерге хабарластыңыз. Ол 48 сағаттық кезең өткеннен кейін автоматты түрде қайта қосылады."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Нөмірлерді импорттау"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Сіз бұрын кейбір қоңырау шалушыларды басқа қолданбалар арқылы дауыс поштасына автоматты түрде жіберу үшін белгілеген."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Нөмірлерді көру"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Импорттау"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Импорттау сәтсіз аяқталды"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Нөмірді бөгеуден шығару"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Нөмір қосу"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Осы нөмірлерден қоңыраулар бөгеледі және дауыстық хабарлар автоматты түрде жойылады."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Осы нөмірлерден қоңыраулар бөгеледі, бірақ олар әлі де сізге дауыстық хабарлар қалдыра алуы мүмкін."</string>
+    <string name="block_list" msgid="7760188925338078011">"Бөгелген нөмірлер"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> жарамсыз."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгеліп қойылған."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Қоңырауларға тыйым салу 48 сағат бойы өшірілген"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Өшірілген, өйткені төтенше қоңырау соғылған."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Есептік жазбаларға қоңыр. шалу"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Қосу"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Рұқсаттар орнату"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Жылдам теруді қосу үшін \"Контактілер\" рұқсатын қосыңыз."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Қоңыраулар журналы көру үшін \"Телефон\" рұқсатын қосыңыз."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Контактілерді көру үшін \"Контактілер\" рұқсатын қосыңыз."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Дауыс поштасына қатынасу үшін \"Телефон\" рұқсатын қосыңыз."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Контактілерді іздеу үшін \"Контактілер\" рұқсаттарын қосыңыз."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Қоңырауды шалу үшін \"Телефон\" рұқсатын қосыңыз."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Телефон қолданбасында жүйелік параметрлерге жазуға рұқсат жоқ."</string>
+</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
new file mode 100644
index 0000000..a74ffc2
--- /dev/null
+++ b/res/values-km-rKH/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ទូរស័ព្ទ"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ទូរសព្ទ"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"បន្ទះលេខទូរស័ព្ទ"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ទូរស័ព្ទ"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"ប្រវត្តិ​ហៅ"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"រាយការណ៍ពីលេខដែលមិនត្រឹមត្រូវ"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"ថតចម្លងលេខទូរស័ព្ទ"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ថតចម្លងសំណៅពីសារសម្លេង"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"រារាំងលេខ"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"បានរារាំង <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"ឈប់រារាំងលេខ"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"បានឈប់រារាំង <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"មិនធ្វើវិញ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"លុប"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"កែ​លេខ​មុន​ពេល​ហៅ"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"ជម្រះប្រវត្តិហៅ"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"លុប​សារ​ជា​សំឡេង"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"បានលុបសារសម្លេង"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"​មិន​ធ្វើវិញ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ជម្រះប្រវត្តិហៅ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"វានឹងលុបការហៅទាំងអស់ចេញពីប្រវត្តិរបស់អ្នក"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"កំពុងជម្រះប្រវត្តិហៅ…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ទូរស័ព្ទ"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"ខកខាន​ទទួល"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"បានខកខានការហៅចូលពីកន្លែងការងារ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"ខកខាន​ទទួល"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"ខកខានទទួល <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ដង"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"ហៅ​ទៅ​វិញ"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"សារ"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other">សារជាសម្លេង <xliff:g id="COUNT">%1$d</xliff:g> </item>
+      <item quantity="one">សារជាសម្លេង</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ចាក់"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"សារ​ជា​សំឡេង​ថ្មី​ពី <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"មិនអាចចាក់សារជាសម្លេងបានទេ"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"កំពុងផ្ទុកសារជាសម្លេង…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"មិនអាចផ្ទុកសារជាសម្លេងបានទេ"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"តែ​ការ​ហៅ​ជា​សារ​សំឡេង"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"តែ​ការ​ហៅ​ចូល"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"តែ​ការ​ហៅ​ចេញ​ប៉ុណ្ណោះ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"តែ​លេខ​ខកខាន​ទទួល"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"សារជាសំឡេងអាចមើលឃើញ"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"មើល និងស្តាប់សារជាសំឡេងរបស់អ្នក ដោយមិនចាំបាច់ហៅទៅលេខណាមួយឡើយ។ អាចគិតប្រាក់លើការប្រើប្រាស់ទិន្នន័យ។"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"ការកំណត់"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"មិនមានការអាប់ដេតសារជាសម្លេងទេ"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"សារជាសម្លេងថ្មីកំពុងរង់ចាំ។ មិនអាចផ្ទុកឥឡូវនេះបានទេ។"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"ដំឡើងសារជាសម្លេងរបស់អ្នក"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"មិនមានសម្លេងទេ"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"រៀបចំ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ហៅ​ជា​សារ​សំឡេង"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"ជ្រើស​លេខ"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"ជ្រើស​លេខ"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ចងចាំ​ជម្រើស​នេះ"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ស្វែងរក"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"dial"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"លេខ​ដែល​ត្រូវ​ហៅ"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"ចាក់ ឬ​បញ្ឈប់​ការ​ចាក់​ឡើងវិញ"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"បិទ ឬ​បើក​អូប៉ាល័រទូរស័ព្ទ"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"រកមើល​ទីតាំង​ចាក់​ឡើងវិញ"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"បន្ថយ​អត្រា​ចាក់​ឡើង​វិញ"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"បង្កើន​អត្រា​ចាក់​ឡើងវិញ"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"ប្រវត្តិ​ហៅ"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"ជម្រើស​បន្ថែម"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"បន្ទះ​លេខ"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"បង្ហាញ​តែ​ការ​ហៅ​ចេញ"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"បង្ហាញ​តែ​ការ​ហៅ​ចូល"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"បង្ហាញ​តែ​ការ​ខកខាន​ទទួល"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"បង្ហាញ​តែ​សារ​ជា​សំឡេង"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"បង្ហាញ​ការ​ហៅ​ទាំងអស់"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"បន្ថែម​ការ​ផ្អាក ២វិ."</string>
+    <string name="add_wait" msgid="3360818652790319634">"បញ្ចូល​ការ​រង់ចាំ"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"ការកំណត់"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"ទំនាក់ទំនង​ថ្មី"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"ទំនាក់ទំនង​ទាំងអស់"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"ព័ត៌មាន​លម្អិត​នៃ​ការ​ហៅ"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"មិនមានព័ត៌មានលំអិតទេ"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ប្រើ​សំឡេង​ប៉ះ​បន្ទះ​លេខ"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"កំពុង​ត្រឡប់​ទៅកាន់​ការ​ហៅ"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"បន្ថែម​ការ​ហៅ"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"ការ​ហៅ​ចូល"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"ការ​ហៅ​ចេញ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"ខកខាន​ទទួល"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ការ​ហៅចូលជា​វីដេអូ​"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"ការ​ហៅ​ជា​វីដេអូ​ចេញ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"ខកខាន​ទទួល​ការ​ហៅ​ជា​វីដេអូ"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"សារ​ជា​សំឡេង"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"ការហៅដែលបានបដិសេធ"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"ការហៅដែលបានរារាំង"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ការ​ហៅ​ចូល"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"ចាក់​សារ​ជា​សំឡេង"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"មើល​ទំ​នាក់ទំនង <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"ហៅ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"ព័ត៌មាន​លម្អិត​ទំនាក់ទំនង​សម្រាប់ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"ការ​ហៅ <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ។"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ការ​ហៅ​ជា​វីដេអូ​។"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"ផ្ញើសារ SMS ទៅ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"សារ​ជា​សំឡេង​ដែល​មិន​បាន​ឮ"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"ចាប់ផ្ដើម​ស្វែងរក​ជា​សំឡេង"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"ហៅ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"មិន​ស្គាល់"</string>
+    <string name="voicemail" msgid="3851469869202611441">"សារ​ជា​សំឡេង"</string>
+    <string name="private_num" msgid="6374339738119166953">"លេខ​ឯកជន"</string>
+    <string name="payphone" msgid="7726415831153618726">"ទូរស័ព្ទសាធារណៈ"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> វិនាទី"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> នាទី <xliff:g id="SECONDS">%s</xliff:g> វិនាទី"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> នៅម៉ោង <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"មិនអាចហៅលេខនេះបានទេ"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ដើម្បី​កំណត់​សារ​ជា​សំឡេង ចូល​ម៉ឺនុយ &gt; ការ​កំណត់។"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"ដើម្បី​ហៅ​សារ​ជា​សំឡេង ដំបូង​ត្រូវ​បិទ​របៀប​ពេល​ជិះ​យន្តហោះ។"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"កំពុង​ផ្ទុក..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"កំពុង​ផ្ទុក​ពី​ស៊ីម​កាត..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"ទំនាក់ទំនង​នៅ​ក្នុង​ស៊ីម​កាត"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"មិនមានកម្មវិធីទំនាក់ទំនងទេ"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"ការស្វែងរកជាសម្លេងមិនមានទេ"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"មិន​អាច​ហៅ​បាន​ទេ​ ព្រោះ​កម្មវិធី​ទូរស័ព្ទ​ត្រូវ​បាន​បិទ។"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"មិនមានកម្មវិធីសម្រាប់សកម្មភាពនេះនៅលើឧបករណ៍នេះទេ"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"ស្វែងរកទំនាក់ទំនង"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"បន្ថែមលេខទូរស័ព្ទ ឬស្វែងរកទំនាក់ទំនង"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"ប្រវត្តិហៅរបស់អ្នកទទេ"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"ហៅទូរស័ព្ទ"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"អ្នកមិនមានការខកខានទទួលទូរស័ព្ទទេ។"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"ប្រអប់ទទួលសារជាសំឡេងរបស់អ្នកទទេ។"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"បង្ហាញ​តែ​​និយម​ប្រើ​ប៉ុណ្ណោះ"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"ប្រវត្តិហៅ"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"ទាំង​អស់"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"ខកខាន​ទទួល"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"សារ​ជា​សំឡេង"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"រារាំង <xliff:g id="NUMBER">%1$s</xliff:g> ឬ?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ការហៅចេញពីលេខនេះនឹងត្រូវបានរារាំង ហើយសារជាសំឡេងនឹងត្រូវបានលុបដោយស្វ័យប្រវត្តិ។"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ការហៅចេញពីលេខនេះនឹងត្រូវបានរារាំង ប៉ុន្តែអ្នកហៅនៅតែអាចទុកសារជាសំឡេងឲ្យអ្នកបាន។"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"រារាំង"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"ឈប់រារាំង <xliff:g id="NUMBER">%1$s</xliff:g> ឬ?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"លេខនេះនឹងមិនត្រូវបានរារាំងពីការហៅមកអ្នកទៀតទេ"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ឈប់រារាំង"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"ហៅទូរស័ព្ទល្បឿនលឿន"</string>
+    <string name="tab_history" msgid="2563144697322434940">"ប្រវត្តិហៅ"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"ទំនាក់ទំនង"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"សារជាសំឡេង"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"បាន​លុប​ចេញពី​ទំនាក់ទំនង​ដែល​និយម​ប្រើ"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"មិនធ្វើវិញ"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"ហៅ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"បង្កើតទំនាក់ទំនងថ្មី"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"បន្ថែមទៅទំនាក់ទំនង"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ផ្ញើសារ SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ការ​ហៅ​ជា​វីដេអូ"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"រារាំងលេខ"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"ខកខាន​ទទួល​ថ្មី <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"គ្មាននរណាម្នាក់នៅក្នុងការហៅរហ័សរបស់អ្នកនៅឡើយទេ"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"បន្ថែមសំណព្វ"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"អ្នកមិនទាន់មានទំនាក់ទំនងនៅឡើយទេ"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"បន្ថែមទំនាក់ទំនង"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"ប៉ះរូបភាពដើម្បីមើលលេខទាំងអស់ ឬប៉ះ &amp; សង្កត់ឲ្យជាប់ដើម្បីតម្រៀបឡើងវិញ"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"លុបចេញ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ហៅជាវីដេអូ"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"ផ្ញើសារ"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"ព័ត៌មានលម្អិតនៃការហៅ"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"ហៅ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"ខកខានទទួលកាហៅពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>។"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"បានឆ្លើយតបការហៅពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>។"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"សារជាសំឡេងដែលមិនទាន់អានពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"សារជាសំឡេងពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"ហៅទៅ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>។"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"នៅ <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ហៅ"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"ហៅ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"ហៅទៅ <xliff:g id="NAMEORNUMBER">^1</xliff:g> ជាវីដេអូ។"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"ស្ដាប់​សារ​ជា​សំឡេង​ពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"ចាក់ការហៅជាសំឡេងពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"ផ្អាកសារជាសំឡេងពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"លុបសារជាសំឡេងពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other">សារជាសំឡេងថ្មី <xliff:g id="COUNT_1">%d</xliff:g></item>
+      <item quantity="one">សារជាសំឡេងថ្មី <xliff:g id="COUNT_0">%d</xliff:g></item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"បង្កើតទំនាក់ទំនងសម្រាប់ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"បន្ថែម <xliff:g id="NAMEORNUMBER">^1</xliff:g> ទៅទំនាក់ទំនងដែលមានស្រាប់"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"ព័ត៌មាន​លម្អិត​ហៅ​សម្រាប់ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"បានលុបចេញពីប្រវត្តិហៅ"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ថ្ងៃនេះ"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ម្សិលមិញ"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"ចាស់ៗ"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"បញ្ជីការហៅ"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"បើក​អូប៉ាល័រ។"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"បិទ​អូប៉ាល័រ។"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"ចាក់​កាន់តែ​លឿន"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"ចាក់​កាន់តែ​យឺត។"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ចាប់ផ្ដើម ឬ​ផ្អាក​ការ​ចាក់​ឡើងវិញ។"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ជម្រើសបង្ហាញ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"សម្លេង និងភាពរំញ័រ"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"លទ្ធភាពប្រើប្រាស់"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"សំឡេង​រោទ៍​ទូរស័ព្ទ"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ញ័រ​សម្រាប់​ការ​ហៅ​ផងដែរ"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"សំឡេង​បន្ទះ​លេខ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"រយៈពេលនៃសម្លេងបន្ទះលេខ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ធម្មតា"</item>
+    <item msgid="6177579030803486015">"វែង"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ឆ្លើយតប​រហ័ស"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"ការហៅ"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"ការរារាំងការហៅ"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"ការរារាំងការហៅត្រូវបានបិទជាបណ្តោះអាសន្ន"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"ការរារាំងការហៅត្រូវបានបិទដំណើរការ ដោយសារតែអ្នកបានទាក់ទងទៅសេវាអាសន្នចេញពីទូរស័ព្ទនេះក្នុងចន្លោះពេល 48 ម៉ោងកន្លងមកនេះ។ វានឹងបើកដំណើរការឡើងវិញ បន្ទាប់ពីរយៈពេល 48 ម៉ោងផុតកំណត់។"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"នាំចូលលេខ"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"កាលពីមុនអ្នកបានដាក់សម្គាល់ឲ្យបញ្ជូនអ្នកហៅមួយចំនួនដោយស្វ័យប្រវត្តិទៅកាន់សារជាសំឡេងតាមរយៈកម្មវិធីផ្សេងទៀត។"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"មើលលេខ"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"នាំចូល"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"ការនាំចូលបានបរាជ័យ"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"ឈប់ទប់ស្កាត់លេខ"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"បន្ថែមលេខ"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ការហៅចេញពីលេខទាំងនេះនឹងត្រូវបានរារាំង ហើយសារជាសំឡេងនឹងត្រូវបានលុបដោយស្វ័យប្រវត្តិ។"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ការហៅចេញពីលេខទាំងនេះនឹងត្រូវបានរារាំង ប៉ុន្តែពួកគេនៅតែអាចទុកសារជាសំឡេងឲ្យអ្នកបាន។"</string>
+    <string name="block_list" msgid="7760188925338078011">"លេខដែលបានរារាំង"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> មិនត្រឹមត្រូវទេ"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ត្រូវបានទប់ស្កាត់រួចហើយ"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"ការរារាំងការហៅត្រូវបានបិទដំណើរការរយៈពេល 48 ម៉ោង"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"បានបិទដំណើរការពីព្រោះការហៅបន្ទាន់ត្រូវបានធ្វើឡើង"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"គណនីហៅទូរស័ព្ទ"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"បើក"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"កំណត់សិទ្ធិអនុញ្ញាត"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"ដើម្បីបើកដំណើរការហៅរហ័ស សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"ដើម្បីមើលកំណត់ហេតុហៅទូរស័ព្ទរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"ដើម្បីមើលទំនាក់ទំនងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"ដើម្បីចូលដំណើរការសារជាសំឡេងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"ដើម្បីស្វែងរកទំនាក់ទំនងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតទំនាក់ទំនង។"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"ដើម្បីធ្វើការហៅទូរស័ព្ទ សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"កម្មវិធីទូរស័ព្ទមិនមានសិទ្ធិអនុញ្ញាតដើម្បីសរសេរការកំណត់ប្រព័ន្ធទេ។"</string>
+</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
new file mode 100644
index 0000000..bcac9e1
--- /dev/null
+++ b/res/values-kn-rIN/strings.xml
@@ -0,0 +1,256 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ಫೋನ್"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ಫೋನ್"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ಫೋನ್ ಡಯಲ್‌ಪ್ಯಾಡ್"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ಫೋನ್"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"ಕರೆ ಇತಿಹಾಸ"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"ನಿಖರವಾಗಿಲ್ಲದ ಸಂಖ್ಯೆಯನ್ನು ವರದಿಮಾಡಿ"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"ಸಂಖ್ಯೆಯನ್ನು ನಕಲಿಸಿ"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಶನ್ ನಕಲಿಸಿ"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸು"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"ಸಂಖ್ಯೆಯನ್ನು ಅನಿರ್ಬಂಧಿಸು"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> ನಿರ್ಬಂಧ ತೆಗೆಯಲಾಗಿದೆ"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ರದ್ದುಮಾಡು"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"ಅಳಿಸು"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"ಕರೆ ಮಾಡುವ ಮೊದಲು ಸಂಖ್ಯೆಯನ್ನು ಸಂಪಾದಿಸಿ"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"ಕರೆ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ಧ್ವನಿಮೇಲ್‌ ಅಳಿಸಿ"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"ಧ್ವನಿಮೇಲ್ ಅಳಿಸಲಾಗಿದೆ"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ರದ್ದುಮಾಡು"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ಕರೆ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸುವುದೇ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ಇದು ನಿಮ್ಮ ಇತಿಹಾಸದಿಂದ ಎಲ್ಲಾ ಕರೆಗಳನ್ನು ಅಳಿಸುತ್ತದೆ"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ಕರೆ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ಫೋನ್"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"ತಪ್ಪಿದ ಕರೆ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"ತಪ್ಪಿದ ಕೆಲಸದ ಕರೆ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"ತಪ್ಪಿದ ಕರೆಗಳು"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ತಪ್ಪಿದ ಕರೆಗಳು"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"ಮರಳಿ ಕರೆ"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"ಸಂದೇಶ"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ಪ್ಲೇ ಮಾಡು"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> ಇವರಿಂದ ಹೊಸ ಧ್ವನಿಮೇಲ್‌"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"ಧ್ವನಿಮೇಲ್‌ ಪ್ಲೇ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"ಧ್ವನಿಮೇಲ್‌ ಲೋಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"ಧ್ವನಿಮೇಲ್‌ ಲೋಡ್‌ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"ಧ್ವನಿಮೇಲ್‌ ಕರೆಗಳು ಮಾತ್ರ"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"ಒಳಬರುವ ಕರೆಗಳು ಮಾತ್ರ"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"ಹೊರಹೋಗುವ ಕರೆಗಳು ಮಾತ್ರ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"ತಪ್ಪಿದ ಕರೆಗಳು ಮಾತ್ರ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"ಸಂಖ್ಯೆಗೆ ಕರೆ ಮಾಡದೆಯೇ ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ಆಲಿಸಿ. ಡೇಟಾ ಶುಲ್ಕಗಳು ಅನ್ವಯಿಸಬಹುದು."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"ಧ್ವನಿಮೇಲ್‌ ಅಪ್‌ಡೇಟ್‌ಗಳು ಇದೀಗ ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"ಹೊಸ ಧ್ವನಿಮೇಲ್ ಕಾಯುತ್ತಿದೆ. ಇದೀಗ ಲೋಡ್‌ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್‌ ಹೊಂದಿಸಿ"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ಆಡಿಯೋ ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"ಹೊಂದಿಸು"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ಧ್ವನಿಮೇಲ್‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"ಸಂಖ್ಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"ಸಂಖ್ಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ಈ ಆಯ್ಕೆಯನ್ನು ನೆನಪಿಡಿ"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ಹುಡುಕಾಟ"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ಡಯಲ್‌"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ಡಯಲ್‌ ಮಾಡಬೇಕಾದ ಸಂಖ್ಯೆ"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"ಪ್ಲೇಬ್ಯಾಕ್ ಅನ್ನು ಪ್ಲೇ ಮಾಡಿ ಅಥವಾ ನಿಲ್ಲಿಸಿ"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"ಸ್ಪೀಕರ್‌ಫೋನ್ ಸ್ವಿಚ್ ಆನ್ ಅಥವಾ ಆಫ್ ಮಾಡಿ"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"ಪ್ಲೇಬ್ಯಾಕ್ ಸ್ಥಾನವನ್ನು ಪಡೆಯಿರಿ"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"ಪ್ಲೇಬ್ಯಾಕ್ ರೇಟ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡು"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"ಪ್ಲೇಬ್ಯಾಕ್ ರೇಟ್ ಅನ್ನು ಹೆಚ್ಚು ಮಾಡು"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"ಕರೆ ಇತಿಹಾಸ"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ಡಯಲ್‌ ಪ್ಯಾಡ್‌"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"ಹೊರಹೋಗುವುದನ್ನು ಮಾತ್ರ ತೋರಿಸು"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"ಒಳಬರುವುದನ್ನು ಮಾತ್ರ ತೋರಿಸು"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"ತಪ್ಪಿಹೋದದ್ದನ್ನು ಮಾತ್ರ ತೋರಿಸು"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಮಾತ್ರ ತೋರಿಸು"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"ಎಲ್ಲಾ ಕರೆಗಳನ್ನು ತೋರಿಸು"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-ಸೆ ವಿರಾಮವನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="add_wait" msgid="3360818652790319634">"ನಿರೀಕ್ಷೆಯನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"ಹೊಸ ಸಂಪರ್ಕ"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"ಕರೆಯ ವಿವರಗಳು"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"ವಿವರಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ಸ್ಪರ್ಶ ಟೋನ್ ಕೀಪ್ಯಾಡ್ ಬಳಸಿ"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"ಪ್ರತ್ಯತ್ತರ ಕರೆಯು ಪ್ರಗತಿಯಲ್ಲಿದೆ"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"ಕರೆಯನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"ಒಳಬರುವ ಕರೆ"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"ಹೊರಹೋಗುವ ಕರೆ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"ಮಿಸ್ಡ್‌ ಕಾಲ್‌"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ಒಳಬರುವ ವೀಡಿಯೊ ಕರೆ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"ಹೊರಹೋಗುವ ವೀಡಿಯೊ ಕರೆ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"ಮಿಸ್ಡ್‌ ವೀಡಿಯೊ ಕಾಲ್‌"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"ಧ್ವನಿಮೇಲ್"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"ನಿರಾಕರಿಸಿದ ಕರೆ"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"ನಿರ್ಬಂಧಿಸಿದ ಕರೆ"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ಒಳಬರುವ ಕರೆಗಳು"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"ಧ್ವನಿಮೇಲ್‌ ಪ್ಲೇ ಮಾಡಿ"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> ಸಂಪರ್ಕ ವೀಕ್ಷಿಸಿ"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> ಕರೆ ಮಾಡಿ"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕ ವಿವರಗಳು"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ಕರೆಗಳು."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ವೀಡಿಯೊ ಕರೆ."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> ಅವರಿಗೆ SMS ಕಳುಹಿಸಿ"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ಆಲಿಸಲಾಗದ ಧ್ವನಿಮೇಲ್‌"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"ಧ್ವನಿ ಹುಡುಕಾಟ ಪ್ರಾರಂಭಿಸಿ"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> ಕರೆ ಮಾಡಿ"</string>
+    <string name="unknown" msgid="740067747858270469">"ಅಜ್ಞಾತ"</string>
+    <string name="voicemail" msgid="3851469869202611441">"ಧ್ವನಿಮೇಲ್"</string>
+    <string name="private_num" msgid="6374339738119166953">"ಖಾಸಗಿ ಸಂಖ್ಯೆ"</string>
+    <string name="payphone" msgid="7726415831153618726">"ಪೇಫೋನ್"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> ಸೆಕೆಂ"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> ನಿಮಿ <xliff:g id="SECONDS">%s</xliff:g> ಸೆಕೆಂ"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> ರಂದು <xliff:g id="TIME">%2$s</xliff:g> ಗಂಟೆಗೆ"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ಈ ಸಂಖ್ಯೆಗೆ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ಧ್ವನಿಮೇಲ್‌ ಹೊಂದಿಸಲು, ಮೆನು &gt; ಸೆಟ್ಟಿಂಗ್‌ಗಳುಗೆ ಹೋಗಿ."</string>
+    <!-- no translation found for dialog_voicemail_airplane_mode_message (530922773669546093) -->
+    <skip />
+    <string name="contact_list_loading" msgid="5488620820563977329">"ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"ಸಿಮ್‌ ಕಾರ್ಡ್‌ನಿಂದ ಲೋಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"ಸಿಮ್‌ ಕಾರ್ಡ್‌ ಸಂಪರ್ಕಗಳು"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"ಯಾವುದೇ ಸಂಪರ್ಕಗಳ ಅಪ್ಲಿಕೇಶನ್‌ ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"ಧ್ವನಿ ಹುಡುಕಾಟ ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ಫೋನ್ ಅಪ್ಲಿಕೇಶನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುವುದರಿಂದ ಫೋನ್ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"ಈ ಸಾಧನದಲ್ಲಿ ಅದಕ್ಕಾಗಿ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಲ್ಲ"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಿ"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"ಸಂ. ಸೇರಿಸಿ ಅಥವಾ ಸಂಪರ್ಕ ಹುಡುಕಿ"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"ನಿಮ್ಮ ಕರೆ ಇತಿಹಾಸ ಖಾಲಿಯಾಗಿದೆ"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"ಕರೆ ಮಾಡಿ"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"ನೀವು ಯಾವುದೇ ತಪ್ಪಿದ ಕರೆಗಳನ್ನು ಹೊಂದಿಲ್ಲ."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಇನ್‌ಬಾಕ್ಸ್ ಖಾಲಿ ಇದೆ."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"ಮೆಚ್ಚಿನವುಗಳನ್ನು ಮಾತ್ರ ತೋರಿಸು"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"ಕರೆ ಇತಿಹಾಸ"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"ಎಲ್ಲಾ ಕರೆಗಳು"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"ಮಿಸ್ಡ್‌‌ ಕರೆಗಳು"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"ಧ್ವನಿಮೇಲ್"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> ನಿರ್ಬಂಧಿಸುವುದೇ?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ಈ ಸಂಖ್ಯೆಗೆ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ಈ ಸಂಖ್ಯೆಗೆ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುವುದು, ಆದರೆ ಕರೆಮಾಡುವವರು ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಈಗಲೂ ನಿಮಗೆ ಕಳುಹಿಸಬಹುದು."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ನಿರ್ಬಂಧಿಸು"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> ನಿರ್ಬಂಧ ತೆಗೆಯುವುದೇ?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"ನಿಮಗೆ ಕರೆ ಮಾಡುವಿಕೆಯ ಈ ಸಂಖ್ಯೆಯನ್ನು ಇನ್ನು ಮುಂದೆ ನಿರ್ಬಂಧಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ನಿರ್ಬಂಧ ತೆಗೆ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"ಸ್ಪೀಡ್ ಡಯಲ್"</string>
+    <string name="tab_history" msgid="2563144697322434940">"ಕರೆ ಇತಿಹಾಸ"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"ಸಂಪರ್ಕಗಳು"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"ಧ್ವನಿಮೇಲ್"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"ಮೆಚ್ಚಿನವುಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"ರದ್ದುಮಾಡು"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ಕರೆ ಮಾಡಿ"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ಹೊಸ ಸಂಪರ್ಕ ರಚಿಸು"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"ಸಂಪರ್ಕಕ್ಕೆ ಸೇರಿಸು"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS ಕಳುಹಿಸು"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ವೀಡಿಯೊ ಕರೆ ಮಾಡಿ"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸು"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ಹೊಸ ತಪ್ಪಿದ ಕರೆಗಳು"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"ನಿಮ್ಮ ವೇಗದ ಡಯಲ್‌ನಲ್ಲಿ ಇದುವರೆಗೆ ಯಾರೂ ಇಲ್ಲ"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"ಮೆಚ್ಚಿನದನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"ನೀವು ಇನ್ನೂ ಯಾವುದೇ ಸಂಪರ್ಕಗಳನ್ನು ಹೊಂದಿಲ್ಲ"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"ಸಂಪರ್ಕ ಸೇರಿಸಿ"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"ಎಲ್ಲ ಸಂಖ್ಯೆಗಳನ್ನು ನೋಡಲು ಚಿತ್ರವನ್ನು ಸ್ಫರ್ಶಿಸಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಲು ಸ್ಪರ್ಶಿಸಿ &amp; ಹೋಲ್ಡ್‌ ಮಾಡಿ"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"ತೆಗೆದುಹಾಕು"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ವೀಡಿಯೊ ಕರೆ"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"ಸಂದೇಶ ಕಳುಹಿಸಿ"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"ಕರೆಯ ವಿವರಗಳು"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಕರೆ ಮಾಡಿ"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ರಿಂದ ತಪ್ಪಿದ ಕರೆ."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ರಿಂದ ಕರೆಗೆ ಉತ್ತರಿಸಲಾಗಿದೆ."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ರಿಂದ ಓದದಿರುವ ಧ್ವನಿಮೇಲ್."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ರಿಂದ ಧ್ವನಿಮೇಲ್."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ಗೆ ಕರೆ."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> ನಲ್ಲಿ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ಕರೆಮಾಡಿ"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಕರೆ ಮಾಡಿ"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಗೆ ವೀಡಿಯೊ ಕರೆ ಮಾಡಿ."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ರಿಂದ ಧ್ವನಿಮೇಲ್ ಆಲಿಸಿ"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ರಿಂದ ಧ್ವನಿಮೇಲ್ ಪ್ಲೇ ಮಾಡಿ"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ನಿಂದ ಧ್ವನಿಮೇಲ್ ವಿರಾಮಗೊಳಿಸಿ"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ನಿಂದ ಧ್ವನಿಮೇಲ್ ಅಳಿಸಿ"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ಹೊಸ ಧ್ವನಿಮೇಲ್‌ಗಳು</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ಹೊಸ ಧ್ವನಿಮೇಲ್‌ಗಳು</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಗೆ ಸಂಪರ್ಕವನ್ನು ರಚಿಸಿ"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಂಪರ್ಕಕ್ಕೆ <xliff:g id="NAMEORNUMBER">^1</xliff:g> ಸೇರಿಸಿ"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಗೆ ಸಂಪರ್ಕದ ವಿವರಗಳು"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"ಕರೆ ಇತಿಹಾಸದಿಂದ ಅಳಿಸಲಾಗಿದೆ"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ಇಂದು"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ನಿನ್ನೆ"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"ಹಳೆಯದು"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"ಕರೆಗಳ ಪಟ್ಟಿ"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"ಸ್ಪೀಕರ್ ಆನ್ ಮಾಡಿ."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"ಸ್ಪೀಕರ್ ಆಫ್ ಮಾಡಿ."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"ವೇಗವಾಗಿ ಪ್ಲೇ ಮಾಡಿ."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"ನಿಧಾನವಾಗಿ ಪ್ಲೇ ಮಾಡಿ."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ಪ್ಲೇಬ್ಯಾಕ್‌ ಪ್ರಾರಂಭಿಸಿ ಅಥವಾ ವಿರಾಮಗೊಳಿಸಿ."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳು"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ಧ್ವನಿ ಮತ್ತು ವೈಬ್ರೇಷನ್‌"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ಪ್ರವೇಶಿಸುವಿಕೆ"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ಫೋನ್ ರಿಂಗ್‌ಟೋನ್"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ಕರೆಗಳಿಗೂ ಸಹ ವೈಬ್ರೇಟ್‌"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ಡಯಲ್‌ಪ್ಯಾಡ್‌ ಟೋನ್‌ಗಳು"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ಡಯಲ್‌ಪ್ಯಾಡ್‌ ಟೋನ್ ಅಳತೆ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ಸಾಮಾನ್ಯ"</item>
+    <item msgid="6177579030803486015">"ದೀರ್ಘವಾದ"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ತ್ವರಿತ ಪ್ರತಿಕ್ರಿಯೆಗಳು"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"ಕರೆಗಳು"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ ತಾತ್ಕಾಲಿಕ ಆಫ್ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"ನೀವು ಕಳೆದ 48 ಗಂಟೆಗಳಲ್ಲಿ ಈ ಫೋನ್‌ನಿಂದ ತುರ್ತು ಸೇವೆಗಳಿಗೆ ಸಂಪರ್ಕಿಸಿರುವ ಕಾರಣದಿಂದ ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಒಮ್ಮೆ 48 ಗಂಟೆಗಳ ಅವಧಿಯು ಮುಕ್ತಾಯಗೊಂಡ ನಂತರ ಅದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಸಕ್ರಿಯಗೊಳಿಸಲಾಗುವುದು."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"ಸಂಖ್ಯೆಗಳನ್ನು ಆಮದು ಮಾಡಿ"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"ನೀವು ಈ ಹಿಂದೆ ಗುರುತು ಮಾಡಲಾದ ಕೆಲವು ಕಾಲರ್‌ಗಳನ್ನು ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಮೂಲಕ ಧ್ವನಿಮೇಲ್‌ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸಲಾಗುತ್ತದೆ."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"ಸಂಖ್ಯೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"ಆಮದು ಮಾಡಿ"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"ಆಮದು ವಿಫಲವಾಗಿದೆ"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"ಸಂಖ್ಯೆಯನ್ನು ಅನಿರ್ಬಂಧಿಸು"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ಈ ಸಂಖ್ಯೆಗಳಿಗೆ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ಈ ಸಂಖ್ಯೆಗಳಿಗೆ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುವುದು, ಆದರೆ ಅವರು ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಈಗಲೂ ನಿಮಗೆ ಕಳುಹಿಸಬಹುದು."</string>
+    <string name="block_list" msgid="7760188925338078011">"ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಖ್ಯೆಗಳು"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> ಅಮಾನ್ಯವಾಗಿದೆ."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ಈಗಾಗಲೇ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ 48 ಗಂಟೆಗಳವರೆಗೆ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"ತುರ್ತು ಕರೆಯನ್ನು ಮಾಡಿರುವ ಕಾರಣದಿಂದ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ಆನ್ ಮಾಡು"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"ಅನುಮತಿಗಳನ್ನು ಹೊಂದಿಸು"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"ವೇಗ ಡಯಲ್ ಸಕ್ರಿಯಗೊಳಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"ನಿಮ್ಮ ಕರೆಯ ಲಾಗ್ ಅನ್ನು ವೀಕ್ಷಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪ್ರವೇಶಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಗಳನ್ನು ಆನ್ ಮಾಡಿ."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"ಕರೆ ಮಾಡಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ಸಿಸ್ಟಂ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಬರೆಯಲು ಫೋನ್ ಅಪ್ಲಿಕೇಶನ್ ಅನುಮತಿಯನ್ನು ಹೊಂದಿಲ್ಲ."</string>
+</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
new file mode 100644
index 0000000..51f9099
--- /dev/null
+++ b/res/values-ko/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"전화"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"전화"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"전화 다이얼패드"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"휴대전화"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"통화 기록"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"잘못된 번호 신고하기"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"전화번호 복사"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"텍스트 변환 복사"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"번호 차단"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> 차단됨"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"번호 차단 해제"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> 차단 해제됨"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"실행취소"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"삭제"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"통화하기 전에 번호 수정"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"통화 기록 삭제"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"음성사서함 삭제"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"음성사서함 삭제됨"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"실행취소"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"통화 기록을 삭제하시겠습니까?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"모든 통화가 기록에서 삭제됩니다."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"통화 기록을 삭제하는 중…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"전화"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"부재중 전화"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"부재중 업무 통화"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"부재중 전화"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"부재중 전화 <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>통"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"전화 걸기"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"메시지"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other">음성메일 <xliff:g id="COUNT">%1$d</xliff:g>개</item>
+      <item quantity="one">음성메일</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"재생"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>님이 보낸 새 음성사서함"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"음성사서함을 재생할 수 없습니다."</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"음성사서함 로드 중…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"음성사서함을 로드할 수 없습니다."</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"음성사서함 메시지만"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"수신 전화만"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"발신 전화만"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"부재중 전화만"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"시각적 음성사서함"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"전화를 걸지 않고도 음성사서함을 확인하고 들을 수 있습니다. 데이터 요금이 부과될 수 있습니다."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"설정"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"음성사서함 업데이트를 사용할 수 없습니다."</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"새로운 음성사서함이 대기 중이지만 현재 로드할 수 없습니다."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"음성사서함 설정"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"오디오가 지원되지 않습니다."</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"설정"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"음성사서함 연결"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"<xliff:g id="DATE">%2$s</xliff:g>에 통화 <xliff:g id="COUNT">%1$d</xliff:g>통"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"번호 선택"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"번호 선택"</string>
+    <string name="make_primary" msgid="5829291915305113983">"이 선택사항 저장"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"검색"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"전화걸기"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"전화를 걸 번호"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"재생 실행 또는 중지"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"스피커폰 켜고 끄기"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"재생 위치 찾기"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"재생 속도 낮추기"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"재생 속도 높이기"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"통화 기록"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"옵션 더보기"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"다이얼패드"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"발신 전화만 표시"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"수신 전화만 표시"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"부재중 전화만 표시"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"음성사서함만 표시"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"모든 통화 표시"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2초 간 일시 정지 추가"</string>
+    <string name="add_wait" msgid="3360818652790319634">"대기 시간 추가"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"설정"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"새 연락처"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"전체 주소록"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"통화 세부정보"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"세부정보를 사용할 수 없습니다."</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"터치톤 키패드 사용"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"진행 중인 통화로 돌아가기"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"통화 추가"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"수신전화"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"발신전화"</string>
+    <string name="type_missed" msgid="2720502601640509542">"부재중 전화"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"수신 화상 통화"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"발신 화상 통화"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"부재중 화상 통화"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"음성사서함"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"거부된 통화"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"차단된 통화"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"수신전화"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"음성사서함 재생"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g>님의 연락처 보기"</string>
+    <string name="description_call" msgid="3443678121983852666">"전화하기:<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>의 연락처 세부정보"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"통화 횟수: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>번"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"화상 통화"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g>님에게 SMS 보내기"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"듣지 않은 음성사서함"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"음성 검색 시작"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>에 전화"</string>
+    <string name="unknown" msgid="740067747858270469">"알 수 없음"</string>
+    <string name="voicemail" msgid="3851469869202611441">"음성사서함"</string>
+    <string name="private_num" msgid="6374339738119166953">"비공개 번호"</string>
+    <string name="payphone" msgid="7726415831153618726">"공중전화"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g>초"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g>분 <xliff:g id="SECONDS">%s</xliff:g>초"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"이 번호로 전화를 걸 수 없습니다."</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"음성사서함을 설정하려면 메뉴 &gt; 설정으로 이동하세요."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"음성사서함에 메시지를 남기려면 먼저 비행기 모드를 해제하세요."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"로드 중…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM 카드에서 로딩 중..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM 카드 주소록"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"사용할 수 있는 주소록 앱이 없습니다."</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"음성검색이 지원되지 않습니다."</string>
+    <string name="call_not_available" msgid="8941576511946492225">"전화 애플리케이션을 사용 중지했으므로 전화를 걸 수 없습니다."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"이 기기에 작업을 처리할 수 있는 앱이 없습니다."</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"연락처 검색"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"번호 추가 또는 연락처 검색"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"통화 기록이 비어있습니다."</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"전화 걸기"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"부재중 전화가 없습니다."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"음성사서함 받은편지함이 비어 있습니다."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"즐겨찾는 연락처만 표시"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"통화 기록"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"전체"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"부재중 전화"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"음성사서함"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g>번을 차단할까요?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"이 번호에서 걸려오는 전화가 차단되며 음성사서함이 자동으로 삭제됩니다."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"이 번호에서 걸려오는 전화가 차단되지만, 발신자가 음성사서함에 메시지를 남길 수는 있습니다."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"차단"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g>번을 차단 해제할까요?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"이 번호가 더 이상 내게 전화하는 것을 차단하지 않습니다."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"차단 해제"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"단축번호"</string>
+    <string name="tab_history" msgid="2563144697322434940">"통화 기록"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"주소록"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"음성사서함"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"즐겨찾기에서 삭제됨"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"실행취소"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>에 전화"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"새 연락처 만들기"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"연락처에 추가"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS 보내기"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"화상 통화하기"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"번호 차단"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"새로운 부재중 전화 <xliff:g id="NUMBER">%s</xliff:g>건"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"아직 단축 다이얼이 설정된 연락처가 없습니다."</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"단축 다이얼 추가"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"아직 연락처가 없습니다."</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"연락처 추가"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"이미지를 터치하여 모든 번호를 확인하거나 길게 터치하여 재정렬합니다."</string>
+    <string name="remove_contact" msgid="1080555335283662961">"삭제"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"화상 통화"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"메시지 보내기"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"통화 세부정보"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에 전화 걸기"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>의 부재중 전화(<xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에게 걸려온 수신 전화(<xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>에서 보낸 읽지 않은 음성사서함"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>에서 보낸 음성사서함"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에게 건 전화(<xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> 계정"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"통화"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에 전화 걸기"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에 화상 통화 걸기"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> 음성사서함 듣기"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에서 발신한 음성사서함 재생"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에서 발신한 음성사서함 일시중지"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에서 발신한 음성사서함 삭제"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other">새 음성사서함 <xliff:g id="COUNT_1">%d</xliff:g>개</item>
+      <item quantity="one">새 음성사서함 <xliff:g id="COUNT_0">%d</xliff:g>개</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> 연락처 만들기"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>님을 기존 연락처에 추가합니다."</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>의 통화 세부정보"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"통화 기록에서 삭제했습니다."</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"오늘"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"어제"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"이전"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"통화 목록"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"스피커를 켭니다."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"스피커를 끕니다."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"더 빠르게 재생합니다."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"더 느리게 재생합니다."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"재생을 시작하거나 일시중지합니다."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"표시 옵션"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"소리 및 진동"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"접근성"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"전화 벨소리"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"전화 올 때 벨소리와 함께 진동"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"다이얼패드 신호음"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"다이얼패드 신호음 길이"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"보통"</item>
+    <item msgid="6177579030803486015">"길게"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"빠른 응답"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"통화"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"통화 차단"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"통화 차단 기능이 일시적으로 중지됨"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"지난 48시간 이내에 이 휴대전화를 사용해 응급 서비스에 연락했으므로 통화 차단 기능이 중지되었습니다. 48시간이 지나면 통화 차단 기능이 자동으로 다시 사용 설정됩니다."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"번호 가져오기"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"이전에 다른 앱을 통해 일부 발신자를 자동으로 음성사서함으로 보내도록 표시했습니다."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"개수 보기"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"가져오기"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"가져오지 못했습니다."</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"번호 차단 해제"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"번호 추가"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"이러한 번호에서 걸려오는 전화가 차단되며 음성사서함이 자동으로 삭제됩니다."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"이러한 번호에서 걸려오는 전화가 차단되지만, 발신자가 음성사서함에 메시지를 남길 수는 있습니다."</string>
+    <string name="block_list" msgid="7760188925338078011">"차단된 번호"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g>번은 잘못된 번호입니다."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g>번은 이미 차단되었습니다."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"통화 차단이 48시간 동안 중지됨"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"긴급 통화를 사용했기 때문에 중지되었습니다."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"통화 계정"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"사용"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"권한 설정"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"단축번호를 사용하려면 주소록 권한을 사용하도록 설정하세요."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"통화 기록을 보려면 전화 권한을 사용하도록 설정하세요."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"주소록을 보려면 주소록 권한을 사용하도록 설정하세요."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"음성사서함에 액세스하려면 전화 권한을 사용하도록 설정하세요."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"주소록을 검색하려면 주소록 권한을 사용하도록 설정하세요."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"전화를 걸려면 전화 권한을 사용하도록 설정하세요."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"전화 앱은 시스템 설정에 쓸 수 있는 권한이 없습니다."</string>
+</resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
new file mode 100644
index 0000000..aba037e
--- /dev/null
+++ b/res/values-ky-rKG/strings.xml
@@ -0,0 +1,279 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Телефон"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Телефон тергичи"</string>
+    <!-- no translation found for dialerIconLabel (6500826552823403796) -->
+    <skip />
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Чалуулар таржымалы"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Номер туура эмес"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Номерди көчүрүү"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Транскрипцияны көчүрүү"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Номерди бөгөттөө"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгөттөлдү"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Номерди бөгөттөн чыгаруу"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгөттөн чыгарылды"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"КАЙТАРУУ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Жок кылуу"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Чалуудан мурун номерди түзөтүү"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Чалуулар таржымалын тазалоо"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Үн почтасын жок кылуу"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Үн почтасы жок кылнд"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"КАЙТАРУУ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Чалуулар таржымалы тазалансынбы?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ушуну менен бул таржымалдагы бардык чалуулар жок болот"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Чалуулар таржымалы тазаланууда…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Телефон"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Кабыл алынбаган чалуу"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Кабыл алынбай калган чалуу (жумуш)"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Кабыл алынбаган чалуулар"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> кабыл алынбаган чалуу"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Кайра чалуу"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Билдирүү"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Үн каты </item>
+      <item quantity="one">Үн каты</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Угуу"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> жаңы үнкат калтырды"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Үн почтасы ойнолгон жок"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Үн почтасы жүктөлүүдө…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Үн почтасы жүктөлгөн жок"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Үнкат чалуулары"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Кириш чалуулар"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Чыккан чалуулар"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Өткөзүлгөн чалуулар гана"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Визуалдык үн почтасы"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Номерге чалып отурбастан, үн почтаңызды көрүп, уга аласыз. Дайындардын өткөрүлгөндүгү үчүн акы алынышы мүмкүн."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Жөндөөлөр"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Үн почтасынын жаңыртуулары жеткиликтүү эмес"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Жаңы үн почтасы күтүүдө. Учурда жүктөлбөй жатат."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Үн почтаңызды орнотуңуз"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Аудио жеткиликтүү эмес"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Тууралоо"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Үнкатка чалуу"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Номур тандоо"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Номур тандаңыз"</string>
+    <!-- no translation found for make_primary (5829291915305113983) -->
+    <skip />
+    <!-- no translation found for description_search_button (3660807558587384889) -->
+    <skip />
+    <!-- no translation found for description_dial_button (1274091017188142646) -->
+    <skip />
+    <!-- no translation found for description_digits_edittext (8760207516497016437) -->
+    <skip />
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Ойнотууну иштетүү же токтотуу"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Катуу сүйлөткүчтү күйгүзүү же өчүрүү"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Ойнотуунун жайгашкан жерин издөө"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Ойнотуу ылдамдыгын жайлатуу"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Ойнотуу ылдамдыгын тездетүү"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Чалуулардын тарыхы"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Көбүрөөк мүмкүнчүлүктөр"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"чалгыч такта"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Чыккан чалуу-ды гана көрсөтүү"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Кириш чалууларды гана көрсөтүү"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Өткөз. чалуу-ды гана көрсөтүү"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Үнкаттарды гана көрсөтүү"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Бардык чалууларды көрсөтүү"</string>
+    <!-- no translation found for add_2sec_pause (9214012315201040129) -->
+    <skip />
+    <!-- no translation found for add_wait (3360818652790319634) -->
+    <skip />
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Жөндөөлөр"</string>
+    <!-- no translation found for menu_newContact (1209922412763274638) -->
+    <skip />
+    <string name="menu_allContacts" msgid="6948308384034051670">"Бардык байланыштар"</string>
+    <!-- no translation found for callDetailTitle (5340227785196217938) -->
+    <skip />
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Чоо-жайы жеткиликтүү эмес"</string>
+    <!-- no translation found for dialer_useDtmfDialpad (1707548397435075040) -->
+    <skip />
+    <!-- no translation found for dialer_returnToInCallScreen (3719386377550913067) -->
+    <skip />
+    <!-- no translation found for dialer_addAnotherCall (4205688819890074468) -->
+    <skip />
+    <!-- no translation found for type_incoming (6502076603836088532) -->
+    <skip />
+    <!-- no translation found for type_outgoing (343108709599392641) -->
+    <skip />
+    <!-- no translation found for type_missed (2720502601640509542) -->
+    <skip />
+    <string name="type_incoming_video" msgid="82323391702796181">"Келип жаткан видео чалуу"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Чыгып жаткан видео чалуу"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Кабыл алынбаган видео чалуу"</string>
+    <!-- no translation found for type_voicemail (5153139450668549908) -->
+    <skip />
+    <string name="type_rejected" msgid="7783201828312472691">"Четке кагылган чалуу"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Бөгөттөлгөн чалуу"</string>
+    <!-- no translation found for actionIncomingCall (6028930669817038600) -->
+    <skip />
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Үнкатты угуу"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Байланышты кароо <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Чалуу <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> байланыш маалыматтары"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> чалуу."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Видео чалуу."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> дегенге SMS жөнөтүү"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Угула элек үнкат"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Үн менен издеп баштоо"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Чалуу <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <!-- no translation found for unknown (740067747858270469) -->
+    <skip />
+    <!-- no translation found for voicemail (3851469869202611441) -->
+    <skip />
+    <!-- no translation found for private_num (6374339738119166953) -->
+    <skip />
+    <string name="payphone" msgid="7726415831153618726">"Таксофон"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> мүн. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> саат <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Бул номурга чалуу мүмкүн болбой жатат"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Үнкат орноотуу үчүн Меню &gt; Тууралоолорго кириңиз."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Үнкатты текшерүү үчүн, алгач Учак тартибин өчүрүңүз."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Жүктөлүүдө…"</string>
+    <!-- no translation found for imei (3045126336951684285) -->
+    <skip />
+    <!-- no translation found for meid (6210568493746275750) -->
+    <skip />
+    <!-- no translation found for simContacts_emptyLoading (6700035985448642408) -->
+    <skip />
+    <!-- no translation found for simContacts_title (27341688347689769) -->
+    <skip />
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Жеткиликтүү байланыштар колдонмосу жок"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Үн менен издөө жеткиликтүү эмес"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Телефон колдонмосу өчүрүлгөндүктөн, чалуу мүмкүн болбой жатат."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Бул түзмөктө ал үчүн колдонмо жок"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Байланыштардан издеп көрүңүз"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Номер кошуңуз же байлнш издңз"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Чалуулар таржымалыңыз бош"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Чалуу"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Алынбай калган чалуулар жок."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Үн почтаңыздын келген билдирүүлөр куржуну бош."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Тандамалдарды гана көрсөтүү"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Чалуулар таржымалы"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Бардыгы"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Өткөзүлгөндөр"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Үнкат"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгөттөлсүнбү?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Бул номерден келген чалуулар бөгөттөлөт жана үн билдирүүлөрү автоматтык түрдө жок кылынат."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Бул номерден келген чалуулар бөгөттөлөт, бирок чалуучу сизге үн билдирүүлөрүн калтыра берет."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"БӨГӨТТӨӨ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> бөгөттөн чыгарылсынбы?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Бул номерден болгон чалуулар мындан ары бөгөттөлбөйт."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"БӨГӨТТӨН ЧЫГАРУУ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Тез терүү"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Чалуулар таржымалы"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Байланыштар"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Үн почтасы"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Тандамалдардан өчүрүлдү"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Кайтаруу"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Чалуу <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Жаңы байланыш түзүү"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Байланышка кошуу"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS жөнөтүү"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Видео түрүндө чалуу"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Номерди бөгөттөө"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> жаңы өткөзүлгөн чалуу"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Азырынча тез териле турган номерлер жок"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Сүйүктүү номер кошуу"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Азырынча эч байланышыңыз жок"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Байланыш кошуу"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Бардык номурларды көрүү үчүн сүрөткө тийип коюңуз же иреттештирүү үчүн жана коё бербей басып туруңуз"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Алып салуу"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видео чалуу"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Билдирүү жөнөтүү"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Чалуунун чоо-жайы"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> чалуу"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> дегенден жооп берилбей калган чалуу."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> дегенден жооп берилген чалуу."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дегенден окула элек үн почтасы, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дегенден үн почтасы, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> дегенге чалуу."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> боюнча"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Чалуу"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> чалуу"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> видео чалуу."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> үн катын угуу"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Үн почтасын <xliff:g id="NAMEORNUMBER">^1</xliff:g> дегенден ойнотуу"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Үн почтасын <xliff:g id="NAMEORNUMBER">^1</xliff:g> дегенден тындыруу"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Үн почтасын <xliff:g id="NAMEORNUMBER">^1</xliff:g> дегенден жок кылуу"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> жаңы үн почтасы</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> жаңы үн почтасы</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> номери үчүн байланыш түзүү"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> учурдагы байланышка кошуу"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> чалуу чоо-жайы"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Чалуулар таржымалынан жок кылынды"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Бүгүн"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Кечээ"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Мурункураак"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Чалуулар тизмеси"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Катуу сүйлөткүч күйгүзүлгөн."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Катуу сүйлөткүч өчүрүлгөн."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Тезирээк ойнотуу."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Жайыраак ойнотуу."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Ойнотуп баштоо же бир азга токтотуу"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Параметрлерди көрсөтүү"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Үндөр жана титирөө"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Жеткиликтүүлүк"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Телефондун шыңгыры"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Чалуулар үчүн дагы дирилдесин"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Тергичтин үндөрү"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Тергич обонунун узундугу"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Орточо"</item>
+    <item msgid="6177579030803486015">"Узун"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Тез жооптор"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Чалуулар"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Чалууну бөгөттөө"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Чалууну бөгөттөө убактылуу өчүрүлгөн"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Акыркы 48 саат ичинде бул телефондон өзгөчө кырдаал кызматына байланышкандыктан чалууну бөгөттөө өчүрүлдү. 48 сааттык мөөнөтү аяктагандан кийин ал автоматтык түрдө кайра иштетилет."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Номерлерди импорттоо"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Мурда башка колдонмолор аркылуу айрым чалуучуларга автоматтык түрдө үн почтасы жөнөтүлгүдөй кылып белгилегенсиз."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Номерлерди көрүү"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Импорттоо"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Импорттолбой калды"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Номерди бөгөттөн чыгаруу"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Номер кошуу"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Бул номерлерден келген чалуулар бөгөттөлөт жана үн билдирүүлөрү автоматтык түрдө жок кылынат."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Бул номерлерден келген чалуулар бөгөттөлөт, бирок алар сизге үн билдирүүлөрүн калтыра берет."</string>
+    <string name="block_list" msgid="7760188925338078011">"Бөгөттөлгөн номерлер"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> - жараксыз."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> мурунтан эле бөгөттөлгөн."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Чалууну бөгөттөө 48 саатка өчүрүлгөн"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Шашылыш чалуу аткарылгандыктан өчүрүлгөн."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Чалуу каттоо эсептери"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Күйгүзүү"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Уруксаттарды берүү"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Тез терүүнү иштетүү үчүн, \"Байланыштар\" колдонмосуна уруксат бериңиз."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Чалуулар таржымалыңызды көрүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Байланыштар тизмесин көрүү үчүн, \"Байланыштар\" колдонмосуна уруксат бериңиз."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Үн почтаңызга кирүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Байланыштарыңызды издөө үчүн, Байланыштарга уруксатты күйгүзүңүз."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Чалуу үчүн, \"Телефон\" колдонмосуна уруксат бериңиз."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Телефон колдонмосунун Тутум жөндөөлөрүнө жазууга уруксаты жок."</string>
+</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
new file mode 100644
index 0000000..e990d15
--- /dev/null
+++ b/res/values-lo-rLA/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ໂທລະສັບ"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ໂທລະສັບ"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ໜ້າ​ປັດ​ກົດ​ເບີ​ໂທ​ລະ​ສັບ"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ໂທລະສັບ"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"ປະຫວັດການໂທ"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"ລາຍງານໝາຍເລກທີ່ບໍ່ຖືກຕ້ອງ"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"ອັດ​ສຳ​ເນົາ​ໝາຍເລກ"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ອັດ​ສຳ​ເນົາ​ການ​ກ່າຍ​ເປັນ​ໜັງ​ສື"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"ບ​ລັອກ​ໝາຍເລກ"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> ຖືກບ​ລັອກໄວ້​ແລ້ວ"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"ປົດ​ບ​ລັອກ​ໝາຍເລກ"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> ຖືກບ​ລັອກໄວ້​ແລ້ວ"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ບໍ່​ເຮັດ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"​ລຶບ"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"ແກ້ໄຂໝາຍເລກກ່ອນໂທ"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"ລຶບ​ປະ​ຫວັດ​ການ​ໂທ​"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ລຶບຂໍ້ຄວາມສຽງ"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"ລຶບ​ຂໍ້​ຄວາມ​ສຽງ​ແລ້ວ"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ບໍ່​ເຮັດ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ລຶບ​ປະ​ຫວັດ​ການ​ໂທ​ບໍ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ອັນ​ນີ້​ຈະ​ລຶບ​ທຸກ​ສາຍ​ໂທ​ຈາກ​ປະ​ຫວັດ​ຂອງ​ທ່ານ"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ກຳ​ລັງ​ລຶບ​ປະ​ຫວັດ​ການ​ໂທ…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ໂທລະສັບ"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"ສາຍທີ່ບໍ່ໄດ້ຮັບ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"ສາຍບໍ່ໄດ້ຮັບຈາກບ່ອນເຮັດວຽກ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"ສາຍທີ່ບໍ່ໄດ້ຮັບ"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ສາຍບໍ່ໄດ້ຮັບ"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"ໂທກັບ"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"ຂໍ້ຄວາມ"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ຂໍ້ຄວາມສຽງ </item>
+      <item quantity="one">ຂໍ້ຄວາມສຽງ</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ຫຼິ້ນ"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ບໍ່ມີຂໍ້ຄວາມສຽງຈາກ <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"ບໍ່​ສາ​ມາດ​ຫຼິ້ນ​ຂໍ້​ຄວາມ​ສຽງ​ໄດ້"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"ກຳ​ລັງ​ໂຫຼດ​ຂໍ້​ຄວາມ​ສຽງ…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"ບໍ່​ສາ​ມາດ​ໂຫຼດ​ຂໍ້​ຄວາມ​ສຽງ​ໄດ້"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"ເບີໂທຂໍ້ຄວາມສຽງເທົ່ານັ້ນ"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"ສາຍໂທເຂົ້າເທົ່ານັ້ນ"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"ເບີໂທອອກເທົ່ານັ້ນ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"ສະເພາະສາຍທີ່ບໍ່ໄດ້ຮັບ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"ຂໍ້ຄວາມສຽງເຫັນພາບ"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"ເບິ່ງ ແລະຟັງຂໍ້ຄວາມສຽງຂອງທ່ານ ໂດຍບໍ່ຈຳເປັນຕ້ອງໂທຫາໝາຍເລກໃດໜຶ່ງ. ອາດຈະມີຄ່າທຳນຽມຂໍ້ມູນ."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"ການ​ຕັ້ງ​ຄ່າ"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"ບໍ່​ມີ​ການ​ອັບ​ເດດ​ຂໍ້​ຄວາມ​ສຽງ​ຢູ່"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"ຂໍ້​ຄວາມ​ສຽງ​ໃໝ່​ລໍ​ຖ້າ​ຢູ່. ບໍ່​ສາ​ມາດ​ໂຫຼດ​ໄດ້​ໃນ​ເວ​ລາ​ນີ້."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"ຕັ້ງ​ຂໍ້​ຄວາມ​ສຽງ​ຂອງ​ທ່ານ"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ບໍ່​ມີ​ສຽງ​ຢູ່"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"ຕັ້ງຄ່າ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ໂທຫາເບີຂໍ້ຄວາມສຽງ"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"ເລືອກເບີໂທ"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"ເລືອກເບີໂທ"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ຈື່ການເລືອກນີ້"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ຊອກຫາ"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ແປ້ນໂທ"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ໝາຍເລກທີ່ຈະໂທ"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"​ຫຼິ້ນ ຫຼື​ຢຸດ​ການຫຼິ້ນ"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"​ປິດຫຼື​ເປີດ​ລຳ​ໂພງ​ມື​ຖື"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"​ຊອກ​ຫາ​ຕຳ​​ແໜ່ງ​ຫຼິ້ນ"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"ຫຼ​ຸດ​ອັດ​ຕາ​ການຫຼິ້ນ"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"​ເພີ​່ມ​ອັດ​ຕາ​ການຫຼິ້ນ"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"ປະຫວັດການໂທ"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"ໂຕເລືອກເພີ່ມເຕີມ"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ປຸ່ມໂທລະສັບ"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"ສະແດງສະເພາະສາຍໂທອອກ"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"ສະແດງສະເພາະສາຍໂທເຂົ້າ"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"ສະແດງສະເພາະສາຍບໍ່ໄດ້ຮັບ"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ສະແດງສະເພາະຂໍ້ຄວາມສຽງ"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"ສະແດງການໂທທັງໝົດ"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"ເພີ່ມການຂັ້ນເວລາ 2 ວິນາທີ"</string>
+    <string name="add_wait" msgid="3360818652790319634">"ເພີ່ມການລໍຖ້າ"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"ການ​ຕັ້ງ​ຄ່າ"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"ລາຍລະອຽດການໂທ"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"ບໍ່​ມີ​ລາຍ​ລະ​ອຽດ​ຢູ່"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ໃຊ້ປຸ່ມກົດສັນຍານສຽງ"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"ກັບໄປການໂທທີ່ກຳລັງດຳເນີນຢູ່"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"ເພີ່ມການໂທ"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"ສາຍໂທເຂົ້າ"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"ສາຍໂທອອກ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"ສາຍບໍ່ໄດ້ຮັບ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ສາຍ​ວິດີໂອ​ເຂົ້າ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"ສາຍ​ໂທ​ອອກ​ດ້ວຍ​ວິດີໂອ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"ສາຍ​ວິດີໂອ​ທີ່​ບໍ່​ໄດ້​ຮັບ"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"ຂໍ້ຄວາມສຽງ"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"ສາຍ​ໂທ​ທີ່​ຖືກ​ປະ​ຕິ​ເສດ"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"ສາຍ​ໂທ​ທີ່​ຖືກບ​ລັອກ"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ສາຍໂທເຂົ້າ"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"ເປີດຂໍ້ຄວາມສຽງ"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"ເບິ່ງລາຍຊື່ຜູ່ຕິດຕໍ່ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"ໂທຫາ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"ລາຍລະອຽດ​ລາຍຊື່​ຜູ່ຕິດຕໍ່​ສຳລັບ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ການໂທ."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ການ​ໂທ​ດ້ວຍ​ວິ​ດີ​ໂອ."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"ສົ່ງ SMS ຫາ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ຂໍ້ຄວາມສຽງທີ່ຍັງບໍ່ໄດ້ຟັງ"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"ເລີ່ມການຊອກຫາດ້ວຍສຽງ"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"ໂທ​ຫາ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"ບໍ່ຮູ້ຈັກ"</string>
+    <string name="voicemail" msgid="3851469869202611441">"ຂໍ້ຄວາມສຽງ"</string>
+    <string name="private_num" msgid="6374339738119166953">"ເບີສ່ວນໂຕ"</string>
+    <string name="payphone" msgid="7726415831153618726">"ຕູ້​ໂທ​ລະ​ສັບ​ສາ​ທາ​ລະ​ນະ"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> ວິນາທີ"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> ນ​ທ <xliff:g id="SECONDS">%s</xliff:g> ວິ"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> ເວລາ <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ບໍ່​ສາ​ມາດ​ໂທ​ຫາ​ເບີ​ນີ້​ໄດ້"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ເພື່ອຕັ້ງຄ່າຂໍ້ຄວາມສຽງ ໃຫ້ໄປທີ່ ເມນູ &gt; ການຕັ້ງຄ່າ."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"ເພື່ອໂທຫາເບີຂໍ້ຄວາມສຽງ ທ່ານຕ້ອງປິດໂໝດຢູ່ເທິງຍົນກ່ອນ."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"ກຳລັງໂຫລດ..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"ກຳລັງໂຫລດຈາກ SIM card..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"ລາຍຊື່ຜູ່ຕິດຕໍ່ SIM card"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"ບໍ່​ມີ​ແອັບຯ​ລາຍ​ຊື່​ຕິດ​ຕໍ່​ຢູ່"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"ບໍ່​ມີ​ການ​ຊອກ​ຫາ​ດ້ວຍ​ສຽງ​ຢູ່"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ບໍ່​ສາ​ມາດ​ໂທ​ໄດ​້​ເນື່ອງ​ຈາກ​ແອັບ​ພ​ລິ​ເຄ​ຊັນ​ໂທ​ລະ​ສັບ​ຖືກ​ປິດ​ການ​ນຳ​ໃຊ້​ໄວ້."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"ບໍ່​ມີ​ແອັ​ບຯ​ສຳ​ລັບ​ສິ່ງນັ້ນ​ຢູ່​ໃນ​ອຸ​ປະ​ກອນ​ນີ້"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"ຊອກຫາລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"ເພີ່ມ​ເບີ​ໂທ​ລະ​ສັບ ຫຼື ຊອກ​ຫາ​ລາຍ​ຊື່​ຕິດ​ຕໍ່"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"ປະ​ຫວັດ​ການ​ໂທ​ຂອງ​ທ່ານ​ຫວ່າງ​ເປົ່າ"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"​ໂທ​ອອກ"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"ທ່ານ​ມີ​ສາຍ​ບໍ່​ໄດ້​ຮັບ."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"ກ່ອງເຂົ້າ​ຂໍ້​ຄວາມ​ສຽງ​ຂອງ​ທ່ານ​ຫວ່າງ​ເປົ່າ."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"ສະ​ແດງ​ສະເພາະລາຍການທີ່ນິຍົມເທົ່ານັ້ນ"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"ປະຫວັດການໂທ"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"ທັງໝົດ"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"ສາຍທີ່ບໍ່ໄດ້ຮັບ"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"ຂໍ້ຄວາມສຽງ"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"ບ​ລັອກ <xliff:g id="NUMBER">%1$s</xliff:g> ບໍ?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ການໂທຈາກເບີໂທນີ້ຈະຖືກບລັອກໄວ້ ແລະຂໍ້ຄວາມສຽງຈະຖືກລຶບໂດຍອັດຕະໂນມັດ."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ການໂທຈາກເບີນີ້ຈະຖືກບລັອກໄວ້, ແຕ່ຜູ່ໂທອາດຈະຍັງສາມາດຝາກຂໍ້ຄວາມສຽງໃຫ້ທ່ານໄດ້."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ບລັອກ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"ປົດ​ບ​ລັອກ <xliff:g id="NUMBER">%1$s</xliff:g> ບ​ໍ?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"ເບີ​ນີ້​ຈະ​ບໍ່​ຖືກບ​ລັອກ​ຈາກ​ການ​ໂທ​ຫາ​ທ່ານ​ອີກ​ຕໍ່​ໄປ."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"​ປົດ​ບລັອກ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"ການ​ໂທ​ດ່ວນ"</string>
+    <string name="tab_history" msgid="2563144697322434940">"ປະຫວັດການໂທ"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"ລາຍ​ຊື່​ຜູ່​ຕິດ​ຕໍ່"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"ຂໍ້ຄວາມສຽງ"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"ລຶບອອກຈາກລາຍການທີ່ມັກແລ້ວ"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"ຍົກເລີກ"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"ໂທ​ຫາ <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ສ້າງລາຍຊື່ໃໝ່"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"ເພີ່ມ​ໃສ່​ລາຍ​ຊື່"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ສົ່ງ SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"​ໂທ​ອອກ​ດ້ວຍ​ວິ​ດີ​ໂອ"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"ບ​ລັອກ​ໝາຍ​ເລກ"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ສາຍທີ່ບໍ່ໄດ້ຮັບໃໝ່"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"ບໍ່​ມີ​ຜູ້​ໃດ​ຢູ່​ໃນ​ການ​ໂທ​ດ່ວນ​ຂອງ​ທ່ານ​ເທື່ອ"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"ເພີ່ມ​ລາຍ​ການ​ທີ່​ມັກ"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"ທ່ານ​ບໍ່​ມີ​ລາຍ​ຊື່​ໃດ​ເທື່ອ"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"ເພີ່ມ​ລາຍ​ຊື່"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"ແຕະ​ຮູບ ເພື່ອ​ເບິ່ງ​ທຸກ​ເລກ​ໝາຍ ຫຼື​ແຕະ &amp; ຄ້າງ​ໄວ້ ເພື່ອ​ບັນ​ທຶກ"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"​ລຶບ​ອອກ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"​ໂທ​ດ້ວຍ​ວິ​ດີ​ໂອ"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"ສົ່ງຂໍ້ຄວາມ"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"ລາຍລະອຽດ​ການໂທ"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"ໂທຫາ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"ສາຍ​ບໍ່​ໄດ້​ຮັບ​ຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"ຮັບ​ສາຍ​ໂທ​ຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"ຂໍ້​ຄວາມ​ສຽງ​ບໍ່​ໄດ້​ອ່ານ​ຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"ຂໍ້​ຄວາມ​ສຽງ​ຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"ໂທ​ຫາ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"ຢູ່​ເທິງ <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ໂທ"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"ໂທ​ຫາ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"ການ​ໂທວິ​ດີ​ໂອ <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"​ຟັງ​ຂໍ້​ຄວາມ​ສຽງ​ຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"ຫຼິ້ນຂໍ້ຄວາມສຽງຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"ຢຸດຂໍ້ຄວາມສຽງຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"ລຶບຂໍ້ຄວາມສຽງຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ຂໍ້​ຄວາມ​ສຽງ​ໃໝ່</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ຂໍ້​ຄວາມ​ສຽງ​ໃໝ່</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"ສ້າງ​ລາຍ​ຊື່​ສຳ​ລັບ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"ເພີ່ມ <xliff:g id="NAMEORNUMBER">^1</xliff:g> ໃສ່​ລາຍ​ຊື່​ທີ່​ມີ​ຢູ່"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"ລາຍລະອຽດ​ການ​ໂທ​ສຳລັບ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"ລຶບ​ຈາກ​ປະ​ຫວັດ​ການ​ໂທ​ແລ້ວ"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ມື້ນີ້"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ມື້​ວານ​ນີ້"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"ເກົ່າກວ່າ"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"ບັນ​ຊີ​ລາຍ​ຊື່​ໂທ"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"ເປີດ​ລຳໂພງ."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"ປິດ​ລຳໂພງ."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"ຫຼິ້ນໄວຂຶ້ນ."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"ຫຼິ້ນຊ້າລົງ."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ເລີ່ມຫຼືຢຸດ​ການ​ຫຼິ້ນຊົ່ວຄາວ."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ຕົວເລືອກການສະແດງຜົນ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ສຽງ ແລະ​ສັ່ນ"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"​ການ​ຊ່ວຍ​ເຂົ້າ​ເຖິງ"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ຣິງໂທນໂທລະສັບ"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ສັ່ນ​ເຕືອນ​ເມື່ອ​ມີ​ການ​ໂທ​ເຂົ້າ"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ສຽງ​ກົດ​ປຸ່ມ​ໂທ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ຄວາມ​ຍາວ​ສຽງ​ແຜ່ນ​ກົດ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ປົກ​ກ​ະ​ຕິ"</item>
+    <item msgid="6177579030803486015">"ຍາວ"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ການຕອບແບບວ່ອງໄວ"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"​ການ​ໂທ"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"ການບ​ລັອກ​ສາຍ​ໂທ"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"ການບ​ລັອກ​ສາຍ​ໂທ​ປິດ​ຊົ່ວ​ຄາວ"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"ການບ​ລັອກ​ສາຍ​ໂທ​ຖືກ​ປິດ​ໃຊ້​ງານ​ແລ້ວ ເພາະ​ວ່າ​ທ່ານ​ໄດ້​ຕິດ​ຕໍ່​ຫາ​ຝ່າຍ​ບໍ​ລິ​ການ​ສຸກ​ເສີນ​ຈາກ​ໂທ​ລະ​ສັບ​ນີ້​ພາຍ​ໃນ 48 ຊົ່ວ​ໂມງ​ສຸດ​ທ້າຍ. ມັນ​ຈະ​ຖືກ​ເປີດ​ໃຊ້​ງານ​ອີກ​ໂດຍ​ອັດ​ຕະ​ໂນ​ມັດ ເມື່ອ​ໝົດ​ໄລ​ຍະ 48 ຊົ່ວ​ໂມງ​ໄປ​ແລ້ວ."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"ນຳ​ຕົວ​ເລກ​ເຂົ້າ"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"ຜ່ານ​ມາ​ທ່ານ​ໄດ້​ໝາຍ​ຜູ້​ໂທ​ບາງ​ຄົນ​ໃຫ້​ຖືກ​ສົ່ງ​​ຫາ​ຂໍ້​ຄວາມ​ສຽງໂດຍ​ອັດ​ຕະ​ໂນ​ມັດ​ຜ່ານ​ແອັບ​ອື່ນ​."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"ເບິ່ງ​ຕົວ​ເລກ"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"ນໍາເຂົ້າ"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"ນຳ​ເຂົ້າ​ລົ້ມ​ເຫລວ"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"ປົດ​ບ​ລັອກ​ໝາຍ​ເລກ"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"ເພີ່ມໝາຍເລກ"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ການໂທຈາກເບີໂທເຫຼົ່ານີ້ຈະຖືກບລັອກໄວ້ ແລະຂໍ້ຄວາມສຽງຈະຖືກລຶບໂດຍອັດຕະໂນມັດ."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ການໂທຈາກເບີໂທເຫຼົ່ານີ້ຈະຖືກບລັອກໄວ້, ແຕ່ພວກເຂົາອາດຈະຍັງສາມາດຝາກຂໍ້ຄວາມສຽງໃຫ້ທ່ານໄດ້."</string>
+    <string name="block_list" msgid="7760188925338078011">"ໝາຍເລກ​ທີ່ບລັອກ​ແລ້ວ"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> ບໍ່ຖືກຕ້ອງ."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ຖືກ​ບ​ລັອກ​ແລ້ວ."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"ການບ​ລັອກ​ສາຍ​ໂທ​ຖືກ​ປິດ​ໃຊ້​ງານ​ແລ້ວ​ເປັນ​ເວ​ລາ 48 ຊົ່​ວ​ໂມງ"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"ປິດ​ໃຊ້​ງານ​ແລ້ວ ເພາະ​ວ່າ​ໄດ້​ມີ​ການ​ໂທ​ສຸກ​ເສີນ."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"ບັນ​ຊີ​ໂທ"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ເປີດ​"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"ຕັ້ງ​ການ​ອະ​ນຸ​ຍາດ"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"ເພື່ອ​ເປີດ​ໃຊ້​ງານ​ການໂທດ່ວນ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ລາຍ​ຊື່."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"ເພື່ອ​ເບິ່ງ​ບັນ​ທຶກ​ການ​ໂທ​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"ເພື່ອ​ເບິ່ງ​ລາຍ​ຊື່​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ລາຍ​ຊື່"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"ເພື່ອ​ເຂົ້າ​ຫາ​ຂໍ້​ຄວາມ​ສຽງ​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"ເພື່ອຄົ້ນຫາລາຍາຊື່ຂອງທ່ານ, ໃຫ້ເປີດການອະນຸຍາດລາຍຊື່."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"ເພື່ອ​ເຮັດການໂທ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ແອັບໂທລະສັບບໍ່ມີການອະນຸຍາດໃຫ້ຂຽນໃສ່ການຕັ້ງຄ່າລະບົບ."</string>
+</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
new file mode 100644
index 0000000..9571154
--- /dev/null
+++ b/res/values-lt/strings.xml
@@ -0,0 +1,259 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefonas"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefonas"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefono skambinimo skydelis"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefonas"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Skambučių istorija"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Pranešti apie netikslų numerį"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopijuoti numerį"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopijuoti transkribuotą tekstą"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokuoti numerį"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> užblokuotas"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Panaikinti numerio blokavimą"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Panaikintas <xliff:g id="NUMBER">%1$s</xliff:g> blokavimas"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ANULIUOTI"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Ištrinti"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Redaguoti numerį prieš skambinant"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Išvalyti skambučių istoriją"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ištrinti balso pašto pranešim."</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Balso pšt. ištrintas"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANULIUOTI"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Išvalyti skambučių istoriją?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Bus ištrinti visi skambučiai iš istorijos"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Išvaloma skambučių istorija..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefonas"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Praleisti skambučiai"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Praleistas darbo skambutis"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Praleisti skambučiai"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Praleistų skambučių: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Perskambinti"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Siųsti pranešimą"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimas </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimai </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimo </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimų </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Paleisti"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nauji b. pašto pran. iš <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Nepavyko paleisti balso pašto pranešimo"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Įkeliamas balso pašto pranešimas..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Nepavyko įkelti balso pašto pranešimo"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Tik skambučiai su balso paštu"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Tik gaunami skambučiai"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Tik siunčiami skambučiai"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Tik praleisti skambučiai"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vaizdinis balso paštas"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Peržiūrėkite ir klausykite balso pašto pranešimų neskambindami telefono numeriu. Gali būti taikomi duomenų mokesčiai."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Nustatymai"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Balso pašto naujiniai nepasiekiami"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Laukiantis naujas balso pašto pranešimas. Negalima dabar įkelti."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Nustatykite balso paštą"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Garso įrašas nepasiekiamas"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Nustatyti"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Skamb. į balso pšt."</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Pasirinkite numerį"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Pasirinkite numerį"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Atsiminti šį pasirinkimą"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ieškoti"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"rinkti numerį"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"renkamas numeris"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Paleisti arba sustabdyti atkūrimą"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Įjungti arba išjungti garsiakalbį"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Ieškoti atkūrimo pozicijos"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Sumažinti atkūrimo spartą"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Padidinti atkūrimo spartą"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Skambučių istorija"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Daugiau parinkčių"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"skambinimo skydelis"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Rodyti tik išsiunčiamus"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Rodyti tik gaunamus"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Rodyti tik praleistus"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Rodyti tik balso pšt. praneš."</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Rodyti visus skambučius"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Pridėti 2 sek. pauzę"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Pridėti laukimą"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Nustatymai"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Naujas kontaktas"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Visi kontaktai"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Išsami skambučio informacija"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Išsami informacija nepasiekiama"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Naudoti jutiklinę klaviatūrą"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Grįžti prie vykdomo skambučio"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Pridėti skambutį"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Gaunamasis skambutis"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Sunčiamasis skambutis"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Praleistas skambutis"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Gaunamasis vaizdo skambutis"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Siunčiamasis vaizdo skambutis"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Praleistas vaizdo skambutis"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Balso paštas"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Atmestas skambutis"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Užblokuotas skambutis"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Gaunami skambučiai"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Paleisti balso pašto pranešimus"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Žiūrėti kontaktą <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Skambinti <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Išsami kontaktinė informacija: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"Skambučių: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Vaizdo skambutis."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Siųsti SMS <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Neklausytas balso pašto pranešimas"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Pradėti paiešką balsu"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Skambinti <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Nežinomas"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Balso paštas"</string>
+    <string name="private_num" msgid="6374339738119166953">"Privatus numeris"</string>
+    <string name="payphone" msgid="7726415831153618726">"Taksofonas"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Negalima skambinti šiuo numeriu"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Jei norite nustatyti balso paštą, eikite į „Meniu“ &gt; „Nustatymai“."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Jei norite skambinti į balso paštą, išjunkite lėktuvo režimą."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Įkeliama..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Įkeliama iš SIM kortelės..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM kortelės adresatai"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nepasiekiama jokia kontaktų programa"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Paieška balsu nepasiekiama"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Negalima skambinti telefonu, nes Telefono programa išjungta."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Šiame įrenginyje nėra tam skirtos programos"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Ieškokite kontaktų"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Prid. nr. arba iešk. kontaktų"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Skambučių istorija yra tuščia"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Skambinti"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nėra jokių praleistų skambučių."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Balso pašto gautųjų aplankas yra tuščias."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Rodyti tik mėgstamiausius"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Skambučių istorija"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Visi"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Praleisti"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Balso paštas"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Blokuoti numerį <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Skambučiai iš šio numerio bus užblokuoti, o balso pašto pranešimai bus automatiškai ištrinti."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Skambučiai iš šio numerio bus užblokuoti, tačiau skambintojas vis tiek galės palikti jums balso pašto pranešimus."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKUOTI"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Panaikinti numerio <xliff:g id="NUMBER">%1$s</xliff:g> blokavimą?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Šis numeris nebebus blokuojamas ir jį naudojant bus galima jums paskambinti."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"PANAIKINTI BLOKAVIMĄ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Spartusis rinkimas"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Skambučių istorija"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktai"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Balso paštas"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Pašalintas iš adresyno"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Anuliuoti"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Skambinti numeriu <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Kurti naują kontaktą"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Pridėti prie kontakto"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Siųsti SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Atlikti vaizdo skambutį"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokuoti numerį"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Naujų praleistų skambučių: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Dar nieko neįtraukėte į sparčiojo rinkimo sąrašą"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Pridėti mėgstamiausią veiklą"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Dar neturite kontaktų"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Pridėti kontaktą"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Palieskite vaizdą, kad peržiūrėtumėte visus numerius, arba palieskite ir laikykite, kad pertvarkytumėte"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Pašalinti"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Vaizdo skambutis"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Siųsti pranešimą"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Išsami skambučio informacija"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Skambinti <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Praleistas skambutis: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Atsakytas skambutis: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Neskaitytas balso pašto pranešimas: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Balso pašto pranešimas: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Skambutis: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Skambinti"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Skambinti <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Vaizdo skambutis <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Klausyti balso pašto nuo <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Leisti balso pašto pranešimą iš <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pristabdyti balso pašto pranešimą iš <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Ištrinti balso pašto pranešimą iš <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> naujas balso pašto pranešimas</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nauji balso pašto pranešimai</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> naujo balso pašto pranešimo</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> naujų balso pašto pranešimų</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Sukurti <xliff:g id="NAMEORNUMBER">^1</xliff:g> kontaktą"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Pridėti <xliff:g id="NAMEORNUMBER">^1</xliff:g> prie esamo kontakto"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Išsami skambučio informacija (<xliff:g id="NAMEORNUMBER">^1</xliff:g>)"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Ištrinta iš skambučių istorijos"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Šiandien"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Vakar"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Senesni"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Skambučių sąrašas"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Įjungti garsiakalbį."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Išjungti garsiakalbį."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Leisti greičiau."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Leisti lėčiau."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Pradėti arba pristabdyti atkūrimą."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Pateikties parinktys"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Garsai ir vibravimas"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Pritaikymas neįgaliesiems"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Telefono skambėjimo tonas"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Taip pat vibruoti, kai skamb."</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Skambinimo skydelio garsai"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Skambinimo skydelio tono trukmė"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Įprastas"</item>
+    <item msgid="6177579030803486015">"Ilgas"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Greiti atsakai"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Skambučiai"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Skambučių blokavimas"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Skamb. blokavimo funkcija laikinai išj."</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Skambučių blokavimo funkcija buvo išjungta, nes iš šio telefono buvote susisiekę su pagalbos tarnybomis per pastarąsias 48 val. Ši funkcija bus automatiškai įgalinta iš naujo, kai 48 val. laikotarpis pasibaigs."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importuoti numerius"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Naudodami kitas programas anksčiau buvote pažymėję, kad kai kurie skambintojai būtų automatiškai nusiųsti į balso paštą."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Žr. skaičius"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importuoti"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Importuoti nepavyko"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Panaikinti numerio blokavimą"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Pridėti numerį"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Skambučiai iš šių numerių bus užblokuoti, o balso pašto pranešimai bus automatiškai ištrinti."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Skambučiai iš šių numerių bus užblokuoti, tačiau skambintojai vis tiek galės palikti jums balso pašto pranešimus."</string>
+    <string name="block_list" msgid="7760188925338078011">"Užblokuoti numeriai"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> yra netinkamas numeris."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> jau užblokuotas."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Skambučių blokavimas išjungtas 48 val."</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Išjungta, nes skambinta pagalbos numeriu."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Skambinimo paskyros"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Įjungti"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Nustatyti leidimus"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Jei norite įgalinti spartųjį rinkimą, įjunkite Kontaktų programos leidimą."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Jei norite peržiūrėti skambučių žurnalą, įjunkite Telefono programos leidimą."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Jei norite peržiūrėti kontaktus, įjunkite Kontaktų programos leidimą."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Jei norite pasiekti balso paštą, įjunkite Telefono programos leidimą."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Kad galėtumėte ieškoti kontaktų, įjunkite Kontaktų leidimus."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Jei norite paskambinti, įjunkite Telefono programos leidimą."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefono programa neturi leidimo keisti sistemos nustatymų."</string>
+</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
new file mode 100644
index 0000000..ac7592d
--- /dev/null
+++ b/res/values-lv/strings.xml
@@ -0,0 +1,257 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Tālrunis"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Tālrunis"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Tālruņa numuru sastādīšanas tastatūra"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Zvanīt"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Zvanu vēsture"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Ziņot par nepareizu numuru"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopēt numuru"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopēt transkripciju"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloķēt numuru"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> bloķēts"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Atbloķēt numuru"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> atbloķēts"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ATSAUKT"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Dzēst"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Rediģēt numuru pirms zvanīšanas"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Dzēst zvanu vēsturi"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Dzēst balss pasta ziņojumu"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Balss pasts dzēsts"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ATSAUKT"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vai dzēst zvanu vēsturi?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tiks dzēsti visi vēsturē saglabātie zvani."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Notiek zvanu vēstures dzēšana…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Tālruņa zvans"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Neatbildēts zvans"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Neatbildēts darba zvans"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Neatbildēti zvani"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> neatbildēti zvani"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Atzvanīt"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Sūtīt ziņojumu"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="zero"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojumi </item>
+      <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojums </item>
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojumi </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Atskaņot"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Jauns b. pasta ziņ. no: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Nevarēja atskaņot balss pasta ziņojumu."</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Notiek balss pasta ziņojumu ielāde…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Nevarēja ielādēt balss pasta ziņojumu."</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Tikai balss pasta zvani"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Tikai ienākošie zvani"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Tikai izejošie zvani"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Tikai neatbildētie zvani"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vizuālais balss pasts"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Skatiet un klausieties balss pasta ziņojumus, nezvanot uz numuru. Var tikt piemērota maksa par datu pārraidi."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Iestatījumi"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Balss pasta atjauninājumi nav pieejami."</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Saņemti jauni balss pasta ziņojumi. Pašlaik tos nevar ielādēt."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Iestatiet balss pastu."</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio nav pieejams."</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Iestatīt"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Zvanīt balss pastam"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Numura izvēlēšanās"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Numura izvēlēšanās"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Atcerēties šo izvēli"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"meklēt"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"sastādīt numuru"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"sastādītais numurs"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Atskaņot vai apturēt atskaņošanu"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Ieslēgt vai izslēgt mikrofonu ar skaļruni"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Meklēt atskaņošanas pozīciju"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Samazināt atskaņošanas ātrumu"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Palielināt atskaņošanas ātrumu"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Zvanu vēsture"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Vairāk opciju"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"numura sastādīšanas tastatūra"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Rādīt tikai izejošos zvanus"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Rādīt tikai ienākošos zvanus"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Rādīt tikai neatbildētos zvanus"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Rādīt tikai balss pasta ziņ."</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Rādīt visus zvanus"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Pievienot 2 sekundes ilgu pauzi"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Pievienot gaidīšanu"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Iestatījumi"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Jauna kontaktpersona"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Visas kontaktpersonas"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Informācija par zvanu"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detalizēta informācija nav pieejama."</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Izmantot skārientoņu tastatūru"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Atgriezties pie pašreizējā zvana"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Pievienot zvanu"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Ienākošais zvans"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Izejošais zvans"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Neatbildēts zvans"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Ienākošs videozvans"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Izejošs videozvans"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Neatbildēts videozvans"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Balss pasts"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Noraidīts zvans"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Bloķēts zvans"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Ienākošie zvani"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Atskaņot balss pasta ziņojumu"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Skatīt kontaktpersonu <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Zvanīt šim: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Kontaktpersonas informācija: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> zvani."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videozvans"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Sūtīt īsziņu šai kontaktpersonai: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nenoklausīti balss pasta ziņojumi"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Sākt meklēšanu ar balsi"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Zvanīt: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Nezināms"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Balss pasts"</string>
+    <string name="private_num" msgid="6374339738119166953">"Privāts numurs"</string>
+    <string name="payphone" msgid="7726415831153618726">"Maksas tālrunis"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> plkst. <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Uz šo numuru nevar piezvanīt."</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Lai iestatītu balss pastu, atveriet sadaļu Izvēlne &gt; Iestatījumi."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Lai piezvanītu balss pastam, vispirms izslēdziet lidojuma režīmu."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Notiek ielāde..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Notiek ielāde no SIM kartes..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontaktpersonas SIM kartē"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nav pieejama neviena kontaktpersonu lietotne."</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Meklēšana ar balsi nav pieejama."</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Nevar veikt tālruņa zvanu, jo lietojumprogramma Tālrunis tika atspējota."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Šajā ierīcē nav nevienas šai darbībai piemērotas lietotnes."</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Meklēt kontaktpersonas"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Pievienojiet numuru vai meklējiet kontaktpersonas"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Jūsu zvanu vēsturē nav ierakstu."</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Zvanīt"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Jums nav neatbildētu zvanu."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Jūsu balss pasta iesūtne ir tukša."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Rādīt tikai izlasi"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Zvanu vēsture"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Visi"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Neatb."</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Balss p."</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Vai bloķēt numuru <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"No šī numura saņemtie zvani tiks bloķēti, un balss pasta ziņojumi tiks automātiski dzēsti."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"No šī numura saņemtie zvani tiks bloķēti, taču zvanītājs joprojām varēs jums atstāt balss pasta ziņojumus."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOĶĒT"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Vai atbloķēt numuru <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Šis numurs vairs nebūs bloķēts."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ATBLOĶĒT"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Ātrie zvani"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Zvanu vēsture"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktpersonas"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Balss pasts"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Noņemts no izlases"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Atsaukt"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Zvanīt: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Izveidot jaunu kontaktpersonu"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Pievienot kontaktpersonai"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Sūtīt īsziņu"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Veikt videozvanu"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloķēt numuru"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Jauni neatbildēti zvani: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Ātro zvanu sarakstā vēl nav nevienas kontaktpersonas."</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Pievienot izlasei"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Jums vēl nav nevienas kontaktpersonas."</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Pievienot kontaktpersonu"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Pieskarieties attēlam, lai skatītu visus numurus, vai pieskarieties attēlam un turiet to, lai veiktu pārkārtošanu."</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Noņemt"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videozvans"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Sūtīt ziņojumu"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Informācija par zvanu"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Zvanīt: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Neatbildēts zvans no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Atbildēts zvans no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Nelasīts balss pasts no <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Balss pasts no <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Izejošs zvans: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"kontā <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Zvanīt"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Zvanīt: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Zvaniet kontaktpersonai <xliff:g id="NAMEORNUMBER">^1</xliff:g>, izmantojot videozvanu."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Klausīties balss pasta ziņojumu no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Atskaņot balss pasta ziņojumu no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pārtraukt balss pasta ziņojuma atskaņošanu no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Dzēst balss pasta ziņojumu no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> jauni balss pasta ziņojumi</item>
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> jauns balss pasta ziņojums</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> jauni balss pasta ziņojumi</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Izveidojiet kontaktpersonu, izmantojot vienumu <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Pievienojiet vienumu <xliff:g id="NAMEORNUMBER">^1</xliff:g> esošai kontaktpersonai."</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Zvanu informācija par šādu numuru: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Dzēsts no zvanu vēstures."</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Šodien"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Vakar"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Vecāki zvani"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Zvanu saraksts"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Ieslēgt skaļruni."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Izslēgt skaļruni."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Atskaņot ātrāk."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Atskaņot lēnāk."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Sākt vai apturēt atskaņošanu."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Attēlojuma opcijas"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Skaņas un vibrācija"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Pieejamība"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Tālruņa zvana signāls"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Izmantot vibrozvanu zvaniem"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Numura sast. tastatūras toņi"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Numuru tastatūras signāla ilgums"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Parasts"</item>
+    <item msgid="6177579030803486015">"Ilgs"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Ātrās atbildes"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Zvani"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Zvanu bloķēšana"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Zvanu bloķēšana ir īslaicīgi izslēgta"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Zvanu bloķēšana ir atspējota, jo pēdējo 48 stundu laikā jūs sazinājāties ar ārkārtas palīdzības dienestiem, izmantojot šo tālruni. Zvanu bloķēšana tiks automātiski iespējota, tiklīdz beigsies 48 stundu periods."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importēt numurus"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Jūs iepriekš atzīmējāt dažus zvanītājus, kuri automātiski jānovirza uz balss pastu, izmantojot citas lietotnes."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Skatīt numurus"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importēt"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Importēšana neizdevās"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Atbloķēt numuru"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Pievienot numuru"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"No šiem numuriem saņemtie zvani tiks bloķēti, un balss pasta ziņojumi tiks automātiski dzēsti."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"No šiem numuriem saņemtie zvani tiks bloķēti, taču zvanītāji joprojām varēs jums atstāt balss pasta ziņojumus."</string>
+    <string name="block_list" msgid="7760188925338078011">"Bloķētie numuri"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> nav derīgs."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> jau ir bloķēts."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Zvanu bloķēšana atspējota uz 48 stundām"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Zvanu bloķēšana atspējota, jo tika veikts ārkārtas zvans."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Zvanu konti"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Ieslēgt"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Iestatīt atļaujas"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Lai iespējotu ātros zvanus, ieslēdziet atļauju Kontaktpersonas."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Lai skatītu zvanu žurnālu, ieslēdziet atļauju Tālrunis."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Lai skatītu kontaktpersonas, ieslēdziet atļauju Kontaktpersonas."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Lai piekļūtu balss pastam, ieslēdziet atļauju Tālrunis."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Lai meklētu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Lai veiktu zvanu, ieslēdziet atļauju Tālrunis."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Tālruņa lietotnei nav atļaujas rakstīt sistēmas iestatījumos."</string>
+</resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
new file mode 100644
index 0000000..d50eb6a
--- /dev/null
+++ b/res/values-mk-rMK/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Телефон"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Телефонска тастатура"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Историја на повици"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Пријави неточен број"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Копирај го бројот"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Копирај транскрипција"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Блокирај го бројот"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> е блокиран"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Деблокирај го бројот"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> е деблокиран"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ВРАТИ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Избриши"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Уредете го бројот пред повикот"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Избришете ја историјата на повици"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Избришете ја говорната пошта"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Гов. пошта е избриш."</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ВРАТИ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Избришете историја на повици?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ова ќе ги избрише сите повици од историјата"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Се чисти историјата на повици…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Телефон"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Пропуштен повик"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Пропуштен работен повик"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Пропуштени повици"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> пропуштени повици"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Повикај назад"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Порака"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> говорна порака </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> говорни пораки </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Пушти"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова говорна пошта од <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Говорната пошта не можеше да се репродуцира"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Се вчитува говорната пошта…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Говорната пошта не можеше да се вчита"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Само повици со говорна пошта"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Само дојдовни повици"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Само појдовни повици"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Само пропуштени повици"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Визуелна говорна пошта"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Гледајте и слушајте ја говорната пошта без да треба да повикувате број. Може да важат стандардни тарифи."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Поставки"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Не се достапни ажурирања на говорната пошта"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Чека нова говорна пошта. Не може да се вчита во моментов."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Поставете ја говорната пошта"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Аудио не е достапно"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Подеси"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Повикај говорна пошта"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Избери број"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Избери број"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Запомни го овој избор"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"пребарај"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"бирај"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"број за бирање"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Пуштете или запрете репродукција"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Вклучете или исклучете интерфон"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Барајте позиција на репродукција"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Намалете брзина на репродукција"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Зголемете брзина на репродукција"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Историја на повици"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Повеќе опции"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"тастатура за избирање"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Прикажи само појдовни"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Прикажи само дојдовни"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Прикажи само пропуштени"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Прикажи само говорни пораки"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Прикажи ги сите повици"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Додај пауза од 2 сек"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Додај почекај"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Поставки"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Нов контакт"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Сите контакти"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Детали на повик"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Детали не се достапни"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Користи тастатура со звуци на допир"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Врати се на повик во тек"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Додај повик"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Дојдовен повик"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Појдовен повик"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Пропуштен повик"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Дојдовен видеоповик"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Појдовен видеоповик"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Пропуштен видеоповик"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Говорна пошта"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Одбиен повик"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Блокирани повик"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Дојдовни повици"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Преслушај говорна пошта"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Прикажи контакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Повикај <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Детали за контакт за <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> повици."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Видеоповик."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Испратете СМС до <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непреслушана говорна пошта"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Започни гласовно пребарување"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Повикај <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Непознато"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Говорна пошта"</string>
+    <string name="private_num" msgid="6374339738119166953">"Приватен број"</string>
+    <string name="payphone" msgid="7726415831153618726">"Говорница"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> во <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Бројот не може да се повика"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"За да подесите говорна пошта, одете на Мени &gt; Подесувања."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"За да се јавите во говорна пошта, прво исклучете режим на работа во авион."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Се вчитува..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Вчитување од СИМ картичка..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Контакти од СИМ картичка"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Не е достапна апликација за контакти"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Гласовното пребарување не е достапно"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Не може да се воспостави телефонски повик, бидејќи апликацијата Телефон е оневозможена."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Нема апликација за тоа на уредот"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Пребарајте контакти"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Додајте број или побарајте контакти"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Историјата на повици е празна"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Повикај"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Немате пропуштени повици."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Приемното сандаче на говорната пошта е празно."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Прикажи само омилени"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Историја на повици"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Сите"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Пропуштени"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Говорна пошта"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Блокирај го <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Повиците од овој број ќе се блокираат, а говорната пошта автоматски ќе се брише."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Повиците од овој број ќе се блокираат, но можно е повикувачот сѐ уште да може да ви остава говорна пошта."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"БЛОКИРАЈ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Деблокирај го <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Бројов веќе нема да биде блокиран да ве повикува."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ДЕБЛОКИРАЈ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Брзо бирање"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Историја на повици"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Контакти"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Говорна пошта"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Отстранет од омилени"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Врати"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Повикај <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Создај нов контакт"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Додај на контакт"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Испрати СМС"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Остварете видеоповик"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Блокирај го бројот"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> нови пропуштени повици"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Сè уште немате никого на брзо бирање"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Додај омилено"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Сè уште немате контакти"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Додај контакт"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Допрете ја сликата за да ги видите сите броеви или допрете и држете за промена на редоследот"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Отстрани"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видеоповик"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Испрати порака"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Детали на повик"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Повикај <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропуштен повик од <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Одговорен повик од <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Непрочитана говорна порака од <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Говорна порака од <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Повик до <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"на <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Повикај"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Повикај <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Видеоповик до <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Слушајте говорна пошта од <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Пушти говорна порака од <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Паузирај говорна порака од <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Избриши говорна пошта од <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> нова говорна порака</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> нови говорни пораки</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Создај контакт за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Додај <xliff:g id="NAMEORNUMBER">^1</xliff:g> во постоечки контакт"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Информации на повикот за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Избришано од историјата на повици"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Денес"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Вчера"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Постари"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Список со повици"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Вклучете го звучникот."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Исклучете го звучникот."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Репродуцирајте побрзо."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Репродуцирајте побавно."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Запрете ја или паузирајте ја репродукцијата."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Опции за екран"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуци и вибрации"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Пристапност"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Мелодија на телефон"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибрации и за повици"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Тонови на подлогата за бирање"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Должина на тонот на подлогата за бирање"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Нормално"</item>
+    <item msgid="6177579030803486015">"Долго"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Брзи одговори"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Повици"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Блокирање повик"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Блокирањето повик е привремено исклучено"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Блокирањето повици е исклучено бидејќи ја контактиравте службата за итни случаи од телефонов во изминатите 48 часа. Повторно ќе се овозможи автоматски откако ќе истече периодот од 48 часа."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Увези броеви"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Претходно означивте некои повикувачи да се испратат автоматски на говорната пошта преку други апликации."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Прикажи броеви"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Увези"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Увоз не успеа"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Деблокирај го бројот"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Додај број"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Повиците од овие броеви ќе се блокираат, а говорната пошта автоматски ќе се брише."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Повиците од овие броеви ќе се блокираат, но можно е сѐ уште да може да ви оставаат говорна пошта."</string>
+    <string name="block_list" msgid="7760188925338078011">"Блокирани броеви"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> не е важечки."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> веќе е блокиран."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Блокирањето на повикот е оневозможено 48 часа"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Оневозможено е затоа што беше направен итен повик."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Сметки за повикување"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Вклучи"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Постави дозволи"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"За да овозможите брзо бирање, вклучете ја дозволата за контакти."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"За да ја видите евиденцијата на повици, вклучете ја дозволата за телефон."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"За да ги видите контактите, вклучете ја дозволата за контакти."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"За да пристапите кон говорната пошта, вклучете ја дозволата за телефон."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"За да ги пребарувате контактите, вклучете ги дозволите за контакти."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"За да воспоставите повик, вклучете ја дозволата за телефон."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Апликацијата на телефонот нема дозвола да пишува во поставките на системот."</string>
+</resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
new file mode 100644
index 0000000..14dca66
--- /dev/null
+++ b/res/values-ml-rIN/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ഫോണ്‍"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ഫോണ്‍"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ഫോൺ ഡയൽപാഡ്"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ഫോണ്‍"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"കോള്‍‌ ചരിത്രം"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"കൃത്യമല്ലാത്ത നമ്പർ റിപ്പോർട്ടുചെയ്യുക"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"നമ്പർ പകർത്തുക"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ട്രാൻസ്ക്രിപ്ഷൻ പകർത്തുക"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"നമ്പർ ബ്ലോക്കുചെയ്യുക"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> ബ്ലോക്കുചെയ്തു"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"നമ്പർ അൺബ്ലോക്കുചെയ്യുക"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> അൺബ്ലോക്കുചെയ്തു"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"പഴയപടിയാക്കുക"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"ഇല്ലാതാക്കുക"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"കോൾ ചെയ്യുന്നതിന് മുമ്പായി നമ്പർ എഡിറ്റുചെയ്യുക"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"കോൾ ചരിത്രം മായ്‌ക്കുക"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"വോയ്‌സ്മെയിൽ ഇല്ലാതാക്കുക"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"വോയ്സ്മെയിൽ ഇല്ലാതാക്കി"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"പഴയപടിയാക്കുക"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"കോൾ ചരിത്രം മായ്‌ക്കണോ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ഇത് നിങ്ങളുടെ ചരിത്രത്തിൽ നിന്ന് എല്ലാ കോളുകളും ഇല്ലാതാക്കും"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"കോൾ ചരിത്രം മായ്‌ക്കുന്നു..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ഫോൺ"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"മിസ്‌ഡ് കോൾ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"മിസ്ഡ് ഔദ്യോഗിക കോൾ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"മിസ്‌ഡ് കോളുകൾ"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> മിസ്‌ഡ് കോളുകൾ"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"തിരിച്ചുവിളിക്കുക"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"സന്ദേശം"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> വോയ്‌സ്‌മെയിലുകൾ </item>
+      <item quantity="one">വോയ്‌സ്‌മെയിൽ</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"പ്ലേ ചെയ്യുക"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> എന്നയാളിൽ നിന്നുള്ള പുതിയ വോയ്‌സ്‌മെയിൽ"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"വോയ്‌സ്‌മെയിൽ പ്‌ലേ ചെയ്യാനായില്ല"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"വോയ്‌സ്‌മെയിൽ ലോഡുചെയ്യുന്നു..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"വോയ്‌സ്‌മെയിൽ ലോഡുചെയ്യാനായില്ല"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"വോയ്‌സ്മെയിൽ ഉള്ള കോളുകൾ മാത്രം"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"ഇൻകമിംഗ് കോളുകൾ മാത്രം"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"ഔട്ട്‌ഗോയിംഗ് കോളുകൾ മാത്രം"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"മിസ്‌ഡ് കോളുകൾ മാത്രം"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"ഏതെങ്കിലും നമ്പറിലേക്ക് വിളിക്കാതെ തന്നെ, വോയ്സ്‌മെയിൽ കാണുക, കേൾക്കുക. ഡാറ്റാ നിരക്കുകൾ ബാധകമായേക്കാം."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"ക്രമീകരണം"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"വോയ്‌സ്‌മെയിൽ അപ്‌ഡേറ്റുകൾ ലഭ്യമല്ല"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"പുതിയ വോയ്‌സ്‌മെയിൽ കാത്തിരിക്കുന്നു. ഇപ്പോൾ ലോഡുചെയ്യാനാവില്ല."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സജ്ജീകരിക്കുക"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ഓഡിയോ ലഭ്യമല്ല"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"സജ്ജമാക്കുക"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"വോയ്‌സ്‌മെയിൽ വിളിക്കുക"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"നമ്പർ തിരഞ്ഞെടുക്കുക"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"നമ്പർ തിരഞ്ഞെടുക്കുക"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ഈ തിരഞ്ഞെടുക്കൽ ഓർക്കുക"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"തിരയുക"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ഡയൽ ചെയ്യുക"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ഡയൽ ചെയ്യാനുള്ള നമ്പർ"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"പ്ലേബാക്ക് പ്ലേ ചെയ്യുക അല്ലെങ്കിൽ നിർത്തുക"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"സ്‌പീക്കർ ഫോൺ ഓണാക്കുക അല്ലെങ്കിൽ ഓഫാക്കുക"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"പ്ലേബാക്ക് സ്ഥാനം തിരയുക"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"പ്ലേബാക്ക് നിരക്ക് കുറയ്‌ക്കുക"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"പ്ലേബാക്ക് നിരക്ക് വർദ്ധിപ്പിക്കുക"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"കോള്‍‌ ചരിത്രം"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"കൂടുതല്‍ ഓപ്‌ഷനുകള്‍"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ഡയൽ പാഡ്"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"ഔട്ട്‌ഗോയിംഗ് മാത്രം കാണിക്കുക"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"ഇൻ‌കമിംഗ് മാത്രം കാണിക്കുക"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"മിസ്‌ഡ് മാത്രം കാണിക്കുക"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"വോയ്‌സ്‌മെയിലുകൾ മാത്രം കാണിക്കുക"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"എല്ലാ കോളുകളും കാണിക്കുക"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2 സെക്കൻഡ് താൽക്കാലികമായി നിർത്തൽ ചേർക്കുക"</string>
+    <string name="add_wait" msgid="3360818652790319634">"കാത്തിരിക്കൽ ചേർക്കുക"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"ക്രമീകരണങ്ങൾ"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"പുതിയ കോണ്‍ടാക്റ്റ്"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"എല്ലാ കോൺടാക്റ്റുകളും"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"കോൾ വിശദാംശങ്ങൾ"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"വിശദാംശങ്ങൾ ലഭ്യമല്ല"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ടച്ച് ടോൺ കീപാഡ് ഉപയോഗിക്കുക"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"വിളിച്ചുകൊണ്ടിരിക്കുന്ന കോളിലേക്ക് മടങ്ങുക"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"കോൾ ചേർക്കുക"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"ഇന്‍കമിംഗ് കോള്‍"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"വിളിച്ച കോൾ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"മിസ്‌ഡ് കോൾ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ഇൻകമിംഗ് വീഡിയോ കോൾ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"വിളിച്ച വീഡിയോ കോൾ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"വീഡിയോ കോൾ നഷ്‌ടമായി"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"വോയ്‌സ്‌മെയിൽ"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"നിരസിച്ച കോൾ"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"ബ്ലോക്കുചെയ്ത കോൾ"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ഇൻകമിംഗ് കോളുകൾ"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"വോയ്‌സ്‌മെയിൽ പ്ലേ ചെയ്യുക"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> എന്ന കോൺടാക്റ്റ് കാണുക"</string>
+    <string name="description_call" msgid="3443678121983852666">"വിളിക്കുക <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> എന്നതിന്റെ കോൺ‌ടാക്റ്റ് വിശദാംശങ്ങൾ"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> കോളുകൾ."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"വീഡിയോ കോൾ."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> എന്നയാൾക്ക് SMS അയയ്‌ക്കുക"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"കേൾക്കാത്ത വോയ്‌സ്‌മെയിൽ"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"ശബ്ദ തിരയൽ ആരംഭിക്കുക"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"വിളിക്കുക <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"അജ്ഞാതം"</string>
+    <string name="voicemail" msgid="3851469869202611441">"വോയ്‌സ്‌മെയിൽ"</string>
+    <string name="private_num" msgid="6374339738119166953">"സ്വകാര്യ നമ്പർ"</string>
+    <string name="payphone" msgid="7726415831153618726">"പണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺ"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> സെക്കൻഡ്"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> മി. <xliff:g id="SECONDS">%s</xliff:g> സെ."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>-ന്"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ഈ നമ്പറിലേക്ക് കോൾ ചെയ്യാനാവില്ല"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"വോയ്‌സ്‌മെയിൽ സജ്ജീകരിക്കുന്നതിന്, മെനു &gt; ക്രമീകരണങ്ങൾ എന്നതിലേക്ക് പോകുക."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"വോയ്‌സ്‌മെയിൽ വിളിക്കാൻ ആദ്യം ഫ്ലൈറ്റ് മോഡ് ഓഫാക്കുക."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"ലോഡുചെയ്യുന്നു..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"സിം കാർഡിൽ നിന്നും ലോഡുചെയ്യുന്നു…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"സിം കാർഡ് കോൺടാക്റ്റുകൾ"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"കോൺടാക്റ്റ് അപ്ലിക്കേഷനൊന്നും ലഭ്യമല്ല"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"വോയ്‌സ് തിരയൽ ലഭ്യമല്ല"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ഫോൺ അപ്ലിക്കേഷൻ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നതിനാൽ ഫോൺ കോൾ ചെയ്യാനാകില്ല."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"അതിനായി ഈ ഉപകരണത്തിൽ അപ്ലിക്കേഷനുകളൊന്നുമില്ല"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"കോണ്‍‌ടാക്റ്റുകള്‍ തിരയുക"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"നമ്പർ ചേർക്കുക അല്ലെങ്കിൽ കോൺടാക്റ്റുകൾ തിരയുക"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"നിങ്ങളുടെ കോൾ ചരിത്രം ശൂന്യമാണ്"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"ഒരു കോൾ ചെയ്യുക"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"നിങ്ങൾക്ക് മിസ്‌ഡ് കോളുകളൊന്നുമില്ല."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"നിങ്ങളുടെ വോയ്സ്മെയിൽ ഇൻബോക്സ് ശൂന്യമാണ്."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"പ്രിയപ്പെട്ടവ മാത്രം കാണിക്കുക"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"കോൾ ചരിത്രം"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"എല്ലാം"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"മിസ്‌ഡ്"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"വോയ്‌സ്‌മെയിൽ"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> ബ്ലോക്കുചെയ്യണോ?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ഈ നമ്പറിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്കുചെയ്യും, വോയ്സ്മെയിലുകളെ സ്വയമേവ ഇല്ലാതാക്കും."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ഈ നമ്പറിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്കുചെയ്യും, എന്നാൽ വിളിക്കുന്നയാൾക്ക് അപ്പോഴും നിങ്ങൾക്ക് വോയ്സ്‌മെയിലുകൾ അയയ്ക്കാൻ കഴിഞ്ഞേക്കാം."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ബ്ലോക്കുചെയ്യുക"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> അൺബ്ലോക്കുചെയ്യണോ?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"നിങ്ങളെ വിളിക്കുന്നതിൽ നിന്ന് ഈ നമ്പർ തുടർന്നങ്ങോട്ട് ബ്ലോക്കുചെയ്യപ്പെടില്ല."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"അൺബ്ലോക്കുചെയ്യുക"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"സ്‌പീഡ് ഡയൽ"</string>
+    <string name="tab_history" msgid="2563144697322434940">"കോൾ ചരിത്രം"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"കോണ്‍ടാക്റ്റുകള്‍"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"വോയ്‌സ്‌മെയിൽ"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"പ്രിയപ്പെട്ടവയിൽ നിന്നും നീക്കംചെയ്‌തു"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"പഴയപടിയാക്കുക"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"വിളിക്കുക <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"പുതിയകോൺടാക്റ്റ് സൃഷ്‌ടിക്കൂ"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"ഒരുകോൺടാക്റ്റിൽ ചേർക്കൂ"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS അയയ്ക്കുക"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"വീഡിയോ കോൾ ചെയ്യുക"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"നമ്പർ ബ്ലോക്കുചെയ്യുക"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> പുതിയ മിസ്‌ഡ് കോളുകൾ"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"ഇതുവരെ ആരും നിങ്ങളുടെ സ്പീഡ് ഡയലിൽ ഇല്ല"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"പ്രിയപ്പെട്ടത് ചേർക്കുക"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"നിങ്ങൾക്ക് ഇതുവരെയും കോൺടാക്റ്റുകൾ ഒന്നുമില്ല."</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"ഒരു കോണ്‍ടാക്റ്റ് ചേര്‍ക്കുക"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"എല്ലാ നമ്പറുകളും കാണാൻ ചിത്രം സ്‌പർശിക്കുക അല്ലെങ്കിൽ വീണ്ടും ക്രമീകരിക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"നീക്കംചെയ്യുക"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"വീഡിയോ കോള്‍"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"ഒരു സന്ദേശം അയയ്‌ക്കുക"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"കോൾ വിശദാംശങ്ങൾ"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്ന നമ്പർ/വ്യക്തിയെ വിളിക്കൂ"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> എന്നതിൽ നിന്നുള്ള മിസ്ഡ് കോൾ."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> എന്നതിൽ നിന്നുള്ള മറുപടി നൽകിയ കോൾ."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> എന്നതിൽ നിന്നുള്ള വായിക്കാത്ത വോയ്സ്മെയിൽ."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> എന്നതിൽ നിന്നുള്ള വോയ്സ്മെയിൽ."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> എന്നതിലേക്കുള്ള കോൾ."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> എന്നതിൽ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"വിളിക്കുക"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> വിളിക്കുക"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നതുമായി വീഡിയോ കോൾ നടത്തുക."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നയാളിൽ നിന്നുള്ള വോയ്‌സ്മെയിൽ കേൾക്കുക"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്ന നമ്പറിൽ/വ്യക്തിയിൽ നിന്നുള്ള വോയ്സ്‌മെയിൽ പ്ലേ ചെയ്യുക"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്ന നമ്പറിൽ/വ്യക്തിയിൽ നിന്നുള്ള വോയ്സ്‌മെയിൽ തൽക്കാലം നിർത്തുക"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്ന നമ്പറിൽ/വ്യക്തിയിൽ നിന്നുള്ള വോയ്സ്മെയിൽ ഇല്ലാതാക്കുക"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> പുതിയ വോയ്‌സ്‌മെയിലുകൾ</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> പുതിയ വോയ്‌സ്‌മെയിൽ</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നതിനായി കോൺടാക്റ്റ് സൃഷ്‌ടിക്കുക"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"നിലവിലുള്ള കോൺടാക്റ്റിലേക്ക് <xliff:g id="NAMEORNUMBER">^1</xliff:g> ചേർക്കുക"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നയാളുടെ കോൾ വിശദാംശങ്ങൾ"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"കോൾ ചരിത്രത്തിൽ നിന്ന് ഇല്ലാതാക്കി"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ഇന്ന്"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ഇന്നലെ"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"പഴയത്"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"കോൾ ലിസ്‌റ്റ്"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"സ്‌പീക്കർ ഓണാക്കുക."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"സ്‌പീക്കർ ഓഫാക്കുക."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"വേഗത്തിൽ പ്ലേചെയ്യുക."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"കുറഞ്ഞവേഗതയിൽ പ്ലേചെയ്യുക."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"പ്ലേബാക്ക് ആരംഭിക്കുകയോ താൽക്കാലികമായി നിർത്തുകയോ ചെയ്യുക."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ഡിസ്‌പ്ലേ ഓപ്‌ഷനുകൾ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ശബ്‌ദവും വൈബ്രേഷനും"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"പ്രവേശനക്ഷമത"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ഫോൺ റിംഗ്ടോൺ"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"കോളുകൾക്കും വൈബ്രേറ്റ്"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ഡയൽപാഡ് ടോണുകൾ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ഡയൽപാഡ് ടോണിന്റെ ദൈർഘ്യം"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"സാധാരണം"</item>
+    <item msgid="6177579030803486015">"ദൈർഘ്യമുള്ളത്"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ദ്രുത പ്രതികരണങ്ങൾ"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"കോളുകൾ"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"കോൾ ബ്ലോക്കുചെയ്യൽ"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"കോൾ ബ്ലോക്കുചെയ്യൽ താൽക്കാലികമായി ഓഫാണ്"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"കഴിഞ്ഞ 48 മണിക്കൂറിനുള്ളിൽ നിങ്ങൾ ഈ ഫോണിൽ നിന്ന് അടിയന്തിര സേവനങ്ങളുമായി ബന്ധപ്പെട്ടതിനാൽ കോൾ ബ്ലോക്കുചെയ്യൽ പ്രവർത്തനരഹിതമാക്കി. 48 മണിക്കൂർ സമയപരിധി കഴിഞ്ഞയുടൻ ഇത് സ്വയമേവ പ്രവർത്തനക്ഷമമാക്കപ്പെടും."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"നമ്പറുകൾ ഇമ്പോർട്ടുചെയ്യുക"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"മറ്റ് ആപ്സ് വഴി വോയ്സ്‌മെയിൽ സ്വയമേവ അയയ്ക്കുന്നതിന് കോൾ ചെയ്യുന്നവരിൽ ചിലരെ നിങ്ങൾ മുമ്പ് അടയാളപ്പെടുത്തി."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"നമ്പറുകൾ കാണുക"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"ഇമ്പോർട്ടുചെയ്യുക"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"ഇമ്പോർട്ടുചെയ്യൽ പരാജയപ്പെട്ടു"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"നമ്പർ അൺബ്ലോക്കുചെയ്യുക"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"നമ്പർ ചേർക്കുക"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ഈ നമ്പറുകളിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്കുചെയ്യും, വോയ്സ്മെയിലുകളെ സ്വയമേവ ഇല്ലാതാക്കും."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ഈ നമ്പറുകളിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്കുചെയ്യും, എന്നാൽ വിളിക്കുന്നവർക്ക് അപ്പോഴും നിങ്ങൾക്ക് വോയ്സ്‌മെയിലുകൾ അയയ്ക്കാൻ കഴിഞ്ഞേക്കാം."</string>
+    <string name="block_list" msgid="7760188925338078011">"ബ്ലോക്കുചെയ്ത നമ്പറുകൾ"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> അസാധുവാണ്."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"ഇതിനകം തന്നെ <xliff:g id="NUMBER">%1$s</xliff:g> ബ്ലോക്കുചെയ്തിരിക്കുന്നു"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"48 മണിക്കൂർ നേരത്തേക്ക് കോൾ ബ്ലോക്കുചെയ്യൽ പ്രവർത്തനരഹിതമാക്കി"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"എമർജൻസി കോൾ നടത്തിയതിനാൽ പ്രവർത്തനരഹിതമാക്കി."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"കോളിംഗ് അക്കൗണ്ട്"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ഓണാക്കുക"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"അനുമതികൾ സജ്ജമാക്കുക"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"സ്പീഡ് ഡയൽ പ്രവർത്തനക്ഷമാക്കുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"നിങ്ങളുടെ കോൾ ലോഗ് കാണുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"നിങ്ങളുടെ കോൺടാക്റ്റുകൾ കാണുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ ആക്സസ് ചെയ്യുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"നിങ്ങളുടെ കോൺടാക്റ്റുകൾ തിരയുന്നതിന് കോൺടാക്റ്റുകൾക്കുള്ള അനുമതികൾ ഓണാക്കുക."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"കോൾ വിളിക്കുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"സിസ്റ്റം ക്രമീകരണത്തിലേക്ക് എഴുതാൻ ഫോൺ ആപ്പിന് അനുമതിയില്ല."</string>
+</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
new file mode 100644
index 0000000..48a5535
--- /dev/null
+++ b/res/values-mn-rMN/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Гар утас"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Утас"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Утасны дуудлага хийх дэлгэц"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Утас"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Дуудлагын түүх"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Тохиромжгүй дугаарыг мэдээлэх"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Дугаар хуулах"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Галиглалыг хуулах"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Дугаар блоклох"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g>-г блоклосон"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Дугаар блокноос гаргах"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g>-г блокоос гаргасан"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"БУЦААХ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Устгах"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Залгахын өмнө дугаар засах"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Дуудлагын түүхийг устгах уу?"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Дуут шууданг устгах"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Дуут шууданг устгасан"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"БУЦААХ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Дуудлагын түүхийг устгах уу?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Энэ нь таны хийсэн бүх дуудлагыг түүхээс устгана."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Дуудлагын түүхийг устгаж байна..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Утас"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Аваагүй дуудлага"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Аваагүй албаны дуудлага"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Аваагүй дуудлага"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> аваагүй дуудлага"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Буцааж залгах"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Зурвас"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Дуут шуудан </item>
+      <item quantity="one">Дуут шуудан</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Тоглуулах"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>-с ирсэн шинэ дуут шуудан"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Дуут шууданг тоглуулж чадсангүй"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Дуут шууданг ачаалж байна..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Дуут шууданг ачаалж чадсангүй"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Зөвхөн дуут шуудантай дуудлагуудыг"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Зөвхөн ирсэн дуудлага"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Зөвхөн залгасан дуудлагуудыг"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Зөвхөн аваагүй дуудлагуудыг"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Уншиж болохуйц дуут шуудан"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Дугаар луу залгалгүйгээр дуут шууданг харах болон сонсоорой. Дата ашиглалтын төлбөр гарч болзошгүй."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Тохиргоо"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Дуут шуудангийн шинэчлэлтүүд байхгүй байна"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Шинэ дуут шуудан ирсэн байна. Гэвч одоохондоо ачаалах боломжгүй байна."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Дуут шуудангаа тохируулах"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Дуу байхгүй байна"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Тохируулах"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Дуут шуудан руу залгах"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Дугаар сонгоно уу"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Дугаар сонгоно уу"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Энэ сонголтыг санах"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"хайх"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"залгах"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"залгах дугаар"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Тоглуулах эсхүл зогсоох"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Чанга яригчийг асаах буюу унтраах"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Тоглуулах байрлалыг хайх"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Тоглуулах хурдыг бууруулах"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Тоглуулах хурдыг нэмэгдүүлэх"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Дуудлагын түүх"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Нэмэлт сонголтууд"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"дугаар цуглуулагч"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Зөвхөн залгасан дуудлагуудыг харуулах"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Зөвхөн ирсэн дуудлагуудыг харуулах"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Зөвхөн аваагүй дуудлагуудыг харуулах"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Зөвхөн дуут шуудангуудыг харуулах"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Бүх дуудлагыг харуулах"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-сек зогсолт нэмэх"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Хүлээлт нэмэх"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Тохиргоо"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Шинэ харилцагч"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Бүх харилцагчид"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Дуудлагын мэдээлэл"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Мэдээлэл байхгүй байна"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Хүрэлтээр дуугардаг гар ашиглах"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Үргэлжилж буй дуудлага руу буцах"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Дуудлага нэмэх"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Ирж буй дуудлага"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Залгасан дуудлага"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Аваагүй дуудлага"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Ирж буй видео дуудлага"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Залгасан видео дуудлага"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Аваагүй видео дуудлага"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Дуут шуудан"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Татгалзсан дуудлага"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Блоклосон дуудлага"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Ирж буй дуудлага"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Дуут шууданг тоглуулах"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> харилцагчийг харах"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> руу залгах"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>-н харилцагчийн мэдээлэл"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> дуудлага."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Видео дуудлага."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g>-д мессеж илгээх"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Сонсоогүй дуут шуудан"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Дуун хайлтыг эхлүүлэх"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> руу залгах"</string>
+    <string name="unknown" msgid="740067747858270469">"Тодорхойгүй"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Дуут шуудан"</string>
+    <string name="private_num" msgid="6374339738119166953">"Нууцлагдсан дугаар"</string>
+    <string name="payphone" msgid="7726415831153618726">"Payphone"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> минут <xliff:g id="SECONDS">%s</xliff:g> секунд"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g>-д"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Энэ дугаар луу залгах боломжгүй байна"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Дуут шууданг тохируулахын тулд Цэс &gt; Тохиргоо руу очно уу."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Дуут шуудан руу залгахын тулд юуны өмнө Нислэгийн төлвийг идэвхгүйжүүлнэ үү."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Ачааллаж байна..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM картаас уншиж байна…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM картны харилцагчид"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Ямар ч харилцагчдын апликейшн байхгүй байна."</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Дуут хайлт хийх боломжгүй байна"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Утас аппликешныг идэвхгүйжүүлсэн тул утасны дуудлага хийх боломжгүй."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Энэхүү төхөөрөмж дээр тухайн үйлдлийг гүйцэтгэх апликейшн байхгүй байна."</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Харилцагч хайх"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Дугаар нэмэх болон харилцагч хайх"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Таны дуудлагын түүх хоосон байна"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Дуудлага хийх"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Танд аваагүй дуудлага байхгүй байна."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Таны дуут шуудангийн хайрцаг хоосон байна."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Зөвхөн дуртайнуудыг харуулах"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Дуудлагын түүх"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Бүгд"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Аваагүй"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Дуут шуудан"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g>-г блоклох уу?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Энэ дугаараас ирэх дуудлагыг блоклох бөгөөд дуут шуудан автоматаар устах болно."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Энэ дугаараас ирэх дуудлагыг блоклосон, гэхдээ залгагч танд дуут шуудан илгээх боломжтой."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"БЛОКЛОХ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g>-г блокоос гаргах уу?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Энэ дугаараас танд ирэх цаашдын дуудлагыг блоклохгүй."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"БЛОКООС ГАРГАХ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Түргэн залгалт"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Дуудлагын түүх"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Харилцагчид"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Дуут шуудан"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Дуртай жагсаалтаас хасав"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Буцаах"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> руу залгах"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Шинэ хаяг үүсгэх"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Харилцагчийн хаягт нэмэх"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Мессеж илгээх"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Видео дуудлага хийх"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Дугаар блоклох"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> шинэ аваагүй дуудлага"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Таны яаралтай залгах тохиргоон дээр одоогоор харилцагч байхгүй байна"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Таалагдсан хэсэгт нэмэх"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Танд одоогоор харилцагч байхгүй байна"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Харилцагч нэмэх"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Бүх дугаарыг харахын тулд зурган дээр дарна уу эсвэл жагсаалтыг өөрчлөхийн тулд удаан дарна уу."</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Хасах"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видео дуудлага"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Зурвас илгээх"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Дуудлагын мэдээлэл"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> руу дуудлага хийх"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Дараах дуудлагыг хүлээн аваагүй <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Дараах дуудлагыг хүлээн авсан <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>-н уншаагүй дуут шуудан"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>-н дуут шуудан"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Дараах дугаар луу залгасан <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>-р залгасан"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Дуудлага"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> руу дуудлага хийх"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-ын видео дуудлага."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-н дуут шууданг сонсох"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-н дуут шууданг тоглуулах"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-н дуут шууданг зогсоох"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-н дуут шууданг устгах"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> шинэ дуут шуудан</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> шинэ дуут шуудан</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-д харилцагч шинээр үүсгэх"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-ыг одоогийн харилцагч руугаа нэмнэ"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дуудлагын дэлгэрэнгүй мэдээлэл"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Дуудлагын түүхээс устгагдсан"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Өнөөдөр"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Өчигдөр"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Хуучин"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Дуудлагын жагсаалт"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Чанга яригчийг асаах."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Чанга яригчийг унтраах."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Хурдан тоглуулах."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Удаан тоглуулах."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Тоглуулахыг эхлүүлэх буюу түр зогсоох."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Сонголтуудыг харуулах"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Дуу болон чичиргээ"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Хандалт"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Утасны хонхны ая"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Дуудлагад бас чичрэх"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Диалпадын ая"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Дугаар цуглуулах хэсгийн дохионы урт"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Энгийн"</item>
+    <item msgid="6177579030803486015">"Урт"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Шуурхай хариунууд"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Дуудлага"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Дуудлага блоклох"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Дуудлага блоклох тохиргоог түр хугацаагаар унтраасан"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Та сүүлийн 48 цагийн дотор энэ утсаар тусламжийн дуудлага хийсэн тул дуудлага блоклох тохиргоог идэвхгүй болгосон. Энэ тохиргоо нь 48 цагийн хугацаа дуусахад автоматаар идэвхэжнэ."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Импортын тоо"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Тань руу залгасан зарим хүмүүсийг бусад апп ашиглан автоматаар дуут шуудан илгээж байхаар өмнө нь тэмдэглэсэн."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Дугаар харах"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Импортлох"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Импортолж чадсангүй"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Дугаар блокноос гаргах"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Дугаар нэмэх"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Эдгээр дугаараас ирэх дуудлагыг блоклож, дуут шууданг автоматаар устгана."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Эдгээр дугаараас ирэх дуудлагыг блоклож, харин танд дуут шуудан илгээх боломжтой."</string>
+    <string name="block_list" msgid="7760188925338078011">"Блоклосон дугаар"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> хүчингүй байна."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g>-г аль хэдийн блоклосон байна."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Дуудлага блоклохыг 48 цагийн турш идэвхгүй болгосон."</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Яаралтай дуудлага хийсэн тул идэвхгүй болгосон."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Дуудах акаунт"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Идэвхжүүлэх"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Зөвшөөрөл тохируулах"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Яаралтай дуудлагыг идэвхжүүлэхийн тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Дуудлагын жагсаалтыг харахын тулд утасны зөвшөөрлийг идэвхжүүлнэ үү."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Харилцагчдаа харахын тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Дуут шууданд хандахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Харилцагчаа хайхын тулд, Харилцагчийн жагсаалтын зөвшөөрлийг идэвхжүүлнэ үү."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Залгахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Гар утасны апп-д системийн тохиргоо бичих зөвшөөрөл алга."</string>
+</resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
new file mode 100644
index 0000000..503bca4
--- /dev/null
+++ b/res/values-mr-rIN/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"फोन"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"फोन"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"फोन डायलपॅड"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"फोन"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"कॉल इतिहास"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"चुकीच्या नंबरचा अहवाल द्या"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"नंबर कॉपी करा"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"लिप्यंतरण कॉपी करा"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"नंबर अवरोधित करा"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> अवरोधित केला"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"नंबर अनावरोधित करा"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> अनावरोधित केला"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"पूर्ववत करा"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"हटवा"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"कॉल करण्यापूर्वी नंबर संपादित करा"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"कॉल इतिहास साफ करा"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"व्हॉइसमेल हटवा"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"व्हॉइसमेल आढळले"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"पूर्ववत करा"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"कॉल इतिहास साफ करायचा?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"हे आपल्या कॉल इतिहासातून सर्व कॉल हटवेल"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"कॉल इतिहास साफ करत आहे…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"फोन"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"सुटलेला कॉल"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"कार्याचा कॉल चुकविला"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"सुटलेले कॉल"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> सुटलेले कॉल"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"पुन्हा कॉल करा"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"संदेश"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> व्हॉइसमेल </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> व्हॉइसमेल </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"प्ले करा"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> कडील नवीन व्हॉइसमेल"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"व्हॉइसमेल प्ले करू शकलो नाही"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"व्हॉइसमेल लोड करत आहे…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"व्हॉइसमेल लोड करू शकलो नाही"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"केवळ व्हॉइसमेल सह कॉल"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"केवळ येणारे कॉल"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"केवळ केले जाणारे कॉल"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"केवळ सुटलेले कॉल"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"दृश्‍यमान व्हॉइसमेल"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"नंबरवर कॉल न करता आपले व्हॉइसमेल पहा आणि ऐका. डेटा शुल्क लागू होऊ शकतात."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"सेटिंग्ज"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"व्हॉइसमेल अद्यतने उपलब्ध नाहीत"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"नवीन व्हॉइसमेल प्रतीक्षा करत आहे. आत्ता लोड करू शकत नाही."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"आपला व्हॉइसमेल सेट करा"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ऑडिओ उपलब्ध नाही"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"सेट अप"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"व्हॉइसमेलवर कॉल करा"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"नंबर निवडा"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"नंबर निवडा"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ही निवड लक्षात ठेवा"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"शोधा"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"डायल करा"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"डायल करण्यासाठी नंबर"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"प्‍ले करा किंवा प्‍लेबॅक थांबवा"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"स्‍पीकरफोन चालू किंवा बंद करा"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"प्लेबॅक स्थान शोधतात"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"प्‍लेबॅक दर कमी करा"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"प्‍लेबॅक दर वाढवा"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"कॉल इतिहास"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"अधिक पर्याय"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"डायल पॅड"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"केवळ केले जाणारे दर्शवा"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"केवळ येणारे दर्शवा"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"केवळ सुटलेले दर्शवा"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"केवळ व्हॉइसमेल दर्शवा"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"सर्व कॉल दर्शवा"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-सेकंद विराम जोडा"</string>
+    <string name="add_wait" msgid="3360818652790319634">"प्रतीक्षा करा जोडा"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"सेटिंग्ज"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"नवीन संपर्क"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"सर्व संपर्क"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"कॉल तपशील"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"तपशील उपलब्ध नाहीत"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"स्‍पर्श टोन कीपॅडचा वापर करा"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"चालू असलेल्या कॉलवर परत जा"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"कॉल जोडा"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"येणारा कॉल"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"केले जाणारे कॉल"</string>
+    <string name="type_missed" msgid="2720502601640509542">"सुटलेला कॉल"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"येणारा व्हिडिओ कॉल"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"जाणारे व्हिडिओ कॉल"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"सुटलेला व्हिडिओ कॉल"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"व्हॉइसमेल"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"नाकारलेला कॉल"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"अवरोधित केलेला कॉल"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"येणारे कॉल"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"व्हॉइसमेल प्ले करा"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> संपर्क पहा"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> ला कॉल  करा"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> साठी संपर्क तपशील"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> कॉल."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"व्हिडिओ कॉल."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> वर SMS पाठवा"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"न ऐकलेला व्हॉइसमेल"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"व्हॉइस शोध प्रारंभ करा"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> ला कॉल  करा"</string>
+    <string name="unknown" msgid="740067747858270469">"अज्ञात"</string>
+    <string name="voicemail" msgid="3851469869202611441">"व्हॉइसमेल"</string>
+    <string name="private_num" msgid="6374339738119166953">"खाजगी नंबर"</string>
+    <string name="payphone" msgid="7726415831153618726">"सार्वजनिक फोन"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> सेकंद"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> मिनिट <xliff:g id="SECONDS">%s</xliff:g> सेकंद"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> रोजी <xliff:g id="TIME">%2$s</xliff:g> वाजता"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"या नंबरवर कॉल करू शकत नाही"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"व्हॉइसमेल सेट करण्‍यासाठी, मेनू आणि सेटिंग्‍ज वर जा."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"व्हॉइसमेलला कॉल करण्यासाठी, प्रथम विमान मोड बंद करा."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"लोड करीत आहे..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"सिम कार्ड मधून लोड करीत आहे..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"सिम कार्ड संपर्क"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"कोणताही संपर्क अॅप उपलब्ध नाही"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"व्हॉइस शोध उपलब्ध नाही"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"फोन अनुप्रयोग अक्षम केला गेला असल्याने फोन कॉल करणे शक्य नाही."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"या डिव्हाइसवर त्यासाठी कोणताही अॅप नाही"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"संपर्क शोधा"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"नंबर जोडा किंवा संपर्क शोधा"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"आपला कॉल इतिहास रिक्त आहे"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"एक कॉल करा"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"आपल्‍याकडे कोणतेही सुटलेले कॉल नाहीत."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"आपला व्हॉइसमेल इनबॉक्स रिक्त आहे."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"केवळ आवडीचे दर्शवा"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"कॉल इतिहास"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"सर्व"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"सुटलेले"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"व्हॉइसमेल"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> अवरोधित करायचा?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"या नंबर वरून केलेले कॉल अवरोधित केले जातील आणि व्हॉइसमेल स्वयंचलितपणे हटविले जातील."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"या नंबर वरून केलेले कॉल अवरोधित केले जातील परंतु कॉलर आपल्‍यासाठी व्हॉइसमेल सोडण्यात अद्याप सक्षम असू शकेल."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"अवरोधित करा"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> ला अनावरोधित करायचे?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"या नंबरला यापुढे आपल्‍याला कॉल करण्‍यासाठी अवरोधित केले जाणार नाही."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"अनावरोधित करा"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"स्पीड डायल"</string>
+    <string name="tab_history" msgid="2563144697322434940">"कॉल इतिहास"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"संपर्क"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"व्हॉइसमेल"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"आवडी मधून काढले"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"पूर्ववत करा"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ला कॉल  करा"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"नवीन संपर्क तयार करा"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"संपर्कांमध्‍ये जोडा"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS पाठवा"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"व्‍हिडिओ कॉल करा"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"नंबर अवरोधित करा"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> नवीन सुटलेले कॉल"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"अद्याप आपल्‍या स्पीड डायलवर कोणीही नाही"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"एक आवडते जोडा"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"आपल्‍याकडे अद्याप कोणतेही संपर्क नाहीत"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"एक संपर्क जोडा"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"सर्व नंबर पाहण्यासाठी प्रतिमेस स्पर्श करा किंवा पुन्हा क्रम लावण्यासाठी स्पर्श करा आणि धरून ठेवा"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"काढा"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"व्हिडिओ कॉल"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"एक संदेश पाठवा"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"कॉल तपशील"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> वर कॉल करा"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> वरून कॉल सुटला."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> वरून कॉलला उत्तर दिले."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> कडून न वाचलेला व्हॉइसमेल."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> कडून व्हॉॅइसमेल."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> वर कॉल करा."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> वर"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"कॉल करा"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> वर कॉल करा"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"व्हिडिओ कॉल <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> कडील व्हॉइसमेल ऐका"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> कडील व्हॉइसमेल प्ले करा"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> कडील व्हॉइसमेल ला विराम द्या"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> वरील व्हॉइसमेल हटवा"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> नवीन व्हॉइसमेल</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> नवीन व्हॉइसमेल</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> साठी संपर्क तयार करा"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"विद्यमान संपर्कांमध्ये <xliff:g id="NAMEORNUMBER">^1</xliff:g> जोडा"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> साठी कॉल तपशील"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"कॉल इतिहासातून हटविले"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"आज"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"काल"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"अधिक जुने"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"कॉल सूची"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"स्पीकर चालू करा."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"स्पीकर बंद करा."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"अधिक जलद प्ले करा."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"अधिक धीमे प्ले करा."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"प्लेबॅक प्रारंभ करा किंवा त्यास विराम द्या."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"पर्याय प्रदर्शित करा"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ध्वनी आणि कंपने"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"प्रवेशयोग्यता"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"फोन रिंगटोन"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"कॉल साठी कंपन देखील करा"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"डायलपॅड टोन"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"डायलपॅड टोन लांबी"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"सामान्य"</item>
+    <item msgid="6177579030803486015">"लांब"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"द्रुत प्रतिसाद"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"कॉल"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"कॉल अवरोधित करणे"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"कॉल अवरोधित करणे तात्पुरते बंद"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"आपण मागील 48 तासात या फोनवरून आणीबाणी सेवांशी संपर्क साधला असल्याने कॉल अवरोधित करणे अक्षम केले गेले आहे. एकदा 48 तासांचा कालावधी कालबाह्य झाला की ते स्वयंचलितपणे पुन्हा सक्षम केले जाईल."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"नंबर अायात करा"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"आपण पूर्वीपासून काही कॉलरना स्वयंचलितपणे इतर अॅप्सद्वारे व्हॉइसमेलमध्ये पाठविण्यासाठी चिन्हांकित केले आहे."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"नंबर पहा"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"आयात करा"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"आयात अयशस्वी झाले"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"नंबर अनावरोधित करा"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"नंबर जोडा"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"या नंबरवरून केलेले कॉल अवरोधित केले जातील आणि व्हॉइसमेल स्वयंचलितपणे हटविले जातील."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"या नंबर वरून केलेले कॉल अवरोधित केले जातील परंतु ते आपल्‍यासाठी व्हॉइसमेल सोडण्यात अद्याप कदाचित सक्षम असतील."</string>
+    <string name="block_list" msgid="7760188925338078011">"अवरोधित केलेले नंबर"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> अवैध आहे."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> आधीच अवरोधित केलेला आहे."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"कॉल अवरोधित करणे 48 तासांसाठी अक्षम केले"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"एक आणीबाणीचा कॉल केल्‍याने अक्षम केले."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"कॉल करण्याची खाती"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"चालू करा"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"परवानग्या सेट करा"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"स्पीड डायल सक्षम करण्‍यासाठी, संपर्क परवानगी चालू करा."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"आपला कॉल लॉग पाहण्‍यासाठी, फोन परवानगी चालू करा."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"आपले संपर्क पाहण्‍यासाठी, संपर्क परवानगी चालू करा."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"आपल्‍या व्हॉइसमेलमध्‍ये प्रवेश करण्‍यासाठी, फोन परवानगी चालू करा."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"आपले संपर्क शोधण्‍यासाठी, संपर्क परवानग्या चालू करा."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"कॉल करण्यासाठी, फोन परवानगी चालू करा."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"फोन अॅपला सिस्टीम स‍ेटिंग्जमध्ये लिहिण्याची परवानगी नाही."</string>
+</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
new file mode 100644
index 0000000..30c5a09
--- /dev/null
+++ b/res/values-ms-rMY/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Pad Dail Telefon"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Sejarah panggilan"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Laporkan nombor yang tidak tepat"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Salin nombor"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Salin transkripsi"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Sekat nombor"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> disekat"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Nyahsekat nombor"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> dinyahsekat"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"BUAT ASAL"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Padam"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Edit nombor sebelum memanggil"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Kosongkan sejarah panggilan"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Padamkan mel suara"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mel suara dipadamkan"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"BUAT ASAL"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Kosongkan sejarah panggilan?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tindakan ini akan memadamkan semua panggilan daripada sejarah anda"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Mengosongkan sejarah panggilan..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Panggilan terlepas"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Panggilan terlepas daripada tempat kerja"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Panggilan terlepas"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> panggilan terlepas"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Panggil balik"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mesej"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Mel suara </item>
+      <item quantity="one">Mel suara</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Main"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Mel suara baharu daripada <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Tidak dapat memainkan mel suara"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Memuatkan mel suara..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Tidak dapat memuatkan mel suara"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Panggilan dengan mel suara sahaja"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Panggilan masuk sahaja"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Panggilan keluar sahaja"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Panggilan terlepas sahaja"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Mel suara visual"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Lihat dan dengar mel suara anda tanpa perlu memanggil nombor. Caj data mungkin dikenakan."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Tetapan"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Kemas kini mel suara tidak tersedia"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Mel suara baharu sedang menunggu. Tidak dapat memuat sekarang."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Sediakan mel suara anda"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio tidak tersedia"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Menyediakan"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Panggil mel suara"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Pilih nombor"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Pilih nombor"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Ingat pilihan ini"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"cari"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"dail"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"nombor untuk didail"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Mainkan atau berhenti main balik"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Hidupkan atau matikan pembesar suara"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Dapatkan kedudukan main balik"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Kurangkan kadar main balik"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Tingkatkan kadar main balik"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Sejarah Panggilan"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Lagi pilihan"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"pad dail"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Tunjuk panggilan keluar shj"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Tunjuk panggilan masuk shj"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Tunjuk panggilan terlepas shj"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Tunjukkan mel suara sahaja"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Tunjukkan semua panggilan"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Tambah jeda 2 saat"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Tambah penungguan"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Tetapan"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Kenalan baharu"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Semua kenalan"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Butiran panggilan"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Butiran tidak tersedia"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Gunakan pad kekunci nada sentuh"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Kembali ke panggilan yang sedang berlangsung"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Tambah panggilan"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Panggilan masuk"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Panggilan keluar"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Panggilan tidak dijawab"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Panggilan video masuk"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Panggilan video keluar"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Telah terlepas panggilan video"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Mel suara"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Panggilan yang ditolak"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Panggilan yang disekat"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Panggilan masuk"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Mainkan mel suara"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Lihat kenalan <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Panggil <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Butiran hubungan untuk <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> panggilan."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Panggilan video."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Hantar SMS kepada <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mel suara belum didengar"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Mulakan carian suara"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Tidak diketahui"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Mel suara"</string>
+    <string name="private_num" msgid="6374339738119166953">"Nombor peribadi"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefon Awam"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> saat"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> saat"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> pada <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Tidak dapat menghubungi nombor ini"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Untuuk menyediakan mel suara, pergi ke Menu &gt; Tetapan."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Untuk membuat panggilan ke mel suara, mula-mula matikan mod Pesawat."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Memuatkan…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Memuatkan dari kad SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kenalan kad SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Tiada apl kenalan tersedia"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Carian suara tidak tersedia"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Tidak boleh membuat panggilan telefon kerana aplikasi Telefon telah dilumpuhkan."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Tiada apl untuk tindakan itu pada peranti ini"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Cari kenalan"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Tambahkn no. atau cari kenalan"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Sejarah panggilan anda kosong"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Buat panggilan"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Anda tiada panggilan terlepas."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Peti masuk mel suara anda kosong."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Tunjukkan kegemaran sahaja"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Sejarah Panggilan"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Semua"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Tidak dijawab"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Mel suara"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Sekat <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Panggilan daripada nombor ini akan disekat dan mel suara akan dipadamkan secara automatik."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Panggilan daripada nombor ini akan disekat, tetapi pemanggil masih boleh meninggalkan mel suara kepada anda."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"SEKAT"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Nyahsekat <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Nombor ini tidak akan disekat daripada memanggil anda lagi."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"NYAHSEKAT"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Dail laju"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Sejarah Panggilan"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kenalan"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Mel suara"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Dialih keluar daripada kegemaran"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Buat asal"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Buat kenalan baharu"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Tambahkan pada kenalan"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Hantar SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Buat panggilan video"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Sekat nombor"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> panggilan terlepas baharu"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Belum ada sesiapa pada dail pantas anda"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Tambahkan kegemaran"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Anda belum mempunyai sebarang kenalan"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Tambahkan kenalan"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Sentuh imej untuk melihat semua nombor atau sentuh &amp; tahan untuk menyusun semula"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Alih keluar"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Panggilan video"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Hantar mesej"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Butiran panggilan"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Panggil <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Panggilan tidak dijawab daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Panggilan telah dijawab daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Mel suara yang belum dibaca daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Mel suara daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Buat panggilan kepada <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"pada <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Panggil"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Panggil <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Panggilan video <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Dengar mel suara daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Mainkan mel suara daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Jeda mel suara daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Padamkan mel suara daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> mel suara baharu</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> mel suara baharu</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Buat kenalan untuk <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Tambahkan <xliff:g id="NAMEORNUMBER">^1</xliff:g> pada kenalan yang sedia ada"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Butiran panggilan untuk <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Dipadamkan dari sejarah panggilan"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Hari ini"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Semalam"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Lebih lama"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Senarai panggilan"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Hidupkan pembesar suara."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Matikan pembesar suara."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Main lebih cepat."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Main lebih perlahan."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Mulakan atau jeda main balik."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Pilihan paparan"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Bunyi dan getaran"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Kebolehaksesan"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Nada dering telefon"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Juga bergetar untuk panggilan"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Nada pad dail"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Panjang nada pad dail"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Biasa"</item>
+    <item msgid="6177579030803486015">"Panjang"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respons pantas"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Panggilan"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Sekatan panggilan"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Sekatan panggilan dimatikan sementara"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Sekatan panggilan telah dilumpuhkan kerana anda menghubungi perkhidmatan kecemasan daripada telefon ini dalam masa 48 jam yang lalu. Ciri ini akan didayakan semula secara automatik apabila tempoh 48 jam berakhir."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Import nombor"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Sebelum ini anda telah menandakan beberapa pemanggil dihantar ke mel suara secara automatik melalui aplikasi lain."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Lihat nombor"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Import"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Pengimportan gagal"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Nyahsekat nombor"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Tambah nombor"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Panggilan daripada nombor ini akan disekat dan mel suara akan dipadamkan secara automatik."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Panggilan daripada nombor ini akan disekat, tetapi mereka masih boleh meninggalkan mel suara kepada anda."</string>
+    <string name="block_list" msgid="7760188925338078011">"Nombor yang disekat"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> tidak sah."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> sudah disekat."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Sekatan panggilan dilumpuhkan selama 48 jam"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Dilumpuhkan kerana panggilan kecemasan telah dibuat."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Akaun panggilan"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Hidupkan"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Tetapkan kebenaran"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Untuk mendayakan dail laju, hidupkan kebenaran Kenalan."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Untuk melihat log panggilan anda, hidupkan kebenaran Telefon."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Untuk melihat kenalan anda, hidupkan kebenaran Kenalan."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Untuk mengakses mel suara anda, hidupkan kebenaran Telefon."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Untuk mencari kenalan anda, hidupkan kebenaran Kenalan."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Untuk membuat panggilan, hidupkan kebenaran Telefon."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Apl telefon tiada kebenaran untuk menulis ke tetapan sistem."</string>
+</resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
new file mode 100644
index 0000000..69f9efe
--- /dev/null
+++ b/res/values-my-rMM/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ဖုန်း"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ဖုန်း"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ဖုန်းခလုတ်ခုံ"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ဖုန်း"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"ခေါ်ဆိုမှု မှတ်တမ်း"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"မမှန်ကန်သည့် နံပါတ်အား သတင်းပို့ပါ"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"နံပါတ်ကိုကူးရန်"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"အသံမှစာအဖြစ်ဘာသာပြန်ခြင်းကို ကူးရန်"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"နံပါတ်ကို ပိတ်ရန်"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> ကိုပိတ်ဆို့လိုက်ပါပြီ"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"နံပါတ်ကို ဖွင့်မည်"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> ကိုပိတ်ဆို့ခြင်းမှ ဖယ်ရှားလိုက်ပါပြီ"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"နောက်ပြန်လုပ်ပါ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"ဖျက်ရန်"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"မခေါ်ဆိုမီ နံပါတ်ကိုတည်းဖြတ်ရန်"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"ခေါ်ဆိုမှု မှတ်တမ်း ရှင်းရန်"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"အသံပို့စာ အားဖျက်ရန်"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"အသံမေးလ် ရှာတွေ့ခဲ့"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ပြန်ဖျက်ရန်"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ခေါ်ဆိုမှု မှတ်တမ်းကို ရှင်းပစ်ရမလား?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ဒါက သင့် မှတ်တမ်းထဲက ခေါ်ဆိုမှုများ  အားလုံးကို ဖျက်ပစ်မည်"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ခေါ်ဆိုမှု မှတ်တမ်းကို ရှင်းနေ…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ဖုန်း"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"လွတ်သွားသော ခေါ်ဆိုမှု"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"လွတ်သွားသော အလုပ်ဖုန်းခေါ်ဆိုမှု"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"လွတ်သွားသော ခေါ်ဆိုမှုများ"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"လွတ်သွားသော ခေါ်ဆိုမှု <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"ပြန်ခေါ်ပါ"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"မက်ဆေ့ဂျ်"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> အသံမေးလ်များ </item>
+      <item quantity="one"> အသံမေးလ်</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"နားထောင်သည်"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> ဆီမှ အသံစာ အသစ်"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"အသံမေးလ်ကို ဖွင့်မပေးနိုင်ခဲ့"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"အသံမေးလ်ကို တင်ပေးနေ…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"အသံမေးလ်ကို တင်မပေးနိုင်ခဲ့"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"အသံမေးလ်ပါသော အဝင်ခေါ်ဆိုမှုများသာ"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"အဝင်ဖုန်းသာ"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"အထွက်ခေါ်ဆိုမှုများသာ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"လွတ်သွားသော ဖုန်းသာ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"အသံအသုံးပြုစာအား စာသားအသွင်ပြောင်းခြင်း"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"နံပါတ်တစ်ခုသို့ ခေါ်ဆိုရန် မလိုဘဲ၊ သင်၏ အသံအသုံးပြုစာအား ကြည့်ရှု နားထောင်ပါ။ ဒေတာအတွက် ကျသင့်ငွေရှိနိုင်သည်။"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"ဆက်တင်များ"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"အသံမေးလ် မွမ်းမံမှုများ မရှိ"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"အသံမေးလ် အသစ် စောင့်နေသည်။ ယခုချက်ချင်း တင်မပေးနိုင်ပါ။"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"သင်၏ အသံမေးလ်ကို စဖွင့်သတ်မှတ်ရန်"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"အသံ မရှိ"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"အစီအမံလုပ်ပါ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"အသံပို့စာစနစ်ခေါ်ရန်"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"နံပါတ်ရွေးပါ"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"နံပါတ်ရွေးပါ"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ဒီရွေးချယ်မှုကို မှတ်ထားပါ"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ရှာဖွေရန်"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ဖုန်းခေါ်သည်"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ခေါ်ရန် နံပါတ်"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"ပြန်ဖွင့်ပြမှုကို ဖွင့်ရန် သို့မဟုတ် ရပ်ရန်"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"စပီကာဖုန်းကို ဖွင့် သို့မဟုတ် ပိတ်ရန်"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"အသံပြန်ဖွင့်ရေး နေရာကို ရှာရန်"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"ပြန်ဖွင့်မှု နှုန်းကို လျှော့ချရန်"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"ပြန်ဖွင့်မှု နှုန်းကို မြှင့်ရန်"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"ယခင်ခေါ်ဆိုမှုများ"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"ပိုမိုရွေးချယ်စရာများ"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ဖုန်းနံပါတ်ကွက်"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"အထွက်ခေါ်ဆိုခြင်းများသာပြပါ"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"အဝင်ခေါ်ဆိုမှုသာ ပြပါ"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"လွတ်သွားသော ခေါ်ဆိုမှုများသာပြပါ"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"အသံပို့စာများသာ ပြပါ"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"ဖုန်းခေါ်မှုအားလုံးပြရန်"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"၂စက္ကန့်ရပ်ဆိုင်းရန် ထည့်ပါ"</string>
+    <string name="add_wait" msgid="3360818652790319634">"စောင့်ဆိုင်းခြင်း ထည့်ပါ"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"ဆက်တင်များ"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"အဆက်အသွယ်အသစ်"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"လိပ်စာများအားလုံး"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"ဖုန်းခေါ်မှု အသေးစိတ်အချက်အလက်"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"အသေးစိတ် မရှိ"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"touch tone ကီးခလုတ် ကိုအသုံးပြုပါ"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"ဖုန်းပြန်ခေါ်မှု ပြုလုပ်နေစဉ်"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"ဖုန်းခေါ်မှု ထပ်ထည့်ပါ"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"အဝင်ခေါ်ဆိုမှု"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"အထွက်ဖုန်း"</string>
+    <string name="type_missed" msgid="2720502601640509542">"လွဲသွားသော ဖုန်းခေါ်မှု"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ဝင်လာသည့် ဗီဒီယို ခေါ်ဆိုမှု"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"ပြုလုပ်နေဆဲ ဗီဒီယို ခေါ်ဆိုမှု"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"လွတ်သွားသော ဗီဒီယို ခေါ်ဆိုမှု"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"အသံစာပို့စနစ်"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"ငြင်းဆိုခဲ့သည့် ခေါ်ဆိုမှု"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"ခေါ်ဆိုမှု ပိတ်ဆို့ထား"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"အဝင်ခေါ်ဆိုမှုများ"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"အသံပို့စာ နားထောင်ရန်"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> လိပ်စာကြည့်ရန်"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> ကိုခေါ်ပါ"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ရဲ့ အဆက်အသွယ် အသေးစိတ်"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ခါ"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ဗီဒီယို ခေါ်ဆိုမှု"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g>ထံသို့  SMS ပို့ရန်"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"မနားထောင်ရသေးသော အသံပို့စာ"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"အသံဖွင့်ရှာဖွေမှု စရန်"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> ကိုခေါ်ပါ"</string>
+    <string name="unknown" msgid="740067747858270469">"အကြောင်းအရာ မသိရှိ"</string>
+    <string name="voicemail" msgid="3851469869202611441">"အသံစာပို့စနစ်"</string>
+    <string name="private_num" msgid="6374339738119166953">"လျို့ဝှက် နံပါတ်"</string>
+    <string name="payphone" msgid="7726415831153618726">"ငွေပေးရသည့်ဖုန်း"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> စက္ကန့်"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> မိနစ် <xliff:g id="SECONDS">%s</xliff:g> စက္ကန့်"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g> ၌"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ဒီနံပါတ်ကို မခေါ်ဆိုနိုင်ပါ"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"အသံစာပို့စနစ်ကို ပြင်ဆင်ရန်၊ မီနူး ပြီးနောက် ဆက်တင် သို့သွားပါ"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"အသံစာပို့စနစ်ကို ခေါ်ဆိုမှုပြုရန် လေယာဉ်ပျံပေါ်သုံးစနစ်ကို ပိတ်ပါ"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"ဖွင့်နေစဉ်"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEIDနံပါတ်"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"ဆင်းမ်ကဒ်မှ ဖွင့်နေပါသည်..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"ဆင်းမ်ကဒ်မှ အဆက်အသွယ်များ"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"အဆက်အသွယ်များ app မရှိ"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"အသံဖြင့် ရှာဖွေမှု မရှိ"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ဖုန်း အပလီကေးရှင်းကို ပိတ်ထား၍ ဖုန်း ခေါ်ဆိုမှု မပြုလုပ်နိုင်ခဲ့ပါ။"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"ဒီကိရိယာထဲမှာ အဲဒါ့အတွက် app မရှိပါ"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"အဆက်အသွယ်များရှာပါ"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"နံပါတ်ပေါင်းထည့်ပါ သို့မဟုတ် အဆက်အသွယ်များ ရှာဖွေပါ"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"သင့်ခေါ်ဆိုမှုသမိုင်းတွင် ဘာမှမရှိပါ"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"ခေါ်ဆိုမှု ပြုလုပ်ရန်"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"သင့်တွင် လွဲသွားသည့်ခေါ်ဆိုမှုများ မရှိပါ။"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"သင့်အသံမေးလ် စာတိုက်ပုံးတွင် ဘာမှမရှိပါ။"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"အနှစ်သက်ဆုံးများသာ ပြပါ"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"ခေါ်ဆိုမှုသမိုင်း"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"အားလုံး"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"မကိုင်မိလိုက်သော"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"အသံစာ"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g>ကို ပိတ်ဆို့မလား။"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ဤနံပါတ်မှခေါ်ဆိုမှုများကို ပိတ်ဆို့လိုက်မည်ဖြစ်ပြီး အသံမေးလ်များကို အလိုအလျောက် ဖျက်လိုက်ပါမည်။"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ဤနံပါတ်မှ ခေါ်ဆိုမှုများကို ပိတ်ဆို့လိုက်ပါမည်၊ သို့သော် ၎င်းတို့သည် သင့်ကို အသံမေးလ်ချန်ခဲ့နိုင်ပါသည်။"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ပိတ်ဆို့ပါ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> အား ပိတ်ဆို့မှု ဖယ်ရှားလိုက်ရမလား။"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"ဤနံပါတ်ကို သင့်အား ခေါ်ဆိုမရအောင် မပိတ်ဆို့တော့ပါ။"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ပိတ်ဆို့ခြင်းမှ ဖယ်ရှားပါ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"အမြန် နံပါတ်လှည့်မှု"</string>
+    <string name="tab_history" msgid="2563144697322434940">"ခေါ်ဆိုမှု သမိုင်း"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"အဆက်အသွယ်များ"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"အသံမေးလ်"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"အနှစ်သက်ဆုံးများထဲမှာ ထုတ်လိုက်ပါပြီ"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"နောက်ပြန်လုပ်ပါ"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ကိုခေါ်ပါ"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"အဆက်အသွယ် အသစ် ဖန်တီးရန်"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"အဆက်အသွယ်သို့ ပေါင်းထည့်ရန်"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"စာတို ပို့ရန်"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ဗီဒီယို ခေါ်ဆိုမှု ပြုလုပ်ရန်"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"နံပါတ်ကို ပိတ်ဆို့ရန်"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"လွတ်သွားသောဖုန်း <xliff:g id="NUMBER">%s</xliff:g> ခါ"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"ဘယ်သူမှ သင့်လျှင်မြန်စွာ ခေါ်ဆိုမှုထဲတွင် မရှိသေးပါ"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"အနှစ်သက်ဆုံးတစ်ခု ထည့်ရန်"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"သင့်တွင် မည်သည့်အဆက်အသွယ်မျှ မရှိသေးပါ"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"အဆက်အသွယ်တစ်ယောက် ထည့်မည်"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"နံပါတ်များ အားလုံးကိုကြည့်ရန် ပုံကို ထိပါ သို့မဟုတ် ပြန်စီရန် ထိလျက် &amp; ကိုင်ထားပါ"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"ဖယ်ရှာခြင်း"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ဗီဒီယို ခေါ်ဆိုမှု"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"စာ တစ်စောင် ပို့ပါ"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"ဖုန်းခေါ်မှု အသေးစိတ်အချက်အလက်"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> အား ခေါ်ပါ"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၊ <xliff:g id="TYPEORLOCATION">^2</xliff:g>၊ <xliff:g id="TIMEOFCALL">^3</xliff:g>၊ <xliff:g id="PHONEACCOUNT">^4</xliff:g> မှ ခေါ်ဆိုမှု လွတ်သွား၏။"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၊ <xliff:g id="TYPEORLOCATION">^2</xliff:g>၊ <xliff:g id="TIMEOFCALL">^3</xliff:g>၊ <xliff:g id="PHONEACCOUNT">^4</xliff:g> မှ ခ​ေါ်ဆိုမှုအား ဖြေထား၏။"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၊ <xliff:g id="TYPEORLOCATION">^2</xliff:g>၊ <xliff:g id="TIMEOFCALL">^3</xliff:g>၊ <xliff:g id="PHONEACCOUNT">^4</xliff:g>ထံမှ အသံစာကို ဖတ်ပါ။"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၊ <xliff:g id="TYPEORLOCATION">^2</xliff:g>၊ <xliff:g id="TIMEOFCALL">^3</xliff:g>၊ <xliff:g id="PHONEACCOUNT">^4</xliff:g>ထံမှ အသံစာ။"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၊ <xliff:g id="TYPEORLOCATION">^2</xliff:g>၊ <xliff:g id="TIMEOFCALL">^3</xliff:g>၊ <xliff:g id="PHONEACCOUNT">^4</xliff:g> အား ခေါ်ခြင်း။"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> ၌"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ခေါ်ဆိုမှု"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> အားခေါ်ရန်"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ကိုဗီဒီယိုခေါ်ဆိုမည်။"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ထံမှ အသံစာကို နားထောင်ရန်"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> မှ အသံအသုံးပြုစာအား ဖွင့်ပါ"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> မှ အသံအသုံးပြုစာအား ရပ်ပါ"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> မှ အသံအသုံးပြုစာအား ဖျက်ပါ"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"> အသံသုံးပို့စာ အသစ် <xliff:g id="COUNT_1">%d</xliff:g> ခု</item>
+      <item quantity="one"> အသံသုံးပို့စာ အသစ် <xliff:g id="COUNT_0">%d</xliff:g> ခု</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> အတွက် အဆက်အသွယ် ဖန်တီးမည်"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> အားလက်ရှိ အဆက်အသွယ်သို့ ပေါင်းထည့်မည်"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၏ ခေါ်ဆိုမှု အသေးစိတ်များ"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"ခေါ်ဆိုမှု မှတ်တမ်းထဲမှ ဖျက်ပစ်ခဲ့"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ယနေ့"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"မနေ့က"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"ပိုဟောင်းသော"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"ခေါ်ဆိုမှုများ စာရင်း"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"စပီကာကို ဖွင့်ပါ။"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"စပီကာကို ပိတ်ပါ။"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"ပိုမြန်စွာ ကစားရန်"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"ပိုနှေးစွာ ကစားရန်"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ဖွင့်မှု စတင် သို့မဟုတ် ဆိုင်းငံ့ရန်"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">"၊ "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ပြသမှုအတွက်ရွေးစရာများ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"အသံများနှင့် တုန်ခါမှု"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ရယူသုံးနိုင်မှု"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ဖုန်း သံစဉ်"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ဖုန်းဝင်လျှင် တုန်ခါရန်"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ဖုန်းဒိုင်ခွက် အသံ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"နံပါတ်ကွက် နှိပ်သံ ချိန်ညှိ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ပုံမှန်"</item>
+    <item msgid="6177579030803486015">"အရှည်"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"အမြန် တုံ့ပြန်ချက်များ"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"ခေါ်ဆိုမှုများ"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"ခေါ်ဆိုမှု ပိတ်ဆို့ခြင်း"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"ခေါ်ဆိုမှုပိတ်ဆို့ခြင်း ယာယီပိတ်ထားသည်"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"သင်သည် လွန်ခဲ့သည့် ၄၈ နာရီအတွင်း ဤဖုန်းဖြင့် အရေးပေါ်ဌာနကိုဖုန်း ခေါ်ဆိုခဲ့သောကြောင့် ခေါ်ဆိုမှုပိတ်ဆို့ခြင်းကို ဖြုတ်ထားသည်။ ၄၈ နာရီကျော်လွန်သည်နှင့် ၎င်းကိုအလိုအလျောက် ပြန်ဖွင့်ပေးပါမည်။"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"နံပါတ်များ သွင်းရန်"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"သင်သည် ယခင်က အချို့ခေါ်ဆိုသူများကို အလိုအလျောက် အခြား အက်ပ်များမှ တဆင့် အသံစာသို့ ပို့ရန် မှတ်ပေးခဲ့သည်။"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"နံပါတ်များကို ကြည့်ရန်"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"တင်သွင်းရန်"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"တင်သွင်းမှု မအောင်မြင်ပါ"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"နံပါတ်ကို ဖွင့်မည်"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"နံပါတ် ထည့်သွင်းပါ"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ဤနံပါတ်များမှ ခေါ်ဆိုမှုများကို ပိတ်ဆို့လိုက်မည်ဖြစ်ပြီး အသံမေးလ်များကို အလိုအလျောက် ဖျက်လိုက်ပါမည်။"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ဤနံပါတ်များမှ ခေါ်ဆိုမှုများကို ပိတ်ဆို့လိုက်ပါမည်၊ သို့သော် ၎င်းတို့သည် သင့်ကို အသံမေးလ်ချန်ခဲ့နိုင်ပါသည်။"</string>
+    <string name="block_list" msgid="7760188925338078011">"ပိတ်ထားသည့် နံပါတ်များ"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> သည်တရားမဝင်ပါ။"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> အားပိတ်ဆို့ထားပြီးပါပြီ။"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"ခေါ်ဆိုမှုပိတ်ဆို့ခြင်းကို ၄၈ နာရီပိတ်ထားသည်"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"အရေးပေါ်ခေါ်ဆိုမှု ပြုလုပ်ခဲ့သည့်အတွက် ပိတ်ထားပါသည်။"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"ခေါ်ဆိုသော အကောင့်များ"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ဖွင့်ထားရန်"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"ခွင့်ပြုချက်များ သတ်မှတ်မည်"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"မြန်နှုန်းမြင့်ဖုန်းခေါ်ဆိုမှုကို ဖွင့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"ခေါ်ဆိုမှုမှတ်တမ်းကို ကြည့်ရန်၊ ဖုန်းခွင့်ပြုချက်ကို ဖွင့်ပါ။"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"အဆက်အသွယ်များကိုကြည့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"အသံမေးလ်ကိုအသုံးပြုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"သင့်အဆက်အသွယ်များကို ရှာဖွေရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်များကို ဖွင့်ပါ။"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"ဖုန်းခေါ်ဆိုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ဖုန်း အက်ပ်ဆီတွင် စနစ် ဆက်တင်များသို့ ရေးသားခွင့် မရှိပါ။"</string>
+</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
new file mode 100644
index 0000000..49f5dcd
--- /dev/null
+++ b/res/values-nb/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefontastatur"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Anropslogg"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Rapportér feil nummer"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopiér nummeret"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopiér transkripsjonen"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokkér nummeret"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> er blokkert"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Opphev blokkeringen av nummeret"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Blokkeringen av <xliff:g id="NUMBER">%1$s</xliff:g> er opphevet"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ANGRE"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Slett"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Endre nummeret før du ringer"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Slett anropsloggen"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Slett talepost"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Taleposten er slettet"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANGRE"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vil du slette anropsloggen?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Dette sletter alle anrop fra loggen"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Sletter anropsloggen …"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Ring"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Tapt anrop"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Tapt jobbanrop"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Tapte anrop"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> tapte anrop"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Ring tilbake"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Melding"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> talemeldinger </item>
+      <item quantity="one">talemelding</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spill av"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nye talemeldinger fra <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Kunne ikke spille av talepost"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Laster inn talepost …"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Kunne ikke laste inn taleposten"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Bare anrop som gikk til talepostkasse"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Bare innkommende anrop"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Bare utgående anrop"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Bare ubesvarte anrop"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visuell talemelding"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Se og lytt til talemeldingene dine, uten å måtte ringe et nummer. Dette kan føre til datakostnader."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Innstillinger"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Talepostoppdateringer er ikke tilgjengelige"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Ny talemelding venter. Kan ikke laste inn akkurat nå."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Konfigurer taleposten din"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Lyd er ikke tilgjengelig"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfigurer"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Ring talepostkasse"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Velg nummer"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Velg nummer"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Husk dette valget"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"søk"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ring"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ring til"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Spill av eller stopp avspillingen"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Slå høyttaleren på eller av"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Søk etter avspillingsposisjon"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Reduser avspillingshastigheten"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Øk avspillingshastigheten"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Anropslogg"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Flere alternativer"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"tastatur"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Vis bare utgående"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Vis bare innkommende"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Vis bare tapte"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Vis bare talemeldinger"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Vis alle samtaler"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Legg til pause på 2 sek."</string>
+    <string name="add_wait" msgid="3360818652790319634">"Legg til Vent"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Innstillinger"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Ny kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Alle kontakter"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Samtaleinformasjon"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Informasjon er ikke tilgjengelig"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Bruk tonetastatur"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Gå tilbake til aktiv samtale"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Legg til en samtale"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Innkommende samtale"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Utgående samtale"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Tapt anrop"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Innkommende videoanrop"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Utgående videoanrop"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Ubesvart videoanrop"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Talepostkasse"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Avvist anrop"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blokkert anrop"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Innkommende samtaler"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Spill av talemelding"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Se kontakten <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Ring til <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Kontaktinformasjon for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> samtaler."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videoanrop."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Send SMS til <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ikke avspilt talepost"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Start talesøk"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Ukjent"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Telefonsvarer"</string>
+    <string name="private_num" msgid="6374339738119166953">"Skjult nummer"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefonkiosk"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Kan ikke ringe dette nummeret"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Du konfigurerer talepost ved å gå til Meny &amp;gt Innstillinger"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Du må slå av flymodus før du kan sjekke talepostkassen."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Laster inn …"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Henter fra SIM-kort…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontakter på SIM-kort"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Ingen kontaktapper er tilgjengelige"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Talesøk er ikke tilgjengelig"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Kan ikke ringe fordi Telefon-appen er deaktivert."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Det finnes ingen apper for det på denne enheten"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Søk i kontakter"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Legg til nummer eller søk etter kontakter"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Anropsloggen din er tom"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Start en samtale"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Du har ingen tapte anrop."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Talepostkassen din er tom."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Vis bare favoritter"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Anropslogg"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Alle"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Ubesvart"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Talemeldinger"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Vil du blokkere <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Anrop fra dette nummeret blokkeres, og talepost blir automatisk slettet."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Anrop fra dette nummeret blokkeres, men den som ringer kan fortsatt legge igjen beskjeder i talepostkassen din."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKKÉR"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Vil du oppheve blokkeringen av <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Anrop fra dette nummeret blokkeres ikke lenger."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"OPPHEV BLOKKERINGEN"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Hurtigvalg"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Anropslogg"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontakter"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Talepostkasse"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Fjernet fra favoritter"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Angre"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Opprett ny kontakt"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Legg til for en kontakt"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Start en videosamtale"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokkér nummeret"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nye tapte anrop"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Du har ingen på hurtigoppringning ennå"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Legg til en favoritt"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Du har ingen kontakter ennå"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Legg til en kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Trykk på bildet for å se alle numre, eller trykk på og hold nede for å omorganisere"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Fjern"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videoanrop"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Send en melding"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Samtaleinformasjon"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Ring <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Ubesvart anrop fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Besvart anrop fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Ulest talepost fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Talepost fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Ring til <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"på <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Ring"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Ring <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Start videoanrop med <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Lytt til talepostkasse fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Spill av talemelding fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Sett talemelding fra <xliff:g id="NAMEORNUMBER">^1</xliff:g> på pause"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Slett talemelding fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nye taleposter</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ny talepost</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Opprett kontakt for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Legg <xliff:g id="NAMEORNUMBER">^1</xliff:g> til en eksisterende kontakt"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Samtaledetaljer for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Slettet fra anropsloggen"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"I dag"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"I går"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Eldre"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Anropsliste"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Slå på høyttaleren."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Slå av høyttaleren."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Spill av raskere."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Spill av saktere."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start eller stopp avspillingen."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Visningsalternativer"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Lyder og vibrasjon"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Tilgjengelighet"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Telefonringelyd"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer også når det ringer"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tastetoner"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tonelengde for tastaturet"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Lang"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hurtigsvar"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Anrop"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Anropsblokkering"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blokkering av anrop er midlertidig slått av"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Blokkering av anrop er slått av fordi du kontaktet nødtjenester fra denne telefonen i løpet av de siste 48 timene. Funksjonen blir automatisk slått på igjen når perioden på 48 timer er utløpt."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importér numre"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Du markerte tidligere noen anropere for automatisk overføring til talepost via andre apper."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Se numre"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importér"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Importeringen mislyktes"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Opphev blokkeringen av nummeret"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Legg til nummer"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Anrop fra disse numrene blokkeres, og talepost blir automatisk slettet."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Anrop fra dette nummeret blokkeres, men du kan fortsatt motta talepost."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blokkerte telefonnumre"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> er ugyldig."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> er allerede blokkert."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Anropsblokkering er slått av i 48 timer"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Slått av fordi du foretok et nødanrop."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Ringekontoer"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Slå på"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Angi tillatelser"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"For å slå på hurtigoppringning, slå på Kontakter-tillatelsen."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"For å se samtaleloggen din, slå på Telefon-tillatelsen."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"For å se kontaktene dine, slå på Kontakter-tillatelsen."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"For å få tilgang til talepostkassen, slå på Telefon-tillatelsen."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"For å søke i kontaktene dine, slå på tillatelser for Kontakter."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"For å ringe, slå på Telefon-tillatelsen."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefonappen har ikke tillatelse til å skrive til systeminnstillinger."</string>
+</resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
new file mode 100644
index 0000000..3c6f5c6
--- /dev/null
+++ b/res/values-ne-rNP/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"फोन"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"फोन"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"फोन डायलप्याड"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"फोन"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"कल इतिहास"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"गलत नम्बर रिपोर्ट गर्नुहोस्"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"नम्बर प्रतिलिपि गर्नुहोस्"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ट्रान्सक्रिप्शनको प्रतिलिपि बनाउँनुहोस्"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"नम्बरलाई रोक्नुहोस्"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> रोकियो"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"नम्बर माथिको रोक हटाउनुहोस्"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> रोकियो"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"अनडू गर्नुहोस्"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"मेटाउनुहोस्"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"कल गर्न अगाडि नम्बर सम्पादन गर्नुहोस्"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"कल इतिहास मेटाउनुहोस्"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"भ्वाइसमेल हटाउनुहोस्"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"भ्वाइस मेल मेटाइयो"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"अनडू गर्नुहोस्"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"कल इतिहास हटाउने हो?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"यस कार्यले तपाईँको इतिहासबाट सबै कल मेट्नेछ"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"कल इतिहास हाटउँदै..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"फोन"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"छुटेको कल"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"कामबाट आएको छुटेको कल"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"छुटेका कलहरू"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> छुटेका कलहरू"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"कल फर्काउने"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"सन्देश"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> भ्वाइसमेलहरू </item>
+      <item quantity="one">भ्वाइसमेल</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"बजाउनुहोस्"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> बाट नयाँ भ्वाइसमेल"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"भ्वाइस मेललाई बजाउन सकिएन"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"भ्वाइस मेल लोड हुँदै ..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"भ्वाइस मेललाई लोड गर्न सकिएन"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"भ्वाइसमेलका साथ मात्र कल गर्नुहोस्"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"आगमन कलहरू मात्र"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"बहिर्गमन कलहरू मात्र"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"छुटेका कलहरू मात्र"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"भिजुअल भ्वाइस मेल"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"नम्बरमा कल गर्न नपरी तपाईँको भ्वाइसमेल हेर्नुहोस् र सुन्नुहोस्। डेटा शुल्क लाग्न सक्छ।"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"सेटिङहरू"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"भ्वाइस मेल अद्यावधिक उपलब्ध छैन"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"नयाँ भ्वाइस मेल पर्खदै। अहिले नै लोड गर्न सक्दैन।"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"तपाईँको भ्वाइसमेल सेटअप गर्नुहोस्"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"अडियो उपलब्ध  छैन"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"मिलाउनुहोस्"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"भ्वाइसमेल कल गर्नुहोस्"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"( <xliff:g id="COUNT">%1$d</xliff:g> ) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"नम्बर रोज्नुहोस्"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"नम्बर छान्नुहोस्"</string>
+    <string name="make_primary" msgid="5829291915305113983">"यो छनौट याद राख्नुहोस्"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"खोजी गर्नुहोस्"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"डायल"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"डायल गर्न संख्या"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"प्लेब्याक चलाउनुहोस वा रोक्नुहोस्"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"स्पीकरफोन खोल्नुहोस् वा बन्द गर्नुहोस्"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"प्लेब्याक स्थिति खोज्नुहोस्"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"प्लेब्याक दर कम गर्नुहोस्"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"प्लेब्याक दर बढाउनुहोस्"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"कल इतिहास"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"थप विकल्पहरू"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"डायल प्याड"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"बहिर्गमन मात्र देखाउनुहोस्"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"आगमन कल मात्र देखाउनुहोस्"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"छुटेकाहरू मात्र देखाउनुहोस्"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"भ्वाइसमेलहरू मात्र देखाउनुहोस्"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"सबै कलहरू देखाउनुहोस्"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"२ सेकन्डको रोकाइ थप्नुहोस्"</string>
+    <string name="add_wait" msgid="3360818652790319634">"पर्खाइ थप्नुहोस्"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"सेटिङ्हरू"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"नयाँ सम्पर्क"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"सबै सम्पर्कहरू"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"कल विवरण"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"विवरण उपलब्ध छैन"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"स्पर्श टोन किप्याडको प्रयोग गर्नुहोस्"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"हुदै गरेको कलमा फर्कनुहोस्"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"कल थप्नुहोस्"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"आगमन कल"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"बहिर्गमन कल"</string>
+    <string name="type_missed" msgid="2720502601640509542">"छुटेको कल"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"आगमन भिडियो कल"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"बहिर्गमन भिडियो कल"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"छुटेको भिडियो कल"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"भ्वाइसमेल"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"अस्वीकृत कल"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"अवरुद्ध कल"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"आगमन कलहरू"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"भ्वाइसमेल बजाउनुहोस्"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> सम्पर्क हेर्नुहोस्"</string>
+    <string name="description_call" msgid="3443678121983852666">"कल <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> को लागि सम्पर्क विवरणहरू"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> कल।"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"भिडियो कल।"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g>लाई SMS पठाउनुहोस्"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"नसुनिएका भ्वाइसमेल"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"आवाज खोजी सुरु गर्नुहोस्"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> कल गर्नुहोस्"</string>
+    <string name="unknown" msgid="740067747858270469">"अज्ञात"</string>
+    <string name="voicemail" msgid="3851469869202611441">"भ्वाइसमेल"</string>
+    <string name="private_num" msgid="6374339738119166953">"नीजि नम्बर"</string>
+    <string name="payphone" msgid="7726415831153618726">"पेफोन"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> सेकेन्ड"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> मिनेट <xliff:g id="SECONDS">%s</xliff:g> सकेन्ड"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> मा <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"यस नम्बरलाई कल गर्न सकिंदैन"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"भ्वाइसमेल सेट गर्नका लागि मेनु सेटिङमा जानुहोस्।"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"भ्वाइसमेल कल गर्नका लागि पहिले हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"लोड हुँदै..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM कार्डबाट लोड हुँदै"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM कार्ड सम्पर्कहरू"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"कुनै पनि सम्पर्क अनुप्रयोग उपलब्ध छैन"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"आवाज खोजी उपलब्ध छैन"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"फोन अनुप्रयोग असक्षम गरिएकोले फोन गर्न सकिँदैन।"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"यस यन्त्रमा त्यसका लागि कुनै पनि अनुप्रयोग छैन"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"सम्पर्क ठेगानाहरू खोज्नुहोस्"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"नम्बर थप्नुहोस् वा सम्पर्कहरू खोज्नुहोस्"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"तपाईँको कल इतिहास खाली छ"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"कल गर्नुहोस्"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"तपाईँसँग कुनै पनि छुटेका कलहरू छैनन्।"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"तपाईँको भ्वाइस मेल खाली छ।"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"मनपर्ने मात्र देखाउनुहोस्"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"कल इतिहास"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"सबै"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"छुटेको"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Voicemail"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> माथि रोक लगाउने हो?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"यो नम्बरबाट सबै कलहरू रोकिनेछन् र भ्वाइसमेलहरू स्वचालित रूपमा मेटिनेछन्।"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"यो नम्बरबाट सबै कलहरू रोकिनेछन्। तर कलरले अझै तपाईँलाई भ्वाइस मेलहरू भने छोड्न सक्नेछन्।"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"रोक्नुहोस्"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> माथिको रोक हटाउने हो?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"तपाईँलाई कल गर्नको लागि यो नम्बर माथि अबदेखि रोक लगाइने छैन।"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"रोक हटाउनुहोस्"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"द्रूत डायल"</string>
+    <string name="tab_history" msgid="2563144697322434940">"कल इतिहास"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"सम्पर्कहरू"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"भ्वाइसमेल"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"मनपर्नेहरूबाट हटाइयो"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"अनडु गर्नुहोस्"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> कल गर्नुहोस्"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"नयाँ सम्पर्क सिर्जना गर्नुहोस्"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"सम्पर्कमा थप्नुहोस्"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS पठाउनुहोस्"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"भिडियो कल बनाउनुहोस्"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"नम्बरलाई निषेध गर्नुहोस्"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> नयाँ छुटेका कलहरु"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"तपाईँको स्पिड डायलमा अझसम्म कोही छैन"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"एक मनपर्ने थप्नुहोस्"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"तपाईँसँग अझसम्म कुनै सम्पर्कहरू छैनन्"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"एउटा सम्पर्क थप्नुहोस्"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"सबै संख्या हेर्न  छविलाई छुनुहोस् वा पुन:क्रमबद्ध गर्न समात्नुहोस्"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"हटाउँनुहोस्"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"भिडियो कल"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"सन्देश पठाउनुहोस्"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"कल विवरणहरु"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> कल गर्नुहोस्"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> बाट मिस्ड कल।"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> बाट कलको जवाफ दिइयो।"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> बाट पढ्न बाँकी भ्वाइस मेल।"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> बाट भ्वाइस मेल।"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> लाई कल गर्नुहोस्।"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> मा"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"कल गर्नुहोस्"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> कल गर्नुहोस्"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> भिडियो कल गर्नुहोस्।"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> बाट भ्वाइसमेल सुन्नुहोस्"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> बाट भ्वाइस मेल बजाउनुहोस्"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> बाट भ्वाइस मेल रोक्नुहोस्"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> बाट भ्वाइस मेल मेटाउनुहोस्"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> नयाँ भ्वाइस मेलहरू</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> नयाँ भ्वाइस मेल</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> का लागि नयाँ सम्पर्क बनाउँनुहोस्"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"विद्यमान सम्पर्कमा <xliff:g id="NAMEORNUMBER">^1</xliff:g> थप्नुहोस्"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> का लागि कल विवरणहरू"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"कल इतिहासबाट मेटाइयो"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"आज"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"हिजो"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"अझ पुरानो"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"कल सूची"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"स्पिकर खोल्नुहोस्।"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"स्पिकर बन्द गर्नुहोस्।"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"छिटो चलाउनुहोस्।"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"ढिलो चलाउनुहोस्।"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"दोहर्याउने सुरु गर्नुहोस् वा रोक्नुहोस्।"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"विकल्पहरू प्रदर्शन गर्नुहोस्"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ध्वनि र कम्पन"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"पहुँचता"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"फोन रिङटोन"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"कलका लागि कम्पन पनि गर्नुहोस्"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"डायलप्याड ध्वनि"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"डायलप्याड टोन लम्बाइ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"सामान्य"</item>
+    <item msgid="6177579030803486015">"लामो"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"द्रुत प्रतिक्रियाहरू"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"कलहरू"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"कल रोक्दै"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"कल अवरुद्ध अस्थायी रुपमा निष्क्रिय"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"कल अवरुद्ध अस्थायी रुपमा असक्षम गरिएको छ किनभने तपाईँले अन्तिम ४८ घण्टा भित्र यस फोनबाट आपत्कालीन सेवाहरू सम्पर्क गर्नुभयो। एकपटक ४८ घण्टा अवधि समाप्त भएपछि यो स्वचालित रूपले पुनः सक्रिय हुनेछ।"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"नम्बरहरू आयात गर्नुहोस्"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"तपाईँले पहिल्यै केही कल गर्ने व्यक्तिहरूलाई अन्य अनुप्रयोगहरू मार्फत स्वत: रूपमा भ्वाइस मेल पठाउन नै चिन्ह लगाउनु भएको थियो।"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"नम्बरहरू हेर्नुहोस्"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"आयात गर्नुहोस्"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"आयात असफल भयो"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"नम्बरमाथिको रोक हटाउनुहोस्"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"नम्बर थप्नुहोस्"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"यी नम्बरहरूबाट सबै कलहरू रोकिनेछन् र भ्वाइसमेलहरू स्वचालित रूपमा मेटिनेछन्।"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"यो नम्बरहरूबाट सबै कलहरू रोकिनेछन्। तर तिनिहरूले अझै तपाईँलाई भ्वाइस मेलहरू भने छोड्न सक्नेछन्।"</string>
+    <string name="block_list" msgid="7760188925338078011">"रोकिएका नम्बरहरू"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> अमान्य छ।"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> पहिले नै रोकिएको छ।"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"४८ घण्टाको लागि कल निषेध असक्षम गरियो"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"आपत्कालीन कल गरिएको हुनाले असक्षम गरियो।"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"खाता कलिङ"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"सक्रिय पार्नुहोस्"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"अनुमतिहरू सेट गर्नुहोस्"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"तीव्र डायल सक्षम गर्न, सम्पर्क अनुमति सक्षम गर्नुहोस्।"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"आफ्नो कल लग हेर्न, फोन अनुमति सक्रिय गर्नुहोस्।"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"आफ्नो सम्पर्क हेर्न सम्पर्क अनुमति सक्रिय गर्नुहोस्।"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"आफ्नो भ्वाइस मेल पहुँच गर्न, फोन अनुमति सक्रिय गर्नुहोस्"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"तपाईँको सम्पर्कहरू खोज गर्न सम्पर्क अनुमतिहरू सक्रिय गर्नुहोस्।"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"कल गर्न फोन अनुमति सक्रिय गर्नुहोस्।"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"प्रणाली सेटिङहरूमा लेख्न फोन अनुप्रयोगसँग अनुमति छैन।"</string>
+</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
new file mode 100644
index 0000000..0374194
--- /dev/null
+++ b/res/values-nl/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefoon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefoon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefoonkiezer"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefoon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Oproepgeschiedenis"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Onjuist nummer melden"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Nummer kopiëren"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Transcriptie kopiëren"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Nummer blokkeren"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> geblokkeerd"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Blokkeren van nummer opheffen"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Blokkering van <xliff:g id="NUMBER">%1$s</xliff:g> opgeheven"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ONGEDAAN MAKEN"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Verwijderen"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Nummer bewerken vóór bellen"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Oproepgeschiedenis wissen"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Voicemail verwijderen"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Voicemail verwijderd"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ONGED. MKN"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Oproepgeschiedenis wissen?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Hiermee worden alle oproepen uit je geschiedenis verwijderd"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Oproepgeschiedenis wissen…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefoon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Gemiste oproep"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Gemiste zakelijke oproep"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Gemiste oproepen"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> gemiste oproepen"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Terugbellen"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Bericht"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> voicemails </item>
+      <item quantity="one">Voicemail</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Afspelen"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nieuwe voicemail van <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Kan voicemail niet afspelen"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Voicemail laden…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Kan voicemail niet laden"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Alleen oproepen met voicemail"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Alleen inkomende oproepen"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Alleen uitgaande oproepen"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Alleen gemiste oproepen"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visuele voicemail"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Bekijk en beluister je voicemail, zonder dat je een nummer hoeft te bellen. Er kunnen kosten voor gegevensgebruik in rekening worden gebracht."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Instellingen"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Voicemailupdates niet beschikbaar"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Je hebt nieuwe voicemail. Kan nu niet laden."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Je voicemail instellen"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio niet beschikbaar"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Instellen"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Bellen met voicemail"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Nummer kiezen"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Nummer kiezen"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Deze keuze onthouden"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"zoeken"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"bellen"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"nummer om te bellen"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Afspelen starten of stoppen"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Luidsprekertelefoon in- of uitschakelen"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Afspeelpositie zoeken"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Afspeelsnelheid verlagen"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Afspeelsnelheid verhogen"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Oproepgeschiedenis"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Meer opties"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"toetsenblok"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Alleen uitgaand weergeven"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Alleen inkomend weergeven"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Alleen gemist weergeven"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Alleen voicemails weergeven"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Alle oproepen weergeven"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Pauze van 2 seconden toevoegen"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Wachten toevoegen"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Instellingen"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nieuw contact"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Alle contacten"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Gespreksgegevens"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Details niet beschikbaar"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Toetsen voor toonkiezen gebruiken"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Terug naar actief gesprek"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Oproep toevoegen"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Inkomende oproep"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Uitgaand gesprek"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Oproep gemist"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Binnenkomend videogesprek"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Uitgaand videogesprek"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Gemist videogesprek"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Geweigerde oproep"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Geblokkeerde oproep"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Inkomende oproepen"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Voicemail afspelen"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Contact <xliff:g id="NAME">%1$s</xliff:g> bekijken"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> bellen"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Contactgegevens voor <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> telefoongesprekken."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videogesprek."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Sms verzenden naar <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Niet-beluisterde voicemail"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Gesproken zoekopdracht"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> bellen"</string>
+    <string name="unknown" msgid="740067747858270469">"Onbekend"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
+    <string name="private_num" msgid="6374339738119166953">"Privénummer"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefooncel"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> om <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Kan dit nummer niet bellen"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Voor het instellen van voicemail, ga je naar \'Menu\' &gt; \'Instellingen\'."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Als je je voicemail wilt bellen, moet je eerst de Vliegtuigmodus uitschakelen."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Laden..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI-nummer"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Laden vanaf SIM-kaart..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contacten op SIM-kaart"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Geen app voor contacten beschikbaar"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Gesproken zoekopdracht niet beschikbaar"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Kan niet bellen omdat de Telefoon-app is uitgeschakeld."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Daarvoor is geen app beschikbaar op dit apparaat"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Contacten zoeken"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Voeg nummer toe of zoek contacten"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Je oproepgeschiedenis is leeg"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Bellen"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Je hebt geen gemiste oproepen."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Je voicemail-inbox is leeg."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Alleen favorieten weergeven"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Oproepgeschiedenis"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Alle"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Gemist"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Voicemail"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> blokkeren?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Oproepen van dit nummer worden geblokkeerd en voicemails worden automatisch verwijderd."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Oproepen van dit nummer worden geblokkeerd, maar de beller kan nog wel voicemails achterlaten."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKKEREN"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Blokkering van <xliff:g id="NUMBER">%1$s</xliff:g> opheffen?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Oproepen vanaf dit nummer worden niet langer geblokkeerd."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"BLOKKERING OPHEFFEN"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Snelkeuze"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Oproepgeschiedenis"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contacten"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Verwijderd uit favorieten"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Ongedaan maken"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> bellen"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Nieuw contact maken"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Toevoegen aan een contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Sms verzenden"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videogesprek starten"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Nummer blokkeren"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nieuwe gemiste oproepen"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Er staat nog niemand in je snelkeuzelijst"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Een favoriet toevoegen"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Je hebt nog geen contacten"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Contact toevoegen"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Tik op de afbeelding om alle nummers te bekijken of blijf de afbeelding aanraken om opnieuw te rangschikken"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Verwijderen"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videogesprek"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Een bericht verzenden"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Oproepdetails"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> bellen"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Oproep gemist van <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Oproep beantwoord van <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Ongelezen voicemail van <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Voicemail van <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Oproep naar <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"in <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Bellen"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> bellen"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videogesprek <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Voicemail beluisteren van <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Voicemail van <xliff:g id="NAMEORNUMBER">^1</xliff:g> afspelen"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Voicemail van <xliff:g id="NAMEORNUMBER">^1</xliff:g> onderbreken"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Voicemail van <xliff:g id="NAMEORNUMBER">^1</xliff:g> verwijderen"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nieuwe voicemails</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nieuwe voicemail</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Contact maken voor <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> toevoegen aan bestaand contact"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Oproepgegevens voor <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Verwijderd uit oproepgeschiedenis"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Vandaag"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Gisteren"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Ouder"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lijst met oproepen"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Luidspreker inschakelen."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Luidspreker uitschakelen."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Sneller afspelen."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Langzamer afspelen."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Afspelen starten of onderbreken."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Weergaveopties"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Geluiden en trillingen"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Toegankelijkheid"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Beltoon telefoon"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Ook trillen voor oproepen"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonen bij toetsaanslag"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Toonduur toetsenblok"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normaal"</item>
+    <item msgid="6177579030803486015">"Lang"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Snelle reacties"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Oproepen"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Oproepen blokkeren"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Oproepblokkering tijdelijk uitgeschakeld"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Oproepblokkering is uitgeschakeld omdat je in de afgelopen 48 uur contact met de noodhulpdiensten hebt opgenomen via deze telefoon. De functie wordt automatisch weer ingeschakeld nadat de periode van 48 uur is verstreken."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Nummers importeren"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Je hebt via andere apps al aangegeven dat bepaalde bellers moeten worden doorgeschakeld naar de voicemail."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Nummers bekijken"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importeren"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Importeren mislukt"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Blokkeren van nummer opheffen"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Nummer toevoegen"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Oproepen van deze nummers worden geblokkeerd en voicemails worden automatisch verwijderd."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Oproepen van deze nummers worden geblokkeerd, maar de bellers kunnen nog wel voicemail achterlaten."</string>
+    <string name="block_list" msgid="7760188925338078011">"Geblokkeerde nummers"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> is ongeldig."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> is al geblokkeerd."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Oproepblokkering is 48 uur uitgeschakeld"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Uitgeschakeld omdat een noodoproep is geplaatst."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Oproepaccounts"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Inschakelen"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Toestemmingen instellen"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Als je de snelkeuzefunctie wilt inschakelen, schakel je de machtiging voor Contacten in."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Als je je gesprekkenlijst wilt bekijken, schakel je de machtiging voor Telefoon in."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Als je je contacten wilt bekijken, schakel je de machtiging voor Contacten in."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Als je je voicemail wilt beluisteren, schakel je de machtiging voor Telefoon in."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Als je naar contacten wilt zoeken, schakel je de contacttoestemming in."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Als je iemand wilt bellen, schakel je de machtiging voor Telefoon in."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefoon-app heeft geen toestemming om systeeminstellingen te schrijven."</string>
+</resources>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
new file mode 100644
index 0000000..849d95d
--- /dev/null
+++ b/res/values-pa-rIN/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ਫ਼ੋਨ"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ਫੋਨ"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ਫੋਨ ਡਾਇਲਪੈਡ"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ਫੋਨ"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"ਕਾਲ ਇਤਿਹਾਸ"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"ਗਲਤ ਨੰਬਰ ਦੀ ਰਿਪੋਰਟ ਕਰੋ"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"ਨੰਬਰ ਕਾਪੀ ਕਰੋ"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ਲਿਪੀ ਬਦਲਣਾ ਕਾਪੀ ਕਰੋ"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"ਨੰਬਰ ਨੂੰ ਬਲੌਕ ਕਰੋ"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> ਬਲੌਕ ਕੀਤਾ"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"ਨੰਬਰ ਨੂੰ ਅਨਬਲੌਕ ਕਰੋ"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> ਅਨਬਲੌਕ ਕੀਤਾ"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ਪਹਿਲਾਂ ਵਰਗਾ ਕਰੋ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"ਹਟਾਓ"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"ਕਾਲ ਤੋਂ ਪਹਿਲਾਂ ਨੰਬਰ ਸੰਪਾਦਿਤ ਕਰੋ"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"ਕਾਲ ਇਤਿਹਾਸ ਹਟਾਓ"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ਵੌਇਸਮੇਲ ਮਿਟਾਓ"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"ਵੌਇਸਮੇਲ ਮਿਟਾਈ ਗਈ"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ਪਹਿਲਾਂ ਵਰਗਾ ਕਰੋ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ਕੀ ਕਾਲ ਇਤਿਹਾਸ ਹਟਾਉਣਾ ਹੈ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ਇਹ ਤੁਹਾਡੇ ਇਤਿਹਾਸ ਤੋਂ ਸਾਰੀਆਂ ਕਾਲਾਂ ਮਿਟਾ ਦੇਵੇਗਾ"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ਕਾਲ ਇਤਿਹਾਸ ਹਟਾ ਰਿਹਾ ਹੈ…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ਫੋਨ"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"ਮਿਸ ਹੋਈ ਕਾਲ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"ਕੰਮ ਨਾਲ ਸਬੰਧਿਤ ਖੁੰਝੀ ਕਾਲ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"ਮਿਸ ਹੋਈਆਂ ਕਾਲਾਂ"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ਮਿਸ ਹੋਈਆਂ ਕਾਲਾਂ"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"ਕਾਲ ਬੈਕ ਕਰੋ"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"ਸੁਨੇਹਾ"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ਵੌਇਸਮੇਲਾਂ </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ਵੌਇਸਮੇਲਾਂ </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ਪਲੇ ਕਰੋ"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> ਦੀ ਨਵੀਂ ਵੌਇਸਮੇਲ"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"ਵੌਇਸਮੇਲ ਪਲੇ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"ਵੌਇਸਮੇਲ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"ਵੌਇਸਮੇਲ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"ਕੇਵਲ ਵੌਇਸਮੇਲ ਵਾਲੀਆਂ ਕਾਲਾਂ"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"ਕੇਵਲ ਇਨਕਮਿੰਗ ਕਾਲਾਂ"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"ਕੇਵਲ ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"ਕੇਵਲ ਮਿਸਡ ਕਾਲਾਂ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"ਵਿਜੁਅਲ ਵੌਇਸਮੇਲ"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"ਇੱਕ ਨੰਬਰ ਤੇ ਕਾਲ ਕੀਤੇ ਬਿਨਾਂ, ਆਪਣੀ ਵੌਇਸਮੇਲ ਦੇਖੋ ਅਤੇ ਸੁਣੋ। ਡਾਟਾ ਖ਼ਰਚੇ ਲਾਗੂ ਹੋ ਸਕਦੇ ਹਨ।"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"ਸੈਟਿੰਗਾਂ"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"ਵੌਇਸਮੇਲ ਅਪਡੇਟਾਂ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"ਨਵੀਂ ਵੌਇਸਮੇਲ ਉਡੀਕ ਰਹੀ ਹੈ। ਹੁਣ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"ਆਪਣੀ ਵੌਇਸਮੇਲ ਸੈਟ ਅਪ ਕਰੋ"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ਔਡੀਓ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"ਸੈਟ ਅਪ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ਵੌਇਸਮੇਲ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"ਨੰਬਰ ਚੁਣੋ"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"ਨੰਬਰ ਚੁਣੋ"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ਇਹ ਚੋਣ ਯਾਦ ਰੱਖੋ"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ਖੋਜੋ"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ਡਾਇਲ ਕਰੋ"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ਡਾਇਲ ਕਰਨ ਲਈ ਨੰਬਰ"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"ਪਲੇਬੈਕ ਪਲੇ ਕਰੋ ਜਾਂ ਰੋਕੋ"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"ਸਪੀਕਰਫੋਨ ਨੂੰ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"ਪਲੇਬੈਕ ਪੋਜੀਸ਼ਨ ਖੋਜੋ"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"ਪਲੇਬੈਕ ਰੇਟ ਘਟਾਓ"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"ਪਲੇਬੈਕ ਰੇਟ ਵਧਾਓ"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"ਕਾਲ ਇਤਿਹਾਸ"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"ਹੋਰ ਚੋਣਾਂ"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ਡਾਇਲ ਪੈਡ"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"ਕੇਵਲ ਆਊਟਗੋਇੰਗ ਦਿਖਾਓ"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"ਕੇਵਲ ਇਨਕਮਿੰਗ ਦਿਖਾਓ"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"ਕੇਵਲ ਮਿਸਡ ਦਿਖਾਓ"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ਕੇਵਲ ਵੌਇਸਮੇਲਾਂ ਦਿਖਾਓ"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"ਸਾਰੀਆਂ ਕਾਲਾਂ ਦਿਖਾਓ"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-ਸਕਿੰਟ ਦਾ ਪੌਜ ਜੋੜੋ"</string>
+    <string name="add_wait" msgid="3360818652790319634">"ਉਡੀਕ ਜੋੜੋ"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"ਸੈਟਿੰਗਾਂ"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"ਨਵਾਂ ਸੰਪਰਕ"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"ਸਾਰੇ ਸੰਪਰਕ"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"ਕਾਲ ਵੇਰਵੇ"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"ਵੇਰਵੇ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ਟਚ ਟੋਨ ਕੀਪੈਡ ਵਰਤੋ"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"ਪ੍ਰਗਤੀ ਵਿੱਚ ਕਾਲ ਤੇ ਵਾਪਸ ਜਾਓ"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"ਕਾਲ ਜੋੜੋ"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"ਇਨਕਮਿੰਗ ਕਾਲ"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"ਆਊਟਗੋਇੰਗ ਕਾਲ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"ਮਿਸਡ ਕਾਲ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ਇਨਕਮਿੰਗ ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"ਆਊਟਗੋਇੰਗ ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"ਮਿਸਡ ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"ਵੌਇਸਮੇਲ"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"ਅਸਵੀਕਾਰ ਕੀਤੀ ਕਾਲ"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"ਬਲੌਕ ਕੀਤੀ ਕਾਲ"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ਇਨਕਮਿੰਗ ਕਾਲਾਂ"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"ਵੌਇਸਮੇਲ ਪਲੇ ਕਰੋ"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"ਸੰਪਰਕ <xliff:g id="NAME">%1$s</xliff:g> ਦੇਖੋ"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ਲਈ ਸੰਪਰਕ ਵੇਰਵੇ"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ਕਾਲਾਂ।"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ਵੀਡੀਓ ਕਾਲ।"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> ਨੂੰ SMS ਭੇਜੋ"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ਅਣਸੁਣੀ ਵੌਇਸਮੇਲ"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"ਵੌਇਸ ਖੋਜ ਚਾਲੂ ਕਰੋ"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="unknown" msgid="740067747858270469">"ਅਗਿਆਤ"</string>
+    <string name="voicemail" msgid="3851469869202611441">"ਵੌਇਸਮੇਲ"</string>
+    <string name="private_num" msgid="6374339738119166953">"ਨਿੱਜੀ ਨੰਬਰ"</string>
+    <string name="payphone" msgid="7726415831153618726">"ਪੇਫੋਨ"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> ਸਕਿੰਟ"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> ਮਿੰਟ <xliff:g id="SECONDS">%s</xliff:g> ਸਕਿੰਟ"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> ਨੂੰ <xliff:g id="TIME">%2$s</xliff:g> ਵਜੇ"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ਇਸ ਨੰਬਰ ਤੇ ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ਵੌਇਸਮੇਲ ਸੈਟ ਅਪ ਕਰਨ ਲਈ, ਮੀਨੂ &gt; ਸੈਟਿੰਗਾਂ ਤੇ ਜਾਓ।"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"ਵੌਇਸਮੇਲ ਕਾਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM ਕਾਰਡ ਵਿੱਚੋਂ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM ਕਾਰਡ ਸੰਪਰਕ"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"ਕੋਈ ਸੰਪਰਕ ਐਪ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"ਵੌਇਸ ਖੋਜ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ਇੱਕ ਫੋਨ ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿਉਂਕਿ ਫੋਨ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਇਆ ਗਿਆ ਹੈ।"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"ਉਸ ਲਈ ਇਸ ਡਿਵਾਈਸ ਤੇ ਕੋਈ ਐਪ ਨਹੀਂ"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"ਸੰਪਰਕ ਖੋਜੋ"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"ਨੰਬਰ ਜੋੜੋ ਜਾਂ ਸੰਪਰਕ ਖੋਜੋ"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"ਤੁਹਾਡਾ ਕਾਲ ਇਤਿਹਾਸ ਖਾਲੀ ਹੈ"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"ਇੱਕ ਕਾਲ ਕਰੋ"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ ਮਿਸਡ ਕਾਲਾਂ ਨਹੀਂ ਹਨ।"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"ਤੁਹਾਡਾ ਵੌਇਸਮੇਲ ਇਨਬੌਕਸ ਖਾਲੀ ਹੈ।"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"ਕੇਵਲ ਮਨਪਸੰਦ ਦਿਖਾਓ"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"ਕਾਲ ਇਤਿਹਾਸ"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"ਸਭ"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"ਮਿਸਡ"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"ਵੌਇਸਮੇਲ"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"ਕੀ <xliff:g id="NUMBER">%1$s</xliff:g> ਬਲੌਕ ਕਰਨਾ ਹੈ?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ਇਸ ਨੰਬਰ ਤੋਂ ਕਾਲਾਂ ਬਲੌਕ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ ਅਤੇ ਵੌਇਸਮੇਲਾਂ ਆਪਣੇ ਆਪ ਮਿਟਾ ਦਿੱਤੀਆਂ ਜਾਣਗੀਆਂ।"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ਇਸ ਨੰਬਰ ਤੋਂ ਕਾਲਾਂ ਬਲੌਕ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ, ਪਰ ਕਾਲਰ ਹਾਲੇ ਵੀ ਤੁਹਾਡੇ ਲਈ ਵੌਇਸਮੇਲਾਂ ਛੱਡ ਸਕਦਾ ਹੈ।"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ਬਲੌਕ ਕਰੋ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"ਕੀ <xliff:g id="NUMBER">%1$s</xliff:g> ਅਨਲੌਕ ਕਰਨਾ ਹੈ?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"ਇਸ ਨੰਬਰ ਨੂੰ ਇਸ ਤੋਂ ਬਾਅਦ ਤੁਹਾਨੂੰ ਕਾਲ ਕਰਨ ਤੋਂ ਬਲੌਕ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ।"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ਅਨਬਲੌਕ ਕਰੋ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"ਸਪੀਡ ਡਾਇਲ"</string>
+    <string name="tab_history" msgid="2563144697322434940">"ਕਾਲ ਇਤਿਹਾਸ"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"ਸੰਪਰਕ"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"ਵੌਇਸਮੇਲ"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"ਮਨਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਇਆ ਗਿਆ"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"ਪਹਿਲਾਂ ਵਰਗਾ ਕਰੋ"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ਨਵਾਂ ਸੰਪਰਕ ਬਣਾਓ"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"ਇੱਕ ਸੰਪਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS ਭੇਜੋ"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ਵੀਡੀਓ ਕਾਲ ਕਰੋ"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"ਨੰਬਰ ਨੂੰ ਬਲੌਕ ਕਰੋ"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ਨਵੀਆਂ ਮਿਸਡ ਕਾਲਾਂ"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"ਅਜੇ ਤੁਹਾਡੇ ਸਪੀਡ ਡਾਇਲ \'ਤੇ ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਨਹੀਂ ਹੈ"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"ਇੱਕ ਮਨਪਸੰਦ ਜੋੜੋ"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"ਤੁਹਾਡੇ ਕੋਲ ਅਜੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ ਹਨ।"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"ਕੋਈ ਸੰਪਰਕ ਜੋੜੋ"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"ਸਾਰੇ ਨੰਬਰ ਦੇਖਣ ਲਈ ਚਿੱਤਰ ਨੂੰ ਛੋਹਵੋ ਜਾਂ ਪੁਨਰ ਤਰਤੀਬ ਦੇਣ ਲਈ ਛੋਹਵੋ &amp; ਹੋਲਡ ਕਰੋ"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"ਹਟਾਓ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"ਕਾਲ ਵੇਰਵੇ"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ਦੀ ਮਿਸਡ ਕਾਲ।"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ਦੀ ਕਾਲ ਦਾ ਜਵਾਬ ਦਿੱਤਾ।"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> , <xliff:g id="TYPEORLOCATION">^2</xliff:g> , <xliff:g id="TIMEOFCALL">^3</xliff:g> , <xliff:g id="PHONEACCOUNT">^4</xliff:g> ਵੱਲੋਂ ਬਿਨਾਂ-ਪੜ੍ਹੀ ਵੌਇਸਮੇਲ।"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ਵੱਲੋਂ ਵੌਇਸਮੇਲ।"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ।"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> ਤੇ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ਕਾਲ ਕਰੋ"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"ਵੀਡੀਓ ਕਾਲ <xliff:g id="NAMEORNUMBER">^1</xliff:g>।"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਦੀ ਵੌਇਸਮੇਲ ਚੁਣੋ"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਤੋਂ ਵੌਇਸਮੇਲ ਪਲੇ ਕਰੋ"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਤੋਂ ਵੌਇਸਮੇਲ ਰੋਕੋ"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਤੋਂ ਵੌਇਸਮੇਲ ਮਿਟਾਓ"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਨਵੀਆਂ ਵੌਇਸਮੇਲਾਂ</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਨਵੀਆਂ ਵੌਇਸਮੇਲਾਂ</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਲਈ ਸੰਪਰਕ ਬਣਾਓ"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਨੂੰ ਮੌਜੂਦਾ ਸੰਪਰਕ ਵਿੱਚ ਜੋੜੋ"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਲਈ ਕਾਲ ਵੇਰਵੇ"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"ਕਾਲ ਇਤਿਹਾਸ ਵਿੱਚੋਂ ਮਿਟਾਇਆ ਗਿਆ"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ਅੱਜ"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ਕੱਲ੍ਹ"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"ਪੁਰਾਣੇ"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"ਕਾਲਸ ਸੂਚੀ"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"ਸਪੀਕਰ ਚਾਲੂ ਕਰੋ।"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"ਸਪੀਕਰ ਬੰਦ ਕਰੋ।"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"ਵੱਧ ਤੇਜ਼ ਪਲੇ ਕਰੋ।"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"ਵੱਧ ਹੌਲੀ ਪਲੇ ਕਰੋ।"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ਪਲੇਬੈਕ ਚਾਲੂ ਕਰੋ ਜਾਂ ਰੋਕੋ।"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ਡਿਸਪਲੇ ਚੋਣਾਂ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ਅਵਾਜ਼ਾਂ ਅਤੇ ਵਾਈਬ੍ਰੇਸ਼ਨ"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ਪਹੁੰਚਯੋਗਤਾ"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ਫੋਨ ਰਿੰਗਟੋਨ"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ਕਾਲਾਂ ਲਈ ਵਾਈਬ੍ਰੇਟ ਵੀ ਕਰੋ"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ਡਾਇਲਪੈਡ ਟੋਨਾਂ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ਡਾਇਲਪੈਡ ਟੋਨ ਲੰਮਾਈ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ਸਧਾਰਨ"</item>
+    <item msgid="6177579030803486015">"ਲੰਮਾ"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ਤਤਕਾਲ ਜਵਾਬ"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"ਕਾਲਾਂ"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"ਕਾਲ ਬਲੌਕ ਕਰੋ"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"ਕਾਲ ਬਲੌਕਿੰਗ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਬੰਦ ਹੈ"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"ਕਾਲ ਬਲੌਕਿੰਗ ਅਸਮਰੱਥ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਇਸ ਫੋਨ ਦੁਆਰਾ ਪਿਛਲੇ 48 ਘੰਟਿਆਂ ਤੋਂ ਐਮਰਜੈਂਸੀ ਸੇਵਾਵਾਂ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਹੋਇਆ ਹੈ। ਇਹ 48 ਘੰਟਿਆਂ ਦਾ ਸਮਾਂ ਪੂਰਾ ਹੋਣ ਤੇੋਂ ਬਾਅਦ ਆਟੋਮੈਟਿਕਲੀ ਮੁੜ-ਸਮਰੱਥ ਹੋ ਜਾਵੇਗੀ।"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"ਆਯਾਤ ਨੰਬਰ"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"ਤੁਹਾਡੇ ਚਿੰਨ੍ਹਿਤ ਕੀਤੇ ਪਿਛਲੇ ਕੁਝ ਕਾਲਰ ਹੋਰ ਐਪਸ ਦੁਆਰਾ ਆਟੋਮੈਟਿਕ ਤੌਰ ਤੇ ਵੌਇਸਮੇਲ ਨੂੰ ਭੇਜੇ ਗਏ ਹਨ।"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"ਨੰਬਰ ਵਿਖਾਓ"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"ਆਯਾਤ ਕਰੋ"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"ਆਯਾਤ ਅਸਫਲ ਹੋਇਆ"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"ਨੰਬਰ ਨੂੰ ਅਨਬਲੌਕ ਕਰੋ"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"ਨੰਬਰ ਜੋੜੋ"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ਇਹਨਾਂ ਨੰਬਰਾਂ ਤੋਂ ਕਾਲਾਂ ਬਲੌਕ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ ਅਤੇ ਵੌਇਸਮੇਲਾਂ ਆਪਣੇ ਆਪ ਮਿਟਾ ਦਿੱਤੀਆਂ ਜਾਣਗੀਆਂ।"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ਇਹਨਾਂ ਨੰਬਰਾਂ ਤੋਂ ਕਾਲਾਂ ਬਲੌਕ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ, ਪਰ ਇਹ ਹਾਲੇ ਵੀ ਤੁਹਾਡੇ ਲਈ ਵੌਇਸਮੇਲਾਂ ਛੱਡ ਸਕਦੇ ਹਨ।"</string>
+    <string name="block_list" msgid="7760188925338078011">"ਬਲੌਕ ਕੀਤੇ ਨੰਬਰ"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> ਅਪ੍ਰਮਾਣਿਕ ਹੈ।"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ਪਹਿਲਾਂ ਹੀ ਬਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ।"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"ਕਾਲ ਬਲੋੌਕਿੰਗ 48 ਘੰਟਿਆਂ ਲਈ ਅਯੋਗ ਕੀਤੀ ਗਈ"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"ਆਯੋਗ ਕੀਤਾ ਕਿਉਂਕਿ ਇੱਕ ਸੰਕਟ ਕਾਲ ਕੀਤੀ ਗਈ ਸੀ।"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"ਕਾਲਿੰਗ ਖਾਤੇ"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ਚਾਲੂ ਕਰੋ"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"ਅਨੁਮਤੀਆਂ ਸੈੱਟ ਕਰੋ"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"ਸਪੀਡ ਡਾਇਲ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ, ਸੰਪਰਕ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"ਆਪਣਾ ਕਾਲ ਲੌਗ ਵੇਖਣ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"ਆਪਣੇ ਸੰਪਰਕਾਂ ਨੂੰ ਵੇਖਣ ਲਈ, ਸੰਪਰਕ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"ਆਪਣੀ ਵੌਇਸਮੇਲ ਐਕਸੈਸ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"ਆਪਣੇ ਸੰਪਰਕਾਂ ਦੀ ਖੋਜ ਕਰਨ ਲਈ,, ਸੰਪਰਕ ਅਨੁਮਤੀਆਂ ਨੂੰ ਚਾਲੂ ਕਰੋ।"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"ਕਾਲ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"ਫ਼ੋਨ ਐਪ ਦੇ ਕੋਲ ਸਿਸਟਮ ਸੈਟਿੰਗਜ਼ ਵਿੱਚ ਲਿੱਖਣ ਦੀ ਅਨੁਮਤੀ ਨਹੀਂ ਹੁੰਦੀ ਹੈ।"</string>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
new file mode 100644
index 0000000..d4209fe
--- /dev/null
+++ b/res/values-pl/strings.xml
@@ -0,0 +1,259 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Klawiatura telefonu"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Historia połączeń"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Zgłoś niedokładny numer"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopiuj numer"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopiuj zapis"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Zablokuj numer"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> zablokowany"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Odblokuj numer"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> odblokowany"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"COFNIJ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Usuń"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Edytuj numer przed połączeniem"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Wyczyść historię połączeń"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Usuń pocztę głosową"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Poczta usunięta"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"COFNIJ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Wyczyścić historię połączeń?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Spowoduje to usunięcie wszystkich połączeń z historii."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Czyszczę historię połączeń…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Nieodebrane połączenie"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Nieodebrane połączenie (praca)"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Nieodebrane połączenia"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Liczba nieodebranych połączeń: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Oddzwoń"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Wyślij SMS-a"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> wiadomości głosowe </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> wiadomości głosowych </item>
+      <item quantity="other"> Wiadomości głosowe: <xliff:g id="COUNT">%1$d</xliff:g> </item>
+      <item quantity="one">Wiadomość głosowa</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Odtwórz"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nowa poczta głosowa od: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Nie można odtworzyć wiadomości głosowej"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Wczytuję zawartość poczty głosowej…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Nie można wczytać zawartości poczty głosowej"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Tylko połączenia z pocztą głosową"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Tylko połączenia przychodzące"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Tylko połączenia wychodzące"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Tylko połączenia nieodebrane"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Wizualna poczta głosowa"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Sprawdź i odsłuchaj wiadomości głosowe bez dzwonienia pod określony numer. Może zostać naliczona opłata za transfer danych."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Ustawienia"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Brak aktualizacji o wiadomościach głosowych"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Oczekują nowe wiadomości głosowe. Obecnie nie można ich wczytać."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Skonfiguruj swoją pocztę głosową"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Dźwięk jest niedostępny"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfiguracja"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Połącz z pocztą"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Wybierz numer"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Wybierz numer"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Zapamiętaj ten wybór"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"szukaj"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"wybierz numer"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"numer do wybrania"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Uruchom lub zatrzymaj odtwarzanie"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Włącz lub wyłącz tryb głośnomówiący"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Szukaj pozycji odtwarzania"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Zmniejsz szybkość odtwarzania"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Zwiększ szybkość odtwarzania"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historia połączeń"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Więcej opcji"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"klawiatura"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Pokaż tylko wychodzące"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Pokaż tylko przychodzące"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Pokaż tylko nieodebrane"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Pokaż tylko pocztę głosową"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Pokaż wszystkie połączenia"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj 2-sekundową pauzę"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Dodaj oczekiwanie"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Ustawienia"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nowy kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Wszystkie kontakty"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Szczegóły połączenia"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Szczegóły nie są dostępne"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Użyj klawiatury tonowej"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Wróć do aktywnego połączenia"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Dodaj połączenie"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Połączenie"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Połączenie wychodzące"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Nieodebrane połączenia"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Przychodząca rozmowa wideo"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Wychodząca rozmowa wideo"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Nieodebrana rozmowa wideo"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Poczta głosowa"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Odrzucone połączenie"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Zablokowane połączenie"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Połączenia przychodzące"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Odtwórz pocztę głosową"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Wyświetl kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Połącz z: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Szczegóły kontaktu: <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"Połączenia: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Rozmowa wideo."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Wyślij SMS-a do: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nieodsłuchana poczta głosowa"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Wyszukiwanie głosowe"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Zadzwoń: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Nieznane"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Poczta głosowa"</string>
+    <string name="private_num" msgid="6374339738119166953">"Numer prywatny"</string>
+    <string name="payphone" msgid="7726415831153618726">"Automat telefoniczny"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> o <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Nie można zadzwonić pod ten numer"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Aby skonfigurować pocztę głosową, przejdź do Menu &gt; Ustawienia."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Aby połączyć się z pocztą głosową, najpierw wyłącz tryb samolotowy."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Wczytywanie…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"Numer MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Wczytywanie z karty SIM…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontakty z karty SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nie jest dostępna aplikacja do obsługi kontaktów"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Wyszukiwanie głosowe jest niedostępne"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Nie można zadzwonić, ponieważ aplikacja Telefon została wyłączona."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Na urządzeniu nie ma aplikacji, która mogłaby wykonać tę czynność"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Wyszukaj kontakty"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Dodaj numer lub wyszukaj kontakty"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Twoja historia połączeń jest pusta"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Zadzwoń"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nie masz nieodebranych połączeń."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Skrzynka odbiorcza poczty głosowej jest pusta."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Pokaż tylko ulubione"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Historia połączeń"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Wszystkie"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Nieodebrane"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Poczta gł."</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Zablokować numer <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Połączenia z tego numeru będą blokowane, a wiadomości głosowe będą usuwane automatycznie."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Połączenia z tego numeru będą blokowane, ale dzwoniący wciąż będzie mógł zostawiać wiadomości głosowe."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ZABLOKUJ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Odblokować numer <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Ten numer nie będzie już blokowany i będzie mógł do Ciebie dzwonić."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ODBLOKUJ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Szybkie wybieranie"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Historia połączeń"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontakty"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Poczta głosowa"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Usunięto z ulubionych"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Cofnij"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Zadzwoń: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Utwórz nowy kontakt"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Dodaj do kontaktu"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Wyślij SMS-a"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Rozmowa wideo"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Zablokuj numer"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Nowe nieodebrane połączenia: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Lista szybkiego wybierania jest pusta"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Dodaj do ulubionych"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Nie masz jeszcze żadnych kontaktów"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Dodaj kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Kliknij obraz, by zobaczyć wszystkie numery, lub kliknij go i przytrzymaj, by zmienić kolejność"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Usuń"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Rozmowa wideo"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Wyślij wiadomość"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Szczegóły połączenia"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Zadzwoń: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Nieodebrane połączenie: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Odebrane połączenie: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Nieodsłuchana poczta głosowa od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Poczta głosowa od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Połączenie: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"na koncie <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Zadzwoń"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Zadzwoń: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Rozpocznij rozmowę wideo z: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Posłuchaj wiadomości głosowej od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Odtwórz wiadomości głosowe od <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Wstrzymaj odtwarzanie wiadomości głosowych od <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Usuń wiadomości głosowe od <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nowe wiadomości głosowe</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> nowych wiadomości głosowych</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nowej wiadomości głosowej</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nowa wiadomość głosowa</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Utwórz kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Dodaj: <xliff:g id="NAMEORNUMBER">^1</xliff:g> do istniejącego kontaktu"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Szczegóły połączeń: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Usunięto z historii połączeń"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Dzisiaj"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Wczoraj"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Starsze"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista połączeń"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Włącz głośnik."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Wyłącz głośnik."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Odtwarzaj szybciej."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Odtwarzaj wolniej."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Rozpocznij lub wstrzymaj odtwarzanie."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opcje wyświetlania"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Dźwięki i wibracje"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Ułatwienia dostępu"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Dzwonek telefonu"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Wibracja przy połączeniach"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dźwięki klawiatury"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tony klawiatury"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normalne"</item>
+    <item msgid="6177579030803486015">"Długie"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Szybkie odpowiedzi"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Połączenia"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blokowanie połączeń"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blokada połączeń tymczasowo wyłączona"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Blokada połączeń została wyłączona, ponieważ w ciągu ostatnich 48 godzin dzwoniono z tego telefonu na numer alarmowy. Blokada zostanie automatycznie przywrócona po upływie 48 godzin."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Zaimportuj numery"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Oznaczyłeś wcześniej niektórych rozmówców, aby byli automatycznie przekierowywani na pocztę głosową przy użyciu innych aplikacji."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Pokaż numery"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importuj"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Nie udało się zaimportować"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Odblokuj numer"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Dodaj numer"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Połączenia z tych numerów będą blokowane, a wiadomości głosowe będą usuwane automatycznie."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Połączenia z tych numerów będą blokowane, ale dzwoniący wciąż będą mogli zostawiać wiadomości głosowe."</string>
+    <string name="block_list" msgid="7760188925338078011">"Zablokowane numery"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Numer <xliff:g id="NUMBER">%1$s</xliff:g> jest nieprawidłowy."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Numer <xliff:g id="NUMBER">%1$s</xliff:g> jest już zablokowany."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Blokada połączeń została wyłączona na 48 godzin"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Wyłączona, ponieważ wykonano połączenie alarmowe."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Konta telefoniczne"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Włącz"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Ustaw uprawnienia"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Aby włączyć szybkie wybieranie, włącz uprawnienie Kontakty."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Aby zobaczyć swój rejestr połączeń, włącz uprawnienie Telefon."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Aby zobaczyć swoje kontakty, włącz uprawnienie Kontakty."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Aby uzyskać dostęp do poczty głosowej, włącz uprawnienie Telefon."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Aby wyszukać kontakty, włącz uprawnienia Kontakty."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Aby nawiązać połączenie, włącz uprawnienie Telefon."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacja Telefon nie ma uprawnień do zapisu w ustawieniach systemowych."</string>
+</resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..1fb4628
--- /dev/null
+++ b/res/values-pt-rBR/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefone"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefone"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Teclado numérico do smartphone"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefone"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Histórico de chamadas"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Informar número incorreto"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copiar número"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copiar transcrição"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloquear número"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Número <xliff:g id="NUMBER">%1$s</xliff:g> bloqueado"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Desbloquear número"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Número <xliff:g id="NUMBER">%1$s</xliff:g> desbloqueado"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"DESFAZER"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Excluir"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Editar número antes de chamar"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Limpar histórico de chamadas"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Excluir mensagem de voz"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correio de voz excluído"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESFAZER"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Limpar histórico de chamadas?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Esta ação excluirá todas as chamadas do seu histórico"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Limpando histórico de chamadas…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Smartphone"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Chamada perdida"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Chamada de trabalho perdida"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Chamadas perdidas"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas perdidas"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Retornar chamada"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mensagem"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduzir"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova mensagem de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Não foi possível repr. correio de voz"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Carregando correio de voz..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Não foi possível carregar correio de voz"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Somente chamadas com correio de voz"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Somente chamadas recebidas"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Somente chamadas de saída"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Somente chamadas perdidas"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Correio de voz visual"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Veja e ouça seu correio de voz, sem precisar ligar para um número. Podem ser aplicadas cobranças de dados."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Configurações"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"As atualizações do correio de voz não estão disponíveis"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Novo correio de voz na espera. Não é possível carregá-lo agora."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configure seu correio de voz"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"O áudio não está disponível"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Ligar p/ correio voz"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Escolher número"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Escolher número"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Lembrar desta escolha"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"pesquisar"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"discar"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"número para discagem"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Iniciar ou interromper a reprodução"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Ligar ou desligar o vivavoz"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Procurar posição de reprodução"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Reduzir a taxa de reprodução"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Aumentar a taxa de reprodução"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Histórico de chamadas"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Mais opções"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"teclado numérico"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar apenas enviadas"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar apenas recebidas"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar apenas perdidas"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Exibir apenas mensagens de voz"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Adicionar pausa de 2 segundos"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Adicionar espera"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Configurações"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Novo contato"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Todos os contatos"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detalhes da chamada"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Os detalhes não estão disponíveis"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usar teclado multifrequencial"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Retornar para a chamada em espera"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Ad. cham."</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Chamada recebida"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Chamada efetuada"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Chamada perdida"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Videochamada recebida"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Videochamada realizada"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Videochamada perdida"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Correio de voz"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Chamada recusada"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Chamada bloqueada"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Chamadas recebidas"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Reproduzir mensagem de voz"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Visualizar contato <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Ligar para <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Detalhes de contato para <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> chamadas."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videochamada."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Enviar SMS para <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nova mensagem de voz"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar pesquisa por voz"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Desconhecido"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Correio de voz"</string>
+    <string name="private_num" msgid="6374339738119166953">"Número privado"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefone público"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> seg"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> às <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Não é possível ligar para este número"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar o correio de voz, vá para Menu &gt; Configurações."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para ligar para o correio de voz, primeiro desative o modo avião."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Carregando…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Carregando do cartão SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contatos do cartão SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nenhum app de contatos disponível"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"A pesquisa por voz não está disponível"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Não é possível fazer uma chamada porque o app Telefone foi desativado."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Nenhum app está disponível para essa ação neste dispositivo"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Pesquisar contatos"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Adicionar número ou pesquisar contatos"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Seu histórico de chamadas está vazio"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Fazer uma chamada"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Você não tem chamadas perdidas."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Sua caixa de entrada de correio de voz está vazia."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Mostrar somente favoritos"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Histórico de chamadas"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Todas"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Perdidas"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Correio de voz"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Bloquear <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Chamadas feitas a partir deste número serão bloqueadas. Correios de voz serão excluídos automaticamente."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Chamadas feitas a partir deste número serão bloqueadas, mas é possível que o autor ainda consiga deixar correios de voz para você."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOQUEAR"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Desbloquear <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"As chamadas feitas a você por este número não serão mais bloqueadas."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DESBLOQUEAR"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Discagem rápida"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Histórico de chamadas"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contatos"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Correio de voz"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Removido dos favoritos"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfazer"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Criar novo contato"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Adicionar a um contato"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fazer videochamada"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloquear número"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> novas chamadas perdidas"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Ainda não há ninguém na sua discagem rápida"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Adicionar favorito"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Você ainda não tem contatos"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Adicionar um contato"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Toque na imagem para ver todos os números ou toque e segure para reordenar"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Remover"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videochamada"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Enviar uma mensagem"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detalhes da chamada"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Ligar para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Chamada perdida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Chamada atendida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Correio de voz não lido de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"em <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Ligar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Ligar para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videochamada <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Ouvir mensagem de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Reproduzir correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pausar correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Excluir correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> novos correios de voz</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> novos correios de voz</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Criar contato para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Adicionar <xliff:g id="NAMEORNUMBER">^1</xliff:g> a um contato já existente"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detalhes de chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Excluída do histórico de chamadas"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Hoje"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ontem"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Antiga"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista de chamadas"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Ative o alto-falante."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Desative o alto-falante."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Reprodução mais rápida."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Reprodução mais lenta."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Inicie ou pause a reprodução."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opções de exibição"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibração"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Acessibilidade"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Toque do telefone"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Também vibrar para chamadas"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons de teclado"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duração do tom do teclado"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normais"</item>
+    <item msgid="6177579030803486015">"Longos"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Bloqueio de chamadas"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Bloqueio de chamadas temporiamente desativado"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"O bloqueio de chamadas foi desativado porque você entrou em contato com serviços de emergência usando este telefone nas últimas 48 horas. Ele será reativado automaticamente depois de um período de 48 horas."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importar números"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Anteriormente, você marcou alguns autores de chamada para serem enviados automaticamente para o correio de voz por meio de outros apps."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Ver números"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importar"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Falha na importação"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Desbloquear número"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Adicionar número"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Chamadas a partir destes números serão bloqueadas. Correios de voz serão excluídos automaticamente."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Chamadas feitas a partir destes números serão bloqueadas, mas é possível que eles ainda consigam deixar correios de voz para você."</string>
+    <string name="block_list" msgid="7760188925338078011">"Números bloqueados"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"O número <xliff:g id="NUMBER">%1$s</xliff:g> é inválido."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"O número <xliff:g id="NUMBER">%1$s</xliff:g> já está bloqueado."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Bloqueio de chamadas desativado por 48 horas"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Desativado porque foi feita uma chamada de emergência."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Ativar"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Definir permissões"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Para ativar a discagem rápida, ative a permissão para o app Contatos."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Para ver seu registro de chamadas, ative a permissão para o app Telefone."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Para ver seus contatos, ative a permissão para o app Contatos."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Para acessar seu correio de voz, ative a permissão para o app Telefone."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Para pesquisar seus contatos, ative as permissões para \"Contatos\"."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Para fazer uma chamada, ative a permissão para o app Telefone."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"O app Telefone não tem permissão para gravar nas configurações do sistema."</string>
+</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..29f89ab
--- /dev/null
+++ b/res/values-pt-rPT/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telemóvel"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telemóvel"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Teclado do telemóvel"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefone"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Histórico de chamadas"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Denunciar número incorreto"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copiar número"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copiar transcrição"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloquear número"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> bloqueado"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Desbloquear número"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> desbloqueado"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ANULAR"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Eliminar"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Editar o número antes de efetuar a chamada"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Limpar histórico de chamadas"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Eliminar correio de voz"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correio de voz elim."</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANULAR"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Limpar histórico de chamadas?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Todas as chamadas serão eliminadas do histórico"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"A limpar histórico de chamadas…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telemóvel"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Chamada não atendida"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Chamada de trabalho não atendida"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Chamadas não atendidas"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas não atendidas"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Ligar de volta"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mensagem"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensagens de correio de voz </item>
+      <item quantity="one">Mensagem de correio de voz</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduzir"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova msg de correio de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Não foi poss. reprod. o correio de voz"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"A carregar o correio de voz..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Não foi poss. carregar o correio de voz"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Apenas chamadas com correio de voz"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Apenas chamadas recebidas"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Apenas chamadas efetuadas"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Apenas chamadas não atendidas"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Correio de voz visual"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Veja e ouça o seu correio de voz sem ter de telefonar para um número. Podem aplicar-se taxas de dados."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Definições"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Atualizações do correio de voz não disponíveis"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Nova mensag. corr. voz a aguardar. Não é poss. carregar agora."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configurar o correio de voz"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Áudio não disponível"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Chamar correio de voz"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Selecionar número"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Selecionar número"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Memorizar esta escolha"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"pesquisar"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"marcar"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"número a marcar"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Reproduzir ou interromper a reprodução"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Ligar ou desligar o altifalante"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Procurar a posição da reprodução"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Diminuir a velocidade de reprodução"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Aumentar a velocidade de reprodução"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Histórico de Chamadas"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Mais opções"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"teclado"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar apenas cham. efetuadas"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar apenas cham. recebidas"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar apenas cham. n. atend."</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar apenas msgs corr. voz"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Adicionar pausa de 2 seg."</string>
+    <string name="add_wait" msgid="3360818652790319634">"Adicionar espera"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Definições"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Novo contacto"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Todos os contactos"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detalhes da chamada"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detalhes não disponíveis"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Utilizar teclado numérico com tons de toque"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Voltar à chamada em curso"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Adicionar chamada"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Chamada recebida"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Chamada efetuada"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Chamada não atendida"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"A receber videochamada"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Videochamada efetuada"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Videochamada não atendida"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Correio de voz"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Chamada recusada"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Chamada bloqueada"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Chamadas recebidas"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Reproduzir mensagem de correio de voz"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Ver o contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Ligar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Detalhes de contacto para <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> chamadas."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videochamada."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Enviar SMS para <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mensagem de correio de voz ainda não ouvida"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar pesquisa por voz"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Telefonar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Desconhecido"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Correio de voz"</string>
+    <string name="private_num" msgid="6374339738119166953">"Número particular"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefone público"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> seg"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> às <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Não é possível ligar para este número"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar o correio de voz, aceda a Menu &gt; Definições."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para efetuar uma chamada para o correio de voz, desative primeiro o Modo de avião."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"A carregar…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"A carregar a partir do cartão SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contactos no cartão SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Não existe nenhuma aplicação de contactos disponível"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Pesquisa por voz não disponível"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Não é possível efetuar uma chamada porque a aplicação Telefone foi desativada."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Não existe nenhuma aplicação para isso neste dispositivo"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Pesquisar contactos"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Adic. n.º ou pesq. contactos"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"O seu histórico de chamadas está vazio"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Efetuar uma chamada"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Não tem chamadas não atendidas."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"A caixa de entrada do correio de voz está vazia."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Mostrar apenas os favoritos"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Histórico de Chamadas"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Todas"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Não atendidas"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Corr. Voz"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Pretende bloquear <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"As chamadas a partir deste número serão bloqueadas e as mensagens de correio de voz serão automaticamente eliminadas."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"As chamadas a partir deste número serão bloqueadas, mas o autor da chamada poderá deixar-lhe mensagens de correio de voz."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOQUEAR"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Pretende desbloquear <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Este número deixará de estar bloqueado e poderá telefonar para si."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DESBLOQUEAR"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Marcação rápida"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Histórico de Chamadas"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contactos"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Correio de voz"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Removido dos favoritos"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Anular"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefonar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Criar novo contacto"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Adicionar a um contacto"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fazer videochamada"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloquear número"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> chamadas não atendidas novas"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Ainda não tem ninguém na marcação rápida"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Adicionar um favorito"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Ainda não tem nenhum contacto"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Adicionar um contacto"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Toque na imagem para ver todos os números ou toque sem soltar para reordenar"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Remover"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videochamada"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Enviar uma mensagem"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detalhes da chamada"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Telefonar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Chamada não atendida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Chamada atendida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Mensagem de correio de voz não lida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Mensagem de correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Telefonar para <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"em <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telefonar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Telefonar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Fazer videochamada com <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Ouvir o correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Reproduzir mensagem de correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Colocar a mensagem de correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g> em pausa"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Eliminar mensagem de correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> novas mensagens de correio de voz</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nova mensagem de correio de voz</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Criar contacto para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Adicionar <xliff:g id="NAMEORNUMBER">^1</xliff:g> ao contacto existente"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detalhes de chamadas de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Eliminado do histórico de chamadas"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Hoje"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ontem"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Mais antigas"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista de chamadas"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Ligar altifalante."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Desligar altifalante"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Reproduzir mais rápido."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Reproduzir mais lento."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar ou interromper a reprodução."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opções de visualização"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibração"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Acessibilidade"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Toque do telemóvel"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar também para chamadas"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons do teclado"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duração do tom do teclado"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Longa"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Bloqueio de chamadas"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Bloqueio de chamadas tempor. desativado"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"O bloqueio de chamadas foi desativado porque contactou os serviços de emergência a partir deste telemóvel nas últimas 48 horas. O bloqueio será automaticamente reativado assim que expirar o período de 48 horas."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importar números"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Anteriormente, marcou alguns autores de chamadas para serem automaticamente enviados para o correio de voz através de outras aplicações."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Ver números"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importar"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Falha ao importar"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Desbloquear número"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Adicionar número"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"As chamadas a partir destes números serão bloqueadas e as mensagens de correio de voz serão automaticamente eliminadas."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"As chamadas a partir destes números serão bloqueadas, mas os respetivos autores poderão deixar-lhe mensagens de correio de voz."</string>
+    <string name="block_list" msgid="7760188925338078011">"Números bloqueados"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> é inválido."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> já está bloqueado."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Bloqueio de chamadas desativado durante 48 horas"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Desativado porque foi efetuada uma chamada de emergência."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Ativar"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Definir autorizações"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Para ativar a marcação rápida, ative a autorização Contactos."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Para ver o registo de chamadas, ative a autorização Telemóvel."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Para ver os seus contactos, ative a autorização Contactos."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Para aceder ao correio de voz, ative a autorização Telemóvel."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Para pesquisar os seus contactos, ative as autorizações Contactos."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Para efetuar uma chamada, ative a autorização Telemóvel."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"A aplicação Telefone não tem autorização para gravar nas definições do sistema."</string>
+</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
new file mode 100644
index 0000000..1fb4628
--- /dev/null
+++ b/res/values-pt/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefone"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefone"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Teclado numérico do smartphone"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefone"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Histórico de chamadas"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Informar número incorreto"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copiar número"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copiar transcrição"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Bloquear número"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Número <xliff:g id="NUMBER">%1$s</xliff:g> bloqueado"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Desbloquear número"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Número <xliff:g id="NUMBER">%1$s</xliff:g> desbloqueado"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"DESFAZER"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Excluir"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Editar número antes de chamar"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Limpar histórico de chamadas"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Excluir mensagem de voz"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Correio de voz excluído"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"DESFAZER"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Limpar histórico de chamadas?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Esta ação excluirá todas as chamadas do seu histórico"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Limpando histórico de chamadas…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Smartphone"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Chamada perdida"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Chamada de trabalho perdida"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Chamadas perdidas"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> chamadas perdidas"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Retornar chamada"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mensagem"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduzir"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova mensagem de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Não foi possível repr. correio de voz"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Carregando correio de voz..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Não foi possível carregar correio de voz"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Somente chamadas com correio de voz"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Somente chamadas recebidas"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Somente chamadas de saída"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Somente chamadas perdidas"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Correio de voz visual"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Veja e ouça seu correio de voz, sem precisar ligar para um número. Podem ser aplicadas cobranças de dados."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Configurações"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"As atualizações do correio de voz não estão disponíveis"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Novo correio de voz na espera. Não é possível carregá-lo agora."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configure seu correio de voz"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"O áudio não está disponível"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Ligar p/ correio voz"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Escolher número"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Escolher número"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Lembrar desta escolha"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"pesquisar"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"discar"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"número para discagem"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Iniciar ou interromper a reprodução"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Ligar ou desligar o vivavoz"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Procurar posição de reprodução"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Reduzir a taxa de reprodução"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Aumentar a taxa de reprodução"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Histórico de chamadas"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Mais opções"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"teclado numérico"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar apenas enviadas"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar apenas recebidas"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar apenas perdidas"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Exibir apenas mensagens de voz"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Adicionar pausa de 2 segundos"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Adicionar espera"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Configurações"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Novo contato"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Todos os contatos"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detalhes da chamada"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Os detalhes não estão disponíveis"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usar teclado multifrequencial"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Retornar para a chamada em espera"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Ad. cham."</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Chamada recebida"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Chamada efetuada"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Chamada perdida"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Videochamada recebida"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Videochamada realizada"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Videochamada perdida"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Correio de voz"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Chamada recusada"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Chamada bloqueada"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Chamadas recebidas"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Reproduzir mensagem de voz"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Visualizar contato <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Ligar para <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Detalhes de contato para <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> chamadas."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videochamada."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Enviar SMS para <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nova mensagem de voz"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Iniciar pesquisa por voz"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Desconhecido"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Correio de voz"</string>
+    <string name="private_num" msgid="6374339738119166953">"Número privado"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefone público"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> seg"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> às <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Não é possível ligar para este número"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar o correio de voz, vá para Menu &gt; Configurações."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para ligar para o correio de voz, primeiro desative o modo avião."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Carregando…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Carregando do cartão SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Contatos do cartão SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nenhum app de contatos disponível"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"A pesquisa por voz não está disponível"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Não é possível fazer uma chamada porque o app Telefone foi desativado."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Nenhum app está disponível para essa ação neste dispositivo"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Pesquisar contatos"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Adicionar número ou pesquisar contatos"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Seu histórico de chamadas está vazio"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Fazer uma chamada"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Você não tem chamadas perdidas."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Sua caixa de entrada de correio de voz está vazia."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Mostrar somente favoritos"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Histórico de chamadas"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Todas"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Perdidas"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Correio de voz"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Bloquear <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Chamadas feitas a partir deste número serão bloqueadas. Correios de voz serão excluídos automaticamente."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Chamadas feitas a partir deste número serão bloqueadas, mas é possível que o autor ainda consiga deixar correios de voz para você."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOQUEAR"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Desbloquear <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"As chamadas feitas a você por este número não serão mais bloqueadas."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DESBLOQUEAR"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Discagem rápida"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Histórico de chamadas"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contatos"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Correio de voz"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Removido dos favoritos"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfazer"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Criar novo contato"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Adicionar a um contato"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fazer videochamada"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Bloquear número"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> novas chamadas perdidas"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Ainda não há ninguém na sua discagem rápida"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Adicionar favorito"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Você ainda não tem contatos"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Adicionar um contato"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Toque na imagem para ver todos os números ou toque e segure para reordenar"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Remover"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videochamada"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Enviar uma mensagem"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detalhes da chamada"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Ligar para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Chamada perdida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Chamada atendida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Correio de voz não lido de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"em <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Ligar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Ligar para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videochamada <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Ouvir mensagem de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Reproduzir correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pausar correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Excluir correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> novos correios de voz</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> novos correios de voz</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Criar contato para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Adicionar <xliff:g id="NAMEORNUMBER">^1</xliff:g> a um contato já existente"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detalhes de chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Excluída do histórico de chamadas"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Hoje"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ontem"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Antiga"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista de chamadas"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Ative o alto-falante."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Desative o alto-falante."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Reprodução mais rápida."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Reprodução mais lenta."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Inicie ou pause a reprodução."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opções de exibição"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibração"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Acessibilidade"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Toque do telefone"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Também vibrar para chamadas"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons de teclado"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duração do tom do teclado"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normais"</item>
+    <item msgid="6177579030803486015">"Longos"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Bloqueio de chamadas"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Bloqueio de chamadas temporiamente desativado"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"O bloqueio de chamadas foi desativado porque você entrou em contato com serviços de emergência usando este telefone nas últimas 48 horas. Ele será reativado automaticamente depois de um período de 48 horas."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importar números"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Anteriormente, você marcou alguns autores de chamada para serem enviados automaticamente para o correio de voz por meio de outros apps."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Ver números"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importar"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Falha na importação"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Desbloquear número"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Adicionar número"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Chamadas a partir destes números serão bloqueadas. Correios de voz serão excluídos automaticamente."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Chamadas feitas a partir destes números serão bloqueadas, mas é possível que eles ainda consigam deixar correios de voz para você."</string>
+    <string name="block_list" msgid="7760188925338078011">"Números bloqueados"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"O número <xliff:g id="NUMBER">%1$s</xliff:g> é inválido."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"O número <xliff:g id="NUMBER">%1$s</xliff:g> já está bloqueado."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Bloqueio de chamadas desativado por 48 horas"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Desativado porque foi feita uma chamada de emergência."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Ativar"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Definir permissões"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Para ativar a discagem rápida, ative a permissão para o app Contatos."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Para ver seu registro de chamadas, ative a permissão para o app Telefone."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Para ver seus contatos, ative a permissão para o app Contatos."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Para acessar seu correio de voz, ative a permissão para o app Telefone."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Para pesquisar seus contatos, ative as permissões para \"Contatos\"."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Para fazer uma chamada, ative a permissão para o app Telefone."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"O app Telefone não tem permissão para gravar nas configurações do sistema."</string>
+</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
new file mode 100644
index 0000000..1a79f46
--- /dev/null
+++ b/res/values-ro/strings.xml
@@ -0,0 +1,257 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Tastatura numerică a telefonului"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Istoricul apelurilor"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Raportați numărul ca incorect"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Copiați numărul"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Copiați transcrierea"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blocați numărul"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> a fost blocat"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Deblocați numărul"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> a fost deblocat"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ANULAȚI"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Ștergeți"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Modificați numărul înainte de apelare"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Ștergeți istoricul apelurilor"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ștergeți mesajul vocal"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Mesaj vocal șters"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ANULAȚI"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Ștergeți istoricul apelurilor?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Astfel vor fi șterse toate apelurile din istoric"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Se șterge istoricul apelurilor…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Apel nepreluat"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Apel de serviciu nepreluat"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Apeluri nepreluate"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> (de) apeluri nepreluate"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Apelați înapoi"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Trimiteți mesaj"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> mesaje vocale </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> de mesaje vocale </item>
+      <item quantity="one">Mesaj vocal</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Redați"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Mesaj vocal nou de la <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Nu s-a putut reda mesageria vocală"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Se încarcă mesageria vocală…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Nu s-a putut încărca mesageria vocală"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Numai apelurile cu mesaje vocale"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Numai apelurile primite"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Numai apelurile efectuate"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Numai apelurile nepreluate"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Mesagerie vocală vizuală"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Vedeți și ascultați mesageria vocală, fără a fi necesar să apelați un număr de telefon. Pot fi aplicate costuri pentru date."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Setări"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Nu sunt disponibile actualizări ale mesageriei vocale"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Mesaj vocal nou în așteptare. Nu poate fi încărcat acum."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Configurați mesageria vocală"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Conținutul audio nu este disponibil"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurați"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Apel. mesag. vocală"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Selectaţi numărul"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Selectaţi numărul"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Rețineți această alegere"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"căutare"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"apelaţi"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"numărul de apelat"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Porniți sau opriți redarea"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Activați sau dezactivați difuzorul"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Căutați poziția de redare"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Reduceți viteza redării"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Măriți viteza redării"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Istoricul apelurilor"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Mai multe opțiuni"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"tastatură numerică"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Numai apelurile efectuate"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Numai apelurile primite"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Numai apelurile nepreluate"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Afişaţi numai mesajele vocale"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Afişaţi toate apelurile"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Adăugați o pauză de 2 secunde"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Adăugați interval de așteptare"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Setări"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Intrare nouă în agendă"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Toată agenda"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detaliile apelului"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Nu sunt disponibile detalii"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Tastatura tactilă cu sunet"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Reveniţi la apelul în curs"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Adăugați un apel"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Apel de intrare"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Apel de ieşire"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Apel nepreluat"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Apel video primit"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Apel video efectuat"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Apel video nepreluat"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Mesaj vocal"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Apel respins"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Apel blocat"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Apeluri de intrare"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Redați mesajul vocal"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Afişaţi persoana din agendă <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Apelaţi pe <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Detalii de contact pentru <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> (de) apeluri."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Apel video."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Trimiteți SMS la <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mesaje vocale neascultate"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Începeți căutarea vocală"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Apelaţi <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Necunoscut"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Mesagerie vocală"</string>
+    <string name="private_num" msgid="6374339738119166953">"Număr privat"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefon public"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> (de) secunde"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> la <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Nu puteți apela acest număr"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Pentru a configura mesageria vocală, accesați Meniu &gt; Setări."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Pentru a apela mesageria vocală, mai întâi dezactivați modul Avion."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Se încarcă..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Se încarcă de pe cardul SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Persoanele din agendă de pe cardul SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nu este disponibilă nicio aplicație pentru agendă"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Căutarea vocală nu este disponibilă"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Nu se poate efectua un apel telefonic, deoarece aplicația Telefon a fost dezactivată."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Pe dispozitiv nu există nicio aplicație pentru această acțiune"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Căutați persoane de contact"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Adăugați număr/căutați contacte"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Istoricul apelurilor este gol"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Apelați"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nu aveți niciun apel nepreluat."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Nu există mesaje primite în mesageria vocală."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Afișați numai preferate"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Istoricul apelurilor"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Toate"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Nepreluate"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Mesagerie vocală"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Blocați <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Apelurile de la acest număr vor fi blocate, iar mesajele vocale vor fi șterse automat."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Apelurile de la acest număr vor fi blocate, dar apelantul va putea totuși să vă lase mesaje vocale."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOCAȚI"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Deblocați <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Acest număr nu va mai fi blocat și va putea să vă apeleze."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"DEBLOCAȚI"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Apelare rapidă"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Istoricul apelurilor"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Agendă"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Mesagerie vocală"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"S-a eliminat din preferate"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Anulați"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Apelați <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Creați o intrare nouă"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Adăugați la o intrare"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Trimiteți SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Inițiați un apel video"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blocați numărul"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> (de) apeluri nepreluate noi"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Nicio persoană de contact setată pentru apelarea rapidă"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Adăugați o persoană de contact preferată"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Nu aveți încă persoane de contact"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Adăugați o persoană de contact"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Atingeți imaginea pentru a vedea toate numerele sau atingeți lung pentru reordonare"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Eliminați"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Apel video"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Trimiteți un mesaj"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detaliile apelului"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Apelați <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Apel nepreluat de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Apel preluat de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Mesaj vocal necitit de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Mesaj vocal de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Apel către <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"pe <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Apelați"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Apelați <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Apelați video <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Ascultați mesajul vocal de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Redați mesajul vocal de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Întrerupeți mesajul vocal de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Ștergeți mesajul vocal de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> mesaje vocale noi</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> de mesaje vocale noi</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> mesaj vocal nou</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Creați o persoană de contact pentru <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Adăugați <xliff:g id="NAMEORNUMBER">^1</xliff:g> la o persoană de contact existentă"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detaliile apelului pentru <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"S-a șters din istoricul apelurilor"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Astăzi"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ieri"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Mai vechi"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista de apeluri"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Porniți difuzorul."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Opriți difuzorul."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Jucați mai repede."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Jucați mai lent."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Porniți sau întrerupeți redarea."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opțiuni de afișare"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sunete și vibrații"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilitate"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Ton de apel al telefonului"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrează și pentru apeluri"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonuri pt. tastatura numerică"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Lungimea tonului tastaturii numerice"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normală"</item>
+    <item msgid="6177579030803486015">"Lungă"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Răspunsuri rapide"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Apeluri"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blocarea apelurilor"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blocarea apelurilor e dezactivată temporar"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Blocarea apelurilor a fost dezactivată, deoarece ați contactat serviciile de urgență de pe acest telefon în ultimele 48 de ore. Funcția va fi reactivată automat după ce perioada de 48 de ore va expira."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importați numere"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Anterior, ați marcat câțiva apelanți pentru a fi redirecționați automat spre mesageria vocală prin alte aplicații."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Vedeți numerele"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importați"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Importul nu a reușit"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Deblocați numărul"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Adăugați un număr"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Apelurile de la aceste numere vor fi blocate, iar mesajele vocale vor fi șterse automat."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Apelurile de la aceste numere vor fi blocate, dar apelanții vor putea totuși să vă lase mesaje vocale."</string>
+    <string name="block_list" msgid="7760188925338078011">"Numere blocate"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> nu este valid."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> este deja blocat."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Blocarea apelurilor este dezactivată pentru 48 de ore"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Dezactivată din cauza efectuării unui apel de urgență."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Conturi pentru apelare"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Activați"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Setați permisiunile"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Pentru a activa apelarea rapidă, activați permisiunea Agendă."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Pentru a vedea jurnalul de apeluri, activați permisiunea Telefon."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Pentru a vedea persoanele de contact, activați permisiunea Agendă."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Pentru a accesa mesageria vocală, activați permisiunea Telefon."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Pentru a căuta în persoanele de contact, activați permisiunea Agendă."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Pentru a apela, activați permisiunea Telefon."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplicația Telefon nu are permisiunea să modifice setările de sistem."</string>
+</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
new file mode 100644
index 0000000..397ca15
--- /dev/null
+++ b/res/values-ru/strings.xml
@@ -0,0 +1,259 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Телефон"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Панель набора номера"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Кнопки"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Журнал звонков"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Ошибка в номере"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Скопировать номер"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Скопировать транскрипцию"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Заблокировать номер"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> заблокирован"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Разблокировать номер"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> разблокирован"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ОТМЕНИТЬ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Удалить"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Изменить номер и позвонить"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Очистить журнал звонков"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Удалить голосовое сообщение"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Сообщение удалено"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ОТМЕНИТЬ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Очистить журнал звонков?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Журнал звонков будет удален."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Очистка журнала звонков…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Вызов"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Пропущенный вызов"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Пропущенный звонок (работа)"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Пропущенные вызовы"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Пропущенных вызовов: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Перезвонить"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Написать SMS"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> голосовое сообщение </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> голосовых сообщения </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> голосовых сообщений </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> голосового сообщения </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Прослушать"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Новое гол. сообщение: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Не удалось воспроизвести сообщения"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Загрузка сообщений…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Не удалось загрузить голосовую почту"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Только звонки с голосовой почтой"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Только входящие звонки"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Только исходящие звонки"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Только пропущенные звонки"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Визуальная голосовая почта"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Просматривайте и прослушивайте голосовые сообщения без лишних звонков. Может взиматься плата за передачу данных."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Настройки"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Не удается загрузить данные голосовой почты"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Не удается загрузить новое голосовое сообщение"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Настройте голосовую почту"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Аудио недоступно"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Настройка"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Получить почту"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Выбор номера"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Выбор номера"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Запомнить выбор"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"поиск"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"набор номера"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"набираемый номер"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Начать или остановить воспроизведение"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Включить или отключить громкую связь"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Выбрать позицию для воспроизведения"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Уменьшить скорость воспроизведения"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Увеличить скорость воспроизведения"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Журнал звонков"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Ещё"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"Панель набора номера"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Исходящие"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Входящие"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Пропущенные"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Показать голосовые сообщения"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Все вызовы"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Добавить двухсекундную паузу"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Добавить паузу"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Настройки"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Новый контакт"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Все контакты"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Вызов"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Данные недоступны"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Панель тонального набора"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Вернуться к текущему вызову"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Добавить вызов"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Входящий вызов"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Исходящий вызов"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Пропущенный вызов"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Входящий видеовызов"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Исходящий видеовызов"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Пропущенный видеовызов"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Голосовая почта"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Отклоненный вызов"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Заблокированный вызов"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Входящие вызовы"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Прослушать голосовую почту"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Просмотреть данные: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Позвонить: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Сведения о контакте <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"Вызовов: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Видеовстреча"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Отправить SMS пользователю <xliff:g id="NAME">%1$s</xliff:g>."</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослушанные сообщения голосовой почты"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Начать голосовой поиск"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Позвонить: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Неизвестно"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Голосовая почта"</string>
+    <string name="private_num" msgid="6374339738119166953">"Скрытый номер"</string>
+    <string name="payphone" msgid="7726415831153618726">"Телефон-автомат"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> в <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"На этот номер нельзя позвонить."</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Чтобы настроить голосовую почту, выберите \"Меню &gt; Настройки\"."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Сначала отключите режим полета."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Загрузка..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Загрузка с SIM-карты…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Контакты на SIM-карте"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Нет приложения для работы с контактами"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Голосовой поиск недоступен"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Нельзя совершать телефонные звонки, поскольку приложение \"Телефон\" отключено."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"На устройстве нет подходящего приложения"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Поиск в контактах"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Найдите контакт или введите номер"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"В журнале пока нет звонков."</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Вызов"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Нет пропущенных вызовов"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Нет входящих голосовых сообщений"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Только часто используемые"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Журнал звонков"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Все"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Пропущенные"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Г. почта"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Заблокировать <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Вызовы с этого номера будут блокироваться, а голосовые сообщения – автоматически удаляться."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Вызовы с этого номера будут блокироваться, но абонент сможет оставлять вам голосовые сообщения."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"БЛОКИРОВАТЬ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Разблокировать <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Теперь вы сможете получать звонки с этого номера."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"РАЗБЛОКИРОВАТЬ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Быстрый набор"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Журнал звонков"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Контакты"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Голосовая почта"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Контакт удален из избранных"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Отмена"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Позвонить: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Создать контакт"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Добавить к контакту"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Отправить SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Начать видеовстречу"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Заблокировать номер"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Пропущенных вызовов: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Нет номеров для быстрого набора"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Настроить быстрый набор"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Нет контактов"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Добавить контакт"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Коснитесь изображения, чтобы увидеть все номера, или нажмите и удерживайте, чтобы изменить порядок"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Удалить"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видеовстреча"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Отправить сообщение"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Сведения о вызове"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Позвонить: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропущен вызов от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>. <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Принят вызов от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>. <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Непрослушанное сообщение от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Голосовая почта от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Вызов контакту <xliff:g id="NAMEORNUMBER">^1</xliff:g>. <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Вызов"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Позвонить: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Видеовстреча: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Прослушать сообщение от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Прослушать голосовое сообщение от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Приостановить голосовое сообщение от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Удалить голосовое сообщение от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> новое голосовое сообщение</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> новых голосовых сообщения</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> новых голосовых сообщений</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> нового голосового сообщения</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Добавить контакт: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Добавить \"<xliff:g id="NAMEORNUMBER">^1</xliff:g>\" к контакту"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> – сведения о вызове"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Вызов удален из журнала"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Сегодня"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Вчера"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Предыдущие записи"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Вызовы"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Включить динамик."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Выключить динамик."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Увеличить скорость воспроизведения."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Уменьшить скорость воспроизведения."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Начать или приостановить воспроизведение."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Отображение контактов"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуки и вибрация"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Специальные возможности"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Рингтон"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибросигнал при вызове"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звук при наборе номера"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Длительность сигналов при наборе номера"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Обычная"</item>
+    <item msgid="6177579030803486015">"Большая"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Быстрые ответы"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Вызовы"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Блокировка вызовов"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Блокировка вызовов временно отключена"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Блокировка вызовов отключена, поскольку вы недавно набирали номер экстренной службы. Когда с момента звонка пройдет 48 часов, эта функция включится автоматически."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Импортировать номера"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Вы настроили перенаправление вызовов от некоторых абонентов в голосовую почту в других приложениях."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Просмотреть номера"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Импортировать"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Ошибка импорта"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Разблокировать номер"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Добавить номер"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Вызовы с этих номеров будут блокироваться, а голосовые сообщения – автоматически удаляться."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Вызовы с этих номеров будут блокироваться, но абоненты смогут оставлять вам голосовые сообщения."</string>
+    <string name="block_list" msgid="7760188925338078011">"Заблокированные номера"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> недействителен."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> уже заблокирован."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Блокировка вызовов отключена на 48 часов"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Блокировка звонков отключена из-за экстренного вызова"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Аккаунты для звонков"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Включить"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Задать разрешения"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Чтобы настроить быстрый набор, предоставьте приложению разрешение \"Контакты\"."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Чтобы открыть список вызовов, предоставьте приложению разрешение \"Телефон\"."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Чтобы открыть список контактов, предоставьте приложению разрешение \"Контакты\"."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Чтобы получить доступ к голосовой почте, предоставьте приложению разрешение \"Телефон\"."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Для поиска контактов включите разрешение \"Контакты\"."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Чтобы позвонить, предоставьте приложению разрешение \"Телефон\"."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"У приложения \"Телефон\" нет разрешения на изменение системных настроек."</string>
+</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
new file mode 100644
index 0000000..ac08990
--- /dev/null
+++ b/res/values-si-rLK/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"දුරකථනය"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"දුරකථනය"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"දුරකථන ඩයල්පෑඩය"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"දුරකථනය"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"ඇමතුම් ඉතිහාසය"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"වැරදි අංකය වාර්තා කරන්න"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"අංකය පිටපත් කරන්න"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"පිටපත් කිරීම පිටපත් කරන්න"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"අංකය අවහිර කරන්න"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> අවහිරයි"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"අංකය අවහිර නොකරන්න"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> අවහිර නැත"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"අස් කරන්න"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"මකන්න"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"ඇමතුමට පෙර අංකය සංස්කරණය කරන්න"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"ඇමතුම් ඉතිහාසය හිස් කරන්න"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"හඬ තැපෑල මකන්න"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"හඬ තැපෑල මකන ලදී"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"අස් කරන්න"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ඇමතුම් ඉතිහාසය හිස් කරන්නද?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"මෙය ඔබේ ඉතිහාසයෙන් සියලු ඇමතුම් මකනු ඇත"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ඇමතුම් ඉතිහාසය හිස් කරමින්…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"දුරකථනය"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"මඟ හැරුණු ඇමතුම"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"මග හැරුණ කාර්යාල ඇමතුම"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"මඟ හැරුණු ඇමතුම්"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"මඟ හැරුණු ඇමතුම් <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"ආපසු අමතන්න"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"පණිවිඩය"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one">හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g> </item>
+      <item quantity="other">හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g> </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ධාවනය කරන්න"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> වෙතින් නව හඬ තැපැලක්"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"හඬ තැපෑල වාදනය කිරීමට නොහැකි විය"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"හඬ තැපෑල ප්‍රවේශනය වෙමින්…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"හඬ තැපෑල ප්‍රවේශනය කිරීමට නොහැකි විය"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"හඬ තැපෑල සහිත ඇමතුම් පමණි"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"එන ඇමතුම් පමණි"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"පිටතට යන ඇමතුම් පමණි"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"මඟ හැරුණු ඇමතුම් පමණි"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"දෘශ්‍ය හඬ තැපෑල"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"අංකයකට ඇමතීමෙන් තොරව ඔබේ හඬ තැපෑල බලා සවන් දෙන්න. දත්ත ගාස්තු අදාළ විය හැකිය."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"සැකසීම්"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"හඬ තැපැල් යාවත්කාලීන ලබාගත නොහැකිය"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"නව හඬ තැපෑලක් පොරොත්තු වෙමින්. මේ දැන් ප්‍රවේශනය කිරීමට නොහැකිය."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"ඔබේ හඬ තැපෑල පිහිටුවන්න"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ශ්‍රව්‍ය ලබාගත නොහැකිය"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"ස්ථාපනය කරන්න"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"හඬ තැපැල් අමතන්න"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"අංකය තෝරන්න"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"අංකය තෝරන්න"</string>
+    <string name="make_primary" msgid="5829291915305113983">"මෙම තේරීම මතක තබාගන්න"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"සෙවීම"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"අමතන්න"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ඇමතීමට අංකය"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Playback ධාවනය කරන්න හෝ නවත්වන්න"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"ස්පීකර්ෆෝන් ක්‍රියා කරන්න හෝ නොකරන්න"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Playback ස්ථානය සොයාබලන්න"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Playback අනුපාතය අඩුවේ"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Playback අනුපාතය වැඩිවේ"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"ඇමතුම් ඉතිහාසය"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"තවත් විකල්ප"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ඩයල් පෑඩය"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"පිටතට යන ඒවා පමණක් පෙන්වන්න"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"එන ඒවා පමණක් පෙන්වන්න"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"මඟ හැරුණු ඒවා පමණක් පෙන්වන්න"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"හඬ තැපැල් පමණක් පෙන්වන්න"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"සියලු ඇමතුම් පෙන්වන්න"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"තත්පර 2 ක විරාමයක් එක් කරන්න"</string>
+    <string name="add_wait" msgid="3360818652790319634">"රැඳී සිටීම එක් කරන්න"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"සැකසීම්"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"නව සම්බන්ධතාවයක්"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"සියලුම සම්බන්ධතා"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"ඇමතුම් විස්තර"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"විස්තර ලබාගත නොහැකිය"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ස්පර්ශ නාද යතුරුපෑඩය භාවිතා කරන්න"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"පවතින ඇමතුමට නැවත යන්න"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"ඇමතුමක් එක් කරන්න"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"එන ඇමතුම"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"පිටතට යන ඇමතුම"</string>
+    <string name="type_missed" msgid="2720502601640509542">"මඟ හැරුණු ඇමතුම"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"පැමිණෙන වීඩියෝ ඇමතුම"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"පිටවන වීඩියෝ ඇමතුම"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"මගහැරුණු වීඩියෝ ඇමතුම"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"හඬ තැපෑල"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"ප්‍රතික්ෂේප කළ ඇමතුම"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"අවහිර කළ ඇමතුම"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"එන ඇමතුම්"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"හඬ තැපෑල ධාවනය කිරීම"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> සම්බන්ධතාවය බලන්න"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> අමතන්න"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> සඳහා ඇමතුම් විස්තර"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"ඇමතුම් <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"වීඩියෝ ඇමතුම."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> වෙත SMS යවන්න"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"අසා නොමැති හඬ තැපෑල"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"හඬ සෙවීම අරඹන්න"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> අමතන්න"</string>
+    <string name="unknown" msgid="740067747858270469">"නොදනී"</string>
+    <string name="voicemail" msgid="3851469869202611441">"හඬ තැපෑල"</string>
+    <string name="private_num" msgid="6374339738119166953">"පුද්ගලික අංකය"</string>
+    <string name="payphone" msgid="7726415831153618726">"පේෆෝනය"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"තත් <xliff:g id="SECONDS">%s</xliff:g>"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"මිනි <xliff:g id="MINUTES">%s</xliff:g> තත් <xliff:g id="SECONDS">%s</xliff:g>"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> දින <xliff:g id="TIME">%2$s</xliff:g>ට"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"මෙම අංකයට ඇමතිය නොහැකිය"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"හඬ තැපෑල සකස් කර ගැනීමට, මෙනු &gt; සැකසීම් වෙත යන්න."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"හඬ තැපෑල ඇමතීමට, මුලින්ම ගුවන්යානා ආකාරය වසා දමන්න."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"පූරණය වෙමින්..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM පතෙන් පූරණය කරමින්…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM පත් සම්බන්ධතා"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"සබඳතා යෙදුමක් ලබාගත නොහැකිය"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"හඬ සෙවුම ලබාගත නොහැකිය"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"දුරකථන යෙදුම අබල කර ඇති නිසා දුරකථන ඇමතුම ලබාගැනීම කළ නොහැක."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"මෙම උපාංගයෙහි ඒ සඳහා යෙදුමක් නැත"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"සම්බන්ධතා සෙවීම"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"අංකය එක් කරන්න හෝ සම්බන්ධතා සොයන්න"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"ඔබගේ ඇමතුම් ඉතිහාසය හිස්ය"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"ඇමතුමක් සිදු කරන්න"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"ඔබට මඟ හැරුණු ඇමතුම් නැත."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"ඔබේ හඬ තැපැල් එන ලිපි හිස්ය."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"ප්‍රියතමයන් පමණක් පෙන්වන්න"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"ඇමතුම් ඉතිහාසය"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"සියලු"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"මග හැරුණේය"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"හඬ තැපෑල"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> අවහිර කරන්නද?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"මෙම අංකය වෙතින් වන ඇමතුම් අවහිර කරනු ඇති අතර හඬ තැපැල් ස්වයංක්‍රියව මකනු ඇත."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"මෙම අංකය වෙතින් වන ඇමතුම් අවහිර කරනු ඇති නමුත්, අමතන්නාට තවම ඔබට හඬ තැපැල් තැබීමට හැකිය."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"අවහිරයි"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> අවහිර නොකරන්නද?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"මෙම අංකය ඔබව ඇමතීමෙන් තවදුරටත් අවහිර කර නැත."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"අවහිර නොකරන්න"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"වේග ඩයල් කිරීම"</string>
+    <string name="tab_history" msgid="2563144697322434940">"ඇමතුම් ඉතිහාසය"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"සම්බන්ධතා"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"හඬ තැපෑල"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"ප්‍රියතමයන්ගෙන් ඉවත් කරන්න"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"අස් කරන්න"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> අමතන්න"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"නව සම්බන්ධතාවයක් සාදන්න"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"සම්බන්ධතාවකට එක් කරන්න"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS යවන්න"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"වීඩියෝ ඇමතුමක් ලබාගන්න"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"අංකය අවහිර කරන්න"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"නව මඟ හැරුණු ඇමතුම් <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"ඔබගේ වේග ඩයල් එකේ තවමත් කවුරුවත් නැහැ"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"ප්‍රියතම ලෙස එක් කරන්න"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"ඔබ තවමත් සම්බන්ධතා නැහැ"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"සම්බන්ධතාවයක් එකතු කරන්න"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"සියලු අංක බැලීමට අනුරුව ස්පර්ශ කරන්න නැතහොත් &amp; යළි ඇණවුම් කිරීමට අල්ලාගෙන සිටින්න"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"ඉවත් කරන්න"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"වීඩියෝ ඇමතුම"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"පණිවිඩයක් යවන්න"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"ඇමතුම් විස්තර"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> අමතන්න"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> වෙතින් ඇමතුමක් මගහැරුණා."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> වෙතින් ඇමතුමකට පිළිතුරු දුන්නා."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> වෙතින් නොකියවූ හඬ තැපෑල."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> වෙතින් හඬ තැපෑල."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> වෙත ඇමතුමක්."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> හි"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ඇමතුම"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> අමතන්න"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>. වීඩියෝ ඇමතුම"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> වෙතින් හඬ තැපෑලට සවන් දෙන්න"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> වෙතින් වන හඬ තැපෑල ධාවනය කරන්න"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> වෙතින් වන හඬ තැපෑල විරාම කරන්න"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> වෙතින් වන හඬ තැපෑල මකන්න"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one">නව හඬ තැපැල් <xliff:g id="COUNT_1">%d</xliff:g></item>
+      <item quantity="other">නව හඬ තැපැල් <xliff:g id="COUNT_1">%d</xliff:g></item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> සඳහා සම්බන්ධතාවක් සාදන්න"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"පවතින සම්බන්ධතාව වෙත <xliff:g id="NAMEORNUMBER">^1</xliff:g> එක් කරන්න"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> සඳහා ඇමතුම් විස්තර"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"ඇමතුම් ඉතිහාසයෙන් මකන ලදී"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"අද"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ඊයේ"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"වඩා පරණ"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"ඇමතුම් ලැයිස්තුව"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"ශබ්දවාහිනී සක්‍රිය කරන්න."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"ශබ්දවාහිනී අක්‍රිය කරන්න."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"වේගයෙන් ධාවනය කරන්න."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"හෙමින් ධාවනය කරන්න."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"නැවත ධාවනයෙදී ආරම්භ කරන්න හෝ විරාමය කරන්න."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"විකල්ප පෙන්වන්න"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ශබ්ද සහ කම්පන"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ප්‍රවේශ්‍යතාවය"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"දුරකථන රිගින්ටෝනය"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ඇමතුම් සඳහා කම්පනයද කරන්න"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ඩයල්පෑඩ ස්පර්ශක හඬ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ඇමතුම් පෑඩයේ නාද දිග"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"සාමාන්‍ය"</item>
+    <item msgid="6177579030803486015">"දීර්ඝ"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ක්ෂණික ප්‍රතිචාර"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"ඇමතුම්"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"ඇමතුම් අවහිර කිරීම"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"ඇමතුම් අවහිර කිරීම තාවකාලිකව අක්‍රියයි"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"ඔබ පසුගිය පැය 48 ඇතුළත මෙම දුරකථනයෙන් හදිසි අවස්ථා සේවා ඇමතූ බැව්න් ඇමතුම් අවහිර කිරීම අබල කර ඇත. පැය 48ක කාල සීමාව ඉකුත් වූ විට එය ස්වයංක්‍රියව යළි සබල කෙරේ."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"අංක ආයාත කරන්න"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"ඔබ පෙරදී සමහර අමතන්නන් වෙනත් යෙදුම් හරහා ස්වයංක්‍රියව හඬ තැපෑල වෙත යැවීමට ලකුණු කරන ලදී."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"අංක බලන්න"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"ආයාත කරන්න"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"අයාත කිරීම අසාර්ථක විය"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"අංකය අවහිර නොකරන්න"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"අංකයක් එක් කරන්න"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"මෙම අංක වෙතින් වන ඇමතුම් අවහිර කරනු ඇති අතර හඬ තැපැල් ස්වයංක්‍රියව මකනු ඇත."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"මෙම අංක වෙතින් වන ඇමතුම් අවහිර කරනු ඇති නමුත්, ඔවුන්ට තවම ඔබට හඬ තැපැල් තැබීමට හැකිය."</string>
+    <string name="block_list" msgid="7760188925338078011">"අවහිර කළ අංක"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> වලංගු නැත."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> දැනටමත් අවහිර කර ඇත."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"පැය 48ක් සඳහා ඇමතුම් අවහිර කිරීම අබල කරන ලදී"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"හදිසි ඇමතුමක් සිදු කළ නිසා අබල කරන ලදී."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"ගිණුම් ඇමතීම"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ක්‍රියාත්මක කරන්න"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"අවසර සකසන්න"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"වේග ඩයල් කිරීම සබල කිරීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"ඔබේ ඇමතුම් ලොගය බැලීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"ඔබේ සම්බන්ධතා බැලීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"ඔබේ හඬ තැපෑල වෙත ප්‍රවේශ වීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"ඔබේ සම්බන්ධතා සෙවීමට, සම්බන්ධතා අවසර ක්‍රියාත්මක කරන්න."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"ඇමතුමක් ලබා ගැනීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"දුරකථන යෙදුමට පද්ධති සැකසීම් වෙත ලිවීමට අවසර නැත."</string>
+</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
new file mode 100644
index 0000000..ede96f1
--- /dev/null
+++ b/res/values-sk/strings.xml
@@ -0,0 +1,259 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefón"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefón"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Číselník telefónu"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefón"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"História hovorov"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Nahlásiť nesprávne číslo"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopírovať číslo"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopírovať prepis"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokovať číslo"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> – blokované"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Zrušiť blokovanie čísla"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> – odblokované"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"SPÄŤ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Odstrániť"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Pred volaním upraviť číslo"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Vymazať históriu hovorov?"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Odstrániť hlasovú správu"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Hlas. schránka odstránená"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"SPÄŤ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Chcete vymazať históriu hovorov?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Týmto z histórie odstránite všetky hovory."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Vymazáva sa história hovorov..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefón"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Zmeškaný hovor"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Zmeškaný pracovný hovor"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Zmeškané hovory"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Zmeškané hovory: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Zavolať späť"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Správa"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> odkazy v hlasovej schránke </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> odkazu v hlasovej schránke </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> odkazov v hlasovej schránke </item>
+      <item quantity="one">Odkaz v hlasovej schránke</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Prehrať"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nová hlasová správa – <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Hlasovú schránku sa nepodarilo prehrať"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Načítava sa hlasová schránka…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Hlasovú schránku sa nepodarilo načítať"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Iba volania do hlasovej schránky"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Iba prichádzajúce hovory"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Iba odchádzajúce hovory"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Iba zmeškané hovory"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vizuálna hlasová schránka"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Zobrazte a vypočujte si svoju hlasovú schránku bez toho, aby ste museli vytáčať číslo. Môžu vám byť účtované poplatky za prenos dát."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Nastavenia"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Aktualizácie hlasovej schránky nie sú k dispozícii"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Nevypočuté hlasové schránky. Momentálne ich nemožno načítať."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Nastavte si hlasovú schránku"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Zvuk nie je k dispozícii"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Nastavenie"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Volať hlas. schránku"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Zvoľte číslo"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Zvoľte číslo"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Zapamätať si túto voľbu"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"hľadať"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"vytáčanie"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"číslo, ktoré chcete vytočiť"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Spustiť alebo zastaviť prehrávanie"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Zapnúť alebo vypnúť reproduktor"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Hľadať pozíciu prehrávania"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Znížiť počet snímok za sekundu"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Zvýšiť počet snímok za sekundu"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"História hovorov"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Ďalšie možnosti"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"číselná klávesnica"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Zobraziť len odchádzajúce"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Zobraziť len prichádzajúce"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Zobraziť len zmeškané"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Zobraziť len hlasové správy"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Zobraziť všetky hovory"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Pridať dvojsekundovú pauzu"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Pridať čakanie"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Nastavenia"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nový kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Všetky kontakty"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Podrobnosti hovoru"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Podrobnosti nie sú k dispozícii"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Použiť dotykovú tónovú klávesnicu"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Návrat k prebiehajúcemu hovoru"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Pridať hovor"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Prichádzajúci hovor"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Odchádzajúce volanie"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Zmeškaný hovor"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Prichádzajúci videohovor"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Odchádzajúci videohovor"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Zmeškaný videohovor"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Hlasová schránka"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Odmietnutý hovor"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blokovaný hovor"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Prichádzajúce hovory"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Prehrať hlasovú správu"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Zobraziť kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Volať kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Podrobnosti kontaktu pre <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"Počet volaní: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videohovor"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Poslať SMS kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nevypočutá hlasová správa"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Spustenie hlasového vyhľadávania"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Volať <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Neznáme"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Hlasová schránka"</string>
+    <string name="private_num" msgid="6374339738119166953">"Súkromné číslo"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefónny automat"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> o <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Na toto číslo nie je možné volať"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ak chcete nastaviť hlasovú schránku, prejdite na položku Menu &gt; Nastavenia."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Ak chcete volať hlasovú schránku, najprv vypnite režim v lietadle."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Načítava sa…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Prebieha načítavanie z SIM karty..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontakty na SIM karte"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nie je k dispozícii žiadna aplikácia na kontakty"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Hlasové vyhľadávanie nie je k dispozícii"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Nie je možné volať, pretože aplikácia Telefón bola deaktivovaná."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Na tomto zariadení nie je aplikácia na vykonanie danej akcie"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Hľadať kontakty"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Pridajte číslo / vyhľadajte v kontaktoch"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"História hovorov je prázdna"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Zavolať"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nemáte žiadne zmeškané hovory."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Hlasová schránka je prázdna."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Zobraziť iba obľúbené"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"História hovorov"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Všetky"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Zmeškané"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Schránka"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Blokovať číslo <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Hovory z tohto čísla budú blokované a hlasové správy budú automaticky odstraňované."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Hovory z tohto čísla budú zablokované, ale volajúci stále môže zanechať hlasové správy."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKOVAŤ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Odblokovať číslo <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Prichádzajúce hovory z tohto čísla už nebudú blokované."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ODBLOKOVAŤ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Rýchla voľba"</string>
+    <string name="tab_history" msgid="2563144697322434940">"História hovorov"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontakty"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Hlasová schránka"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Odstránené z obľúbených"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Späť"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Volať <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Vytvoriť nový kontakt"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Pridať ku kontaktu"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Odoslať SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uskutočniť videohovor"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokovať číslo"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Počet nových zmeškaných hovorov: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"V rýchlom vytáčaní zatiaľ nemáte žiadny kontakt"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Pridať obľúbený kontakt"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Zatiaľ nemáte žiadne kontakty"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Pridať kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Klepnutím na obrázok si môžete zobraziť všetky čísla. Ak naň klepnete a podržíte ho, môžete zmeniť ich poradie."</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Odstrániť"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videohovor"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Odoslať správu"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Podrobnosti hovoru"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Zavolať kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Zmeškaný hovor – kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Prijatý hovor – kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Neprečítaná správa v hlasovej schránke od <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Správa v hlasovej schránke od <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Volanie – kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"v rámci účtu <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Volať"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Zavolať kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Spustiť videohovor s kontaktom <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Vypočuť si správu v hlasovej schránke od používateľa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Prehrať hlasovú schránku kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pozastaviť hlasovú schránku kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Odstrániť hlasovú schránku kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> nové odkazy v hlasovej schránke</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> nového odkazu v hlasovej schránke</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nových odkazov v hlasovej schránke</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nový odkaz v hlasovej schránke</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Vytvoriť kontakt pre <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Pridať údaj <xliff:g id="NAMEORNUMBER">^1</xliff:g> ku kontaktu"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Podrobnosti hovoru pre kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Odstránené z histórie hovorov"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Dnes"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Včera"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Staršie"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Zoznam hovorov"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Zapnúť reproduktor"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Vypnúť reproduktor"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Prehrať rýchlejšie"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Prehrať pomalšie"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Spustiť alebo pozastaviť prehrávanie"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Možnosti zobrazenia"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvuky a vibrovanie"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Dostupnosť"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Tón zvonenia telefónu"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Pri hovoroch aj vibrovať"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tóny číselnej klávesnice"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dĺžka zvukov číselnej klávesnice"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normálne"</item>
+    <item msgid="6177579030803486015">"Dlhé"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Rýchle odpovede"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Hovory"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blokovanie hovorov"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blokovanie hovorov je dočasne vypnuté"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Pretože ste z tohto telefónu počas posledných 48 hodín volali na tiesňovú linku, blokovanie hovorov bolo vypnuté. Po uplynutí 48 hodín sa automaticky znova zapne."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importovať čísla"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"V minulosti ste niektorých volajúcich označili, aby boli automaticky prepojení do hlasovej schránky prostredníctvom ďalších aplikácií."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Zobraziť čísla"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importovať"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Import zlyhal"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Zrušiť blokovanie čísla"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Pridať číslo"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Hovory z týchto čísel budú blokované a hlasové správy budú automaticky odstraňované."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Hovory z týchto čísel budú blokované, ale volajúci vám budú stále môcť zanechať hlasové správy."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blokované čísla"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Číslo <xliff:g id="NUMBER">%1$s</xliff:g> je neplatné."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Číslo <xliff:g id="NUMBER">%1$s</xliff:g> je už blokované."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Blokovanie hovorov je deaktivované na 48 hodín"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Deaktivované, pretože ste uskutočnili tiesňové volanie"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Telefónne účty"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Zapnúť"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Nastaviť povolenia"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Ak chcete aktivovať rýchle vytáčanie, zapnite povolenie Kontakty."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Ak si chcete zobraziť denník hovorov, zapnite povolenie Telefón."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Ak si chcete zobraziť kontakty, zapnite povolenie Kontakty."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Ak chcete používať hlasovú schránku, zapnite povolenie Telefón."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Ak chcete hľadať kontakty, zapnite povolenie Kontakty."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Ak chcete volať, zapnite povolenie Telefón."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefónna aplikácia nemá povolenie na zápis do nastavení systému."</string>
+</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
new file mode 100644
index 0000000..b0d1dae
--- /dev/null
+++ b/res/values-sl/strings.xml
@@ -0,0 +1,259 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Številčnica telefona"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Zgodovina klicev"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Prijavi netočno številko"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopiranje številke"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopiraj prepis"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blokiranje številke"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Številka <xliff:g id="NUMBER">%1$s</xliff:g> je blokirana"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Odblokiranje telefonske številke"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Številka <xliff:g id="NUMBER">%1$s</xliff:g> je odblokirana"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"RAZVELJAVI"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Izbris"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Urejanje številke pred klicem"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Izbriši zgodovino klicev"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Brisanje sporočil iz odzivnika"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Spor. v odziv. izbr."</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"RAZVELJAVI"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Želite izbrisati zgodovino klicev?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"S tem boste iz zgodovine izbrisali vse klice"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Izbris zgodovine klicev …"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefoniranje"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Neodgovorjeni klic"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Neodgovorjen delovni klic"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Neodgovorjeni klici"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Št. neodgovorjenih klicev: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Povratni klic"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"SMS"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> sporočilo v odzivniku </item>
+      <item quantity="two"> <xliff:g id="COUNT">%1$d</xliff:g> sporočili v odzivniku </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> sporočila v odzivniku </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> sporočil v odzivniku </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Predvajaj"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova glasovna pošta od <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Sporočil v odzivniku ni mogoče predv."</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Nalaganje sporočil v odzivniku …"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Sporočil v odzivniku ni mogoče naložiti"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Samo klici z odzivnikom"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Samo dohodni klici"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Samo odhodni klici"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Samo neodgovorjeni klici"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vizualno sporočilo v odzivniku"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Ogledujte si in poslušajte sporočila v odzivniku, ne da bi vam bilo treba klicati številko. Morda boste morali plačati stroške prenosa podatkov."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Nastavitve"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Obvestila odzivnika niso na voljo"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"V odzivniku čaka novo sporočilo. Trenutno ga ni mogoče naložiti."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Nastavite odzivnik"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Zvok ni na voljo"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Nastavite odzivnik"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Klicanje glasovne pošte"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Izberite številko"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Izberite številko"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Zapomni si to izbiro"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"iskanje"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"pokliči"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"številka, ki bo poklicana"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Začetek ali konec predvajanja"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Vklop ali izklop zvočnika"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Iskanje položaja predvajanja"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Zmanjšanje hitrosti predvajanja"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Povečanje hitrosti predvajanja"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Zgodovina klicev"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Več možnosti"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"številčnica"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Pokaži samo odhodne"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Pokaži samo dohodne"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Pokaži samo neodgovorjene"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Pokaži samo spor. glasovne pošte"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Pokaži vse klice"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj 2 sekundi premora"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Dodaj premor"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Nastavitve"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Nov stik"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Vsi stiki"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Podrobnosti klica"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Podrobnosti niso na voljo"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Uporabi številčnico za tonsko klicanje"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Nazaj na klic, ki poteka"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Dodaj klic"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Dohodni klic"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Odhodni klic"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Neodgovorjeni klic"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Dohodni videoklic"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Odhodni videoklic"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Zamudili ste videoklic"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Odzivnik"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Zavrnjen klic"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blokiran klic"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Dohodni klici"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Predvajanje sporočil glasovne pošte"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Ogled stika <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Klicanje osebe <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Podrobnosti stika za <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"Št. klicev: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videoklic."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Pošlji SMS prejemniku <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Neodprta glasovna pošta"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Začni glasovno iskanje"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Neznano"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Glasovna pošta"</string>
+    <string name="private_num" msgid="6374339738119166953">"Zasebna številka"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefonska govorilnica"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> ob <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Te številke ni mogoče klicati"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Če želite nastaviti odzivnik, odprite Meni &gt; Nastavitve."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Če želite poklicati odzivnik, najprej izklopite način za letalo."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Nalaganje …"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Nalaganje s kartice SIM ..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Stiki na kartici SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Ni aplikacije za stike"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Glasovno iskanje ni na voljo"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Ni mogoče opraviti telefonskega klica, ker je aplikacija Telefon onemogočena."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"V tej napravi ni aplikacije za to"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Iskanje stikov"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Dodajte št. ali iščite med st."</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Zgodovina klicev je prazna"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Klicanje"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nimate neodgovorjenih klicev."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Vaš nabiralnik s sporočili v odzivniku je prazen."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Pokaži samo priljubljene"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Zgodovina klicev"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Vsi"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Neodgovorjeni"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Odzivnik"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Želite blokirati številko <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Klici s te številke bodo blokirani in sporočila v odzivniku bodo samodejno izbrisana."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Klici s te številke bodo blokirani, klicatelj pa bo morda še vedno lahko pustil sporočila v odzivniku."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKIRAJ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Želite odblokirati številko <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Ta številka ne bo več blokirana in vas bo z nje mogoče klicati."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ODBLOKIRAJ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Hitro izbiranje"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Zgodovina klicev"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Stiki"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Odzivnik"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Odstranjeno iz priljubljenih"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Razveljavi"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Ustvari nov stik"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Dodaj stiku"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Pošlji SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Opravi videoklic"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blokiraj številko"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Št. novih zgrešenih klicev: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Na seznamu za hitro klicanje nimate še nikogar"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Dodajanje priljubljenega"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Nimate še stikov"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Dodajanje stika"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Dotaknite se slike, če želite videti vse številke, ali pa se je dotaknite in pridržite, če želite spremeniti vrstni red."</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Odstrani"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videoklic"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Pošljite sporočilo"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Podrobnosti klica"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Kliči osebo/številko <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Neodgovorjen klic od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Odgovorjen klic od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Neprebrano sporočilo v odzivniku za račun <xliff:g id="PHONEACCOUNT">^4</xliff:g> ob <xliff:g id="TIMEOFCALL">^3</xliff:g> od: <xliff:g id="NAMEORNUMBER">^1</xliff:g> – <xliff:g id="TYPEORLOCATION">^2</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Sporočilo v odzivniku za račun <xliff:g id="PHONEACCOUNT">^4</xliff:g> ob <xliff:g id="TIMEOFCALL">^3</xliff:g> od: <xliff:g id="NAMEORNUMBER">^1</xliff:g> – <xliff:g id="TYPEORLOCATION">^2</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Klic za: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"z računom: <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Klic"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Klicanje: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Videoklic: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Poslušajte sporočilo v odzivniku od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Predvajanje sporočil v odzivniku od osebe/številke <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Zaustavitev prejemanja sporočil v odzivnik od osebe/številke <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Brisanje sporočil iz odzivnika od osebe/številke <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> sporočilo v odzivniku</item>
+      <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> sporočili v odzivniku</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> sporočila v odzivniku</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> sporočil v odzivniku</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Ustvarjanja stika za: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Dodajanje tega obstoječemu stiku: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Podrobnosti klica za: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Izbrisano iz zgodovine klicev"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Danes"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Včeraj"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Starejši"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Seznam klicev"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Vklopi zvočnik."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Izklopi zvočnik."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Predvajaj hitreje."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Predvajaj počasneje."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Začni ali zaustavi predvajanje."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Možnosti prikaza"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvoki in vibriranje"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Funkcije za ljudi s posebnimi potrebami"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Ton zvonjenja telefona"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibriranje tudi za klice"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Toni tipkovnice"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dolžina tonov tipk"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Običajno"</item>
+    <item msgid="6177579030803486015">"Dolgo"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hitri odgovori"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Klici"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Blokiranje klicev"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blokiranje klicev je začasno izklopljeno"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Blokiranje klicev je onemogočeno, ker ste se v zadnjih 48 urah s tem telefonom obrnili na nujno pomoč. Ko 48-urno obdobje poteče, bo blokiranje klicev samodejno znova omogočeno."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Uvoz številk"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Označili ste, naj nekatere klicatelje druge aplikacije samodejno preusmerijo v odzivnik."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Ogled številk"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Uvozi"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Uvoz ni uspel"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Odblokiranje telefonske številke"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Dodaj telefonsko številko"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Klici s teh številk bodo blokirani in sporočila v odzivniku bodo samodejno izbrisana."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Klici s teh številk bodo blokirani, klicatelji pa bodo morda še vedno lahko pustil sporočila v odzivniku."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blokirane številke"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Telefonska številka <xliff:g id="NUMBER">%1$s</xliff:g> je neveljavna."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Telefonska številka <xliff:g id="NUMBER">%1$s</xliff:g> je že blokirana."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Blokiranje klicev je onemogočeno za 48 ur"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Onemogočeno zaradi opravljenega klica v sili"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Računi za klicanje"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Vklop"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Nastavi dovoljenja"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Če želite omogočiti hitro klicanje, vklopite dovoljenje za stike."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Če si želite ogledati dnevnik klicev, vklopite dovoljenje za telefon."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Če si želite ogledati stike, vklopite dovoljenje za stike."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Če želite dostopati do sporočil v odzivniku, vklopite dovoljenje za telefon."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Če želite iskati po stikih, vklopite dovoljenje za stike."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Če želite klicati, vklopite dovoljenje za telefon."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacija Telefon nima dovoljenja za pisanje v sistemske nastavitve."</string>
+</resources>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..32e0489
--- /dev/null
+++ b/res/values-sq-rAL/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefoni"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefoni"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Blloku i formimit të numrave i telefonit"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefoni"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Historiku i telefonatave"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Raporto numrin e pasaktë"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopjo numrin"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopjo transkriptimin"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blloko numrin"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> u bllokua"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Zhblloko numrin"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> u zhbllokua"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ZHBËJ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Fshi"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Redakto numrin para telefonatës"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Pastro historikun e telefonatave"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Fshije postën zanore"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"U zbulua posta zanore"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ZHBËJ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Të pastrohet historiku i telefonatave?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Kjo do të fshijë të gjitha telefonatat nga historiku yt"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Po pastron historikun e telefonatave…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefoni"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Telefonatë e humbur"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Telefonatë pune e humbur"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Telefonata të humbura"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> telefonata të humbura"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Ri-telefono"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mesazh"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> posta zanore </item>
+      <item quantity="one"> postë zanore</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Luaj"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Postë e re zanore nga <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Posta zanore nuk mund të luhej"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Po ngarkon postën zanore…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Posta zanore nuk mund të ngarkohej"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Vetëm telefonatat me mesazhe zanore"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Vetëm telefonatat hyrëse"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Vetëm telefonatat dalëse"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Vetëm telefonatat e humbura"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Posta zanore vizuale"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Shiko dhe dëgjo postën zanore, pa pasur nevojë të telefonosh një numër. mund të zbatohen tarifa për të dhënat."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Cilësimet"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Përditësimet e postës zanore nuk mundësohen"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Posta të reja zanore janë në pritje. Nuk mund të ngarkohen tani."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Konfiguro postën zanore"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audioja nuk mundësohet"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfiguro"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Telefono postën zanore"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Zgjidh një numër"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Zgjidh një numër"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Kujtoje këtë zgjedhje"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"kërko"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"formo numrin"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"numri për t\'u formuar"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Luaj ose ndalo luajtjen"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Aktivizo ose çaktivizo altoparlantin"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Kërko pozicionin e luajtjes"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Ule shpejtësinë e luajtjes"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Rrite shpejtësinë e luajtjes"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historiku i telefonatave"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Opsione të tjera"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"blloku i tasteve"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Shfaq vetëm dalëset"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Shfaq vetëm hyrëset"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Shfaq vetëm të humburat"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Shfaq vetëm postën zanore"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Shfaqi të gjitha telefonatat"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Shto një ndërprerje 2-sekondëshe"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Shto një pritje"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Cilësimet"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Kontakt i ri"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Të gjitha kontaktet"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detajet e telefonatës"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detajet nuk mundësohen"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Përdor bllokun e tasteve"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Kthehu te telefonata"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Shto një telefonatë"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Telefonatë hyrëse"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Telefonatë dalëse"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Telefonatë e humbur"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Telefonatë hyrëse me video"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Telefonatë dalëse me video"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Telefonatë e humbur me video"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Posta zanore"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Telefonatë e refuzuar"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Telefonatë e bllokuar"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Telefonatat hyrëse"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Luaj postën zanore"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Shiko kontaktin <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Telefono <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Detajet e kontaktit për <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> telefonata."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Telefonatë me video."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Dërgo SMS te <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Postë zanore e padëgjuar"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Nis kërkimin me zë"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Telefono <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Të panjohur"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Posta zanore"</string>
+    <string name="private_num" msgid="6374339738119166953">"Numër privat"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefon me pagesë"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sekonda"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. e <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> në <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Ky numër nuk mund të telefonohet"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Për të konfiguruar postën zanore, shko te \"Menyja\" &gt; \"Cilësimet\"."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Për të shtuar një postë zanore, në fillim çaktivizo modalitetin \"në aeroplan\"."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Po ngarkon..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Po ngarkon nga karta SIM…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontaktet e kartës SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nuk mund të përdoret asnjë aplikacion për kontaktet"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Kërkimi me zë nuk mundësohet"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Telefonata nuk mund të bëhet sepse aplikacioni \"Telefoni\" është i çaktivizuar."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Nuk ka aplikacion për atë në këtë pajisje"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Kërko kontakte"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Shto një numër ose kërko te kontaktet"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Historiku i telefonatave është bosh"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Bëj një telefonatë"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Nuk ke thirrje të humbura."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Kutia hyrëse e postës tënde zanore është bosh."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Shfaq vetëm të preferuarat"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Historiku i telefonatave"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Të gjitha"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Të humbura"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Posta zanore"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Blloko <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Telefonatat nga ky numër do të bllokohen dhe mesazhet zanore do të fshihen automatikisht."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Telefonatat nga ky numër do të bllokohen, por telefonuesi mund të jetë ende në gjendje të lërë mesazhe zanore."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLLOKO"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Zhblloko <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Ky numër nuk do të bllokohet më për telefonatat drejt teje."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ZHBLLOKO"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Telefonatë e shpejtë"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Historiku i telefonatave"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktet"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Posta zanore"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"U hoq nga të preferuarat"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Zhbëj"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefono <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Krijo një kontakt të ri"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Shto te një kontakt"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Dërgo SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Bëj një telefonatë me video"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blloko numrin"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> telefonata të reja të humbura"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Askush nuk është ende në thirrjen tënde të shpejtuar"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Shto një të preferuar"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Nuk ke ende kontakte"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Shto një kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Prek imazhin për të parë të gjithë numrat ose mbaje të shtypur për ta pozicionuar përsëri"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Hiq"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Telefonatë me video"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Dërgo një mesazh"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Detajet e telefonatës"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Telefono <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Telefonatë e humbur nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Telefonatë e përgjigjur nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Postë zanore e palexuar nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Postë zanore nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Telefonatë për <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"në <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telefono"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Telefono <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Telefono me video <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Dëgjo postën zanore nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Luaj postën zanore nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Ndërprit postën zanore nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Fshi postën zanore nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> posta të reja zanore</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> postë e re zanore</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Krijo një kontakt për <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Shtoje <xliff:g id="NAMEORNUMBER">^1</xliff:g> te një kontakt ekzistues"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detajet e telefonatës për <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"U fshi nga historiku i telefonatave"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Sot"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Dje"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Më të vjetra"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista e telefonatave"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Aktivizo altoparlantin."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Çaktivizo altoparlantin."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Luaj më shpejt."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Luaj më ngadalë."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Nis ose ndërprit luajtjen."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opsionet e paraqitjes"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Tingujt dhe dridhjet"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Qasshmëria"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Zilja e telefonit"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Edhe dridhje për telefonatat"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tingujt e bllokut të tasteve"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Gjatësia e tonit të bllokut të formimit të numrave"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"I gjatë"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Përgjigjet e shpejta"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Telefonatat"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Bllokimi i telefonatave"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Bllokimi i telefonatave është përkohësisht joaktiv"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Bllokimi i telefonatave është çaktivizuar sepse kontaktove me shërbimet e urgjencës nga ky telefon brenda 48 orëve të fundit. Ai do të riaktivizohet automatikisht pas skadimit të periudhës prej 48 orë."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importo numrat"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Disa telefonues i ke shënuar më parë që të dërgohen automatikisht drejt postës zanore përmes aplikacioneve të tjera."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Shiko numrat"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importo"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Importimi dështoi"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Zhblloko numrin"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Shto një numër"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Telefonatat nga këta numra do të bllokohen dhe mesazhet zanore do të fshihen automatikisht."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Telefonatat nga këta numra do të bllokohen, por mund të jenë ende në gjendje të lënë mesazhe zanore."</string>
+    <string name="block_list" msgid="7760188925338078011">"Numrat e bllokuar"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> është i pavlefshëm."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> është i bllokuar tashmë."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Bllokimi i thirrjeve është çaktivizuar për 48 orë"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Është e çaktivizuar për shkak se është kryer një telefonatë urgjence."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Llogaritë e telefonatave"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Aktivizo"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Cakto lejet"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Për të aktivizuar thirrjen e shpejtuar, aktivizo lejen e Kontakteve."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Për të parë evidencën e telefonatave, aktivizo lejen e Telefonit."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Për të parë kontaktet, aktivizo lejen e Kontakteve."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Për të pasur qasje në postën zanore, aktivizo lejen e Telefonit."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Për të kërkuar kontaktet, aktivizo lejet e Kontakteve"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Për të kryer një telefonatë, aktivizo lejen e Telefonit."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Aplikacionet e telefonit nuk kanë leje të shkruajnë në cilësimet e sistemit."</string>
+</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
new file mode 100644
index 0000000..32bacd8
--- /dev/null
+++ b/res/values-sr/strings.xml
@@ -0,0 +1,257 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Телефон"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Нумеричка тастатура телефона"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Историја позива"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Пријави нетачан број"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Копирај број"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Копирај транскрипцију"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Блокирај број"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> је блокиран"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Деблокирај број"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> је деблокиран"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ОПОЗОВИ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Избриши"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Измени број пре позива"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Обриши историју позива"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Избриши говорну поруку"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Гов. пошта је избрисана"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ОПОЗОВИ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Желите да обришете историју позива?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ово ће избрисати све позиве из историје"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Брише се историја позива…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Телефон"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Пропуштен позив"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Пропуштен позив за Work"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Пропуштени позиви"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Број пропуштених позива: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Узврати позив"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Пошаљи SMS"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> говорна порука </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> говорне поруке </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> говорних порука </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Пусти"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова говорна порука од <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Пуштање говорне поште није успело"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Говорна пошта се учитава…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Учитавање говорне поште није успело"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Само позиви са говорном поштом"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Само долазни позиви"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Само одлазни позиви"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Само пропуштени позиви"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Визуелна говорна пошта"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Прегледајте и слушајте говорну пошту без позивања броја. Можда ће бити наплаћени трошкови за пренос података."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Подешавања"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Ажурирања говорне поште нису доступна"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Имате нову говорну пошту. Тренутно не може да се учита."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Подесите говорну пошту"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Аудио није доступан"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Подеси"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Зови говорну пошту"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Избор броја"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Избор броја"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Запамти овај избор"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"претражи"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"бирање"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"број за бирање"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Покретање или заустављање репродукције"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Укључивање или искључивање спикерфона"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Тражење позиције у репродукцији"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Смањивање брзине репродукције"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Повећавање брзине репродукције"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Историја позива"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Још опција"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"нумеричка тастатура"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Прикажи само одлазне"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Прикажи само долазне"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Прикажи само пропуштене"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Прикажи само говорне поруке"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Прикажи све позиве"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Додај паузу од 2 секунде"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Додај чекање"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Подешавања"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Нови контакт"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Сви контакти"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Детаљи позива"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Детаљи нису доступни"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Употребите бројчаник за тонско бирање"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Врати се на позив који је у току"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Додај позив"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Долазни позив"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Одлазни позив"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Пропуштен позив"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Долазни видео позив"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Одлазни видео позив"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Пропуштен видео позив"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Говорна пошта"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Одбијен позив"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Блокиран позив"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Долазни позиви"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Пуштање говорне поште"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Прикажи контакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Позови корисника <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Детаљи о контакту за <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> позива."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Видео позив."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Слање SMS-а за <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непреслушана говорна пошта"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Покретање гласовне претраге"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Позови <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Непознато"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Говорна пошта"</string>
+    <string name="private_num" msgid="6374339738119166953">"Приватан број"</string>
+    <string name="payphone" msgid="7726415831153618726">"Телефонска говорница"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> у <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Није могуће позвати овај број"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Да бисте подесили говорну пошту, идите у Мени &gt; Подешавања."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Да бисте позвали говорну пошту, прво искључите режим авионa."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Учитава се…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Учитава се са SIM картице…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Контакти на SIM картици"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Нема доступне апликације за контакте"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Гласовна претрага није доступна"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Није могуће упутити телефонски позив јер је апликација Телефон онемогућена."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"На овом уређају нема апликација за то"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Претражите контакте"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Додајте број или претражите контакте"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Историја позива је празна"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Позови"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Немате ниједан пропуштен позив."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Пријемно сандуче говорне поште је празно."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Прикажи само омиљене"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Историја позива"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Сви"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Пропуштени"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Говорна пошта"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Желите ли да блокирате <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Позиви са овог броја ће бити блокирани и поруке говорне поште ће се аутоматски брисати."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Позиви са овог броја ће бити блокирани, али позивалац и даље може да вам оставља поруке говорне поште."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"БЛОКИРАЈ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Желите ли да деблокирате <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Деблокираћемо овај број и моћи ће да вам упућује позиве."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ДЕБЛОКИРАЈ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Брзо бирање"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Историја позива"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Контакти"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Говорна пошта"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Уклоњено је из омиљених"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Опозови"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Позови <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Направи нови контакт"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Додај у контакт"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Пошаљи SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Упути видео позив"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Блокирај број"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Нових пропуштених позива: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Немате ниједан контакт на брзом бирању"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Додај омиљен контакт"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Још увек немате ниједан контакт"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Додај контакт"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Додирните слику да бисте видели све бројеве или додирните и задржите да бисте променили распоред"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Уклони"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видео позив"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Пошаљи поруку"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Детаљи позива"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Позови <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропуштени позив: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Примљени позив: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Непрочитана говорна порука од <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Говорна порука од <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Позвали сте: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"на налогу <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Позови"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Позови <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Упутите видео позив контакту <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Пусти говорну пошту од <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Репродукуј говорну пошту контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Паузирај говорну пошту контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Избриши говорну пошту контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> нова порука говорне поште</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> нове поруке говорне поште</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> нових порука говорне поште</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Направите контакт за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Додајте <xliff:g id="NAMEORNUMBER">^1</xliff:g> постојећем контакту"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Детаљи позива за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Избрисано из историје позива"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Данас"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Јуче"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Старији"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Листа позива"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Укључите звучник."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Искључите звучник."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Бржа репродукција."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Спорија репродукција."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Започните или паузирајте репродукцију."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Опције приказа"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуци и вибрација"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Приступачност"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Звук звона телефона"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибрирај и за позиве"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звуци нумеричке тастатуре"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Трајање тонова нумеричке тастатуре"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Нормално"</item>
+    <item msgid="6177579030803486015">"Дугачко"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Брзи одговори"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Позиви"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Блокирање позива"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Блокирање позива је привремено искључено"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Блокирање позива је онемогућено зато што сте контактирали службе за помоћ у хитним случајевима са овог телефона у последњих 48 сати. Аутоматски ће бити поново омогућено када истекне период од 48 сати."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Увези бројеве"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Раније сте означили неке позиваоце које аутоматски треба преусмерити на говорну пошту преко других апликација."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Прикажи бројеве"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Увeзи"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Увоз није успео"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Деблокирај број"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Додај број"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Позиви са ових бројева ће бити блокирани и поруке говорне поште ће се аутоматски брисати."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Позиви са ових бројева ће бити блокирани, али позиваоци са ових бројева ће и даље моћи да вам остављају поруке говорне поште."</string>
+    <string name="block_list" msgid="7760188925338078011">"Блокирани бројеви"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> је неважећи."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> је већ блокиран."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Блокирање позива је онемогућено на 48 сати"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Онемогућено је зато што је упућен хитан позив."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Налози за позивање"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Укључи"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Подеси дозволе"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Да бисте омогућили брзо бирање, укључите дозволу за Контакте."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Да бисте видели евиденцију позива, укључите дозволу за Телефон."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Да бисте видели контакте, укључите дозволу за Контакте."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Да бисте приступили говорној пошти, укључите дозволу за Телефон."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Да бисте претражили контакте, укључите дозволе за Контакте."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Да бисте упутили позив, укључите дозволу за Телефон."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Апликација Телефон нема дозволу за уписивање у системска подешавања."</string>
+</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
new file mode 100644
index 0000000..04b8558
--- /dev/null
+++ b/res/values-sv/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefonens knappsats"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Samtalshistorik"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Rapportera fel nummer"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopiera nummer"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopiera transkription"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Blockera nummer"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> har blockerats"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Häv blockeringen av numret"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Blockeringen av <xliff:g id="NUMBER">%1$s</xliff:g> har hävts"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ÅNGRA"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Radera"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Redigera nummer före samtal"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Rensa samtalshistorik"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Radera röstmeddelande"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Röstbrevlåda raderad"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ÅNGRA"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vill du rensa samtalshistoriken?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Alla samtal raderas från historiken"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Rensar samtalshistoriken ..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Ringa"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Missat samtal"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Missat jobbsamtal"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Missade samtal"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> missade samtal"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Ring upp"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Meddelande"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> röstmeddelanden </item>
+      <item quantity="one">röstmeddelande</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spela upp"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nytt röstmeddelande från <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Det gick inte att spela upp röstmeddelandet"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Läser in röstmeddelande ..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Det gick inte att läsa in röstmeddelandet"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Endast samtal med röstmeddelande"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Endast inkommande samtal"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Endast utgående samtal"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Endast missade samtal"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visuell röstbrevlåda"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Visa och lyssna på ett röstmeddelande utan att behöva ringa ett nummer. Dataavgifter kan tillkomma."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Inställningar"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Uppdateringar för röstbrevlådan är inte tillgängliga"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Ett nytt röstmeddelande väntar. Det går inte att läsa in det för tillfället."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Konfigurera röstbrevlådan"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Ljud är inte tillgängligt"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfigurera"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Ring röstbrevlådan"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Välj nummer"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Välj nummer"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Kom ihåg det här valet"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"sök"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ring"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"nummer att ringa"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Starta eller stoppa uppspelning"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Slå på eller av högtalartelefon"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Sök uppspelningsläge"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Minska uppspelningshastighet"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Öka uppspelningshastighet"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Samtalshistorik"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Fler alternativ"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"knappsats"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Visa endast utgående samtal"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Visa endast inkommande samtal"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Visa endast missade samtal"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Visa bara röstmeddelanden"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Visa alla samtal"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Lägg till en paus på 2 sek."</string>
+    <string name="add_wait" msgid="3360818652790319634">"Lägg till väntetid"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Inställningar"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Ny kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Alla kontakter"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Samtalsinfo"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Det finns ingen information"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Använd tonvalstelefon"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Återvänd till pågående samtal"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Lägg t. samt."</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Inkommande samtal"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Utgående samtal"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Missat samtal"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Inkommande videosamtal"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Utgående videosamtal"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Missat videosamtal"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Röstmeddelande"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Avvisat samtal"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Blockerat samtal"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Inkommande samtal"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Spela upp röstmeddelande"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Visa kontakten <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Ring <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Kontaktuppgifter för <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> samtal."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Videosamtal."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Skicka sms till <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ej hört röstmeddelande"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Starta röstsökning"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Okänd"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Röstbrevlåda"</string>
+    <string name="private_num" msgid="6374339738119166953">"Privat nummer"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefonautomat"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sekund"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> kl. <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Det går inte att ringa det här numret"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Välj Meny &gt; Inställningar om du vill konfigurera röstbrevlådan."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Om du vill ringa röstbrevlådan måste du först inaktivera flygplansläget."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Läser in …"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI-kod"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Läser in från SIM-kort…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontakter från SIM-kort"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Det finns inga appar för kontakter"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Röstsökning är inte tillgänglig"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Det går inte att ringa eftersom appen Telefon har inaktiverats."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Det finns ingen app för detta på enheten"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Sök efter kontakter"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Ange nummer eller kontakt"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Samtalshistoriken är tom"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Ring ett samtal"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Du har inga missade samtal."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Din röstbrevlåda är tom."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Visa endast favoriter"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Samtalshistorik"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Alla"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Missade"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Röstbrevlåda"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Vill du blockera <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Samtal från det här numret blockeras och röstmeddelanden raderas automatiskt."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Samtal från det här numret blockeras, men det kan fortfarande gå att lämna ett röstmeddelande."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOCKERA"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Vill du häva blockeringen av <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Numret är inte längre blockerat från att ringa dig."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"HÄV BLOCKERINGEN"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Kortnummer"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Samtalshistorik"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontakter"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Röstbrevlåda"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Borttagen från favoriter"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Ångra"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Skapa ny kontakt"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Lägg till i kontakt"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Skicka sms"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Ring videosamtal"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Blockera nummer"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nya missade samtal"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Du har ingen kontakt som snabbval ännu"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Lägg till en favorit"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Du har inga kontakter ännu"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Lägg till en kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Tryck på bilden och visa alla nummer eller tryck länge om du vill ändra ordningen"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Ta bort"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videosamtal"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Skicka ett meddelande"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Samtalsinfo"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Ring <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Missat samtal från <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Besvarat samtal från <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Nytt röstmeddelande från <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Röstmeddelande från <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Ring till <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"på <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Samtal"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Ring <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Ring videosamtal till <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Lyssna på ett röstmeddelande från <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Spela upp röstmeddelande från <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Pausa röstmeddelande från <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Radera röstmeddelande från <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> nya röstmeddelanden</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> nytt röstmeddelande</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Skapa en kontakt för <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Lägg till <xliff:g id="NAMEORNUMBER">^1</xliff:g> i befintliga kontakter"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Samtalsinformation för <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Har raderats från samtalshistoriken"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"I dag"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"I går"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Äldre"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Samtalslista"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Slå på högtalaren."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Stäng av högtalaren."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Spela upp snabbare."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Spela upp långsammare."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Starta eller pausa uppspelning."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Visningsalternativ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ljud och vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Tillgänglighet"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Ringsignal"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrera också vid samtal"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Knappsatsljud"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tonlängd för knappsats"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Lång"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Snabbsvar"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Samtal"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Samtalsblockering"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Blockeringen har inaktiverats tillfälligt"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Samtalsblockering har inaktiverats eftersom du ringde ett larmnummer från den här mobilen under de senaste 48 timmarna. Blockeringen aktiveras igen när 48 timmar har gått."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Importera nummer"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Du har tidigare angett via andra appar att vissa inkommande samtal ska skickas till röstbrevlådan automatiskt."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Visa telefonnummer"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Importera"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Det gick inte att importera"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Häv blockeringen av numret"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Lägg till telefonnummer"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Samtal från de här numren blockeras och röstmeddelanden raderas automatiskt."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Samtal från de här numren blockeras, men det kan fortfarande gå att lämna ett röstmeddelande."</string>
+    <string name="block_list" msgid="7760188925338078011">"Blockerade nummer"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> är inte giltigt."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> är redan blockerat."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Samtalsblockeringen har inaktiverats i 48 timmar"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Inaktiverades därför att enheten har använts för ett nödsamtal."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Konton för samtal"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Aktivera"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Ange behörigheter"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Du måste aktivera behörigheten Kontakter för att kunna använda snabbuppringning."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Du måste aktivera behörigheten Telefon för att kunna visa samtalsloggen."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Du måste aktivera behörigheten Kontakter för att kunna visa kontakterna."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Du måste aktivera behörigheten Telefon för att kunna komma åt röstmeddelanden."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Aktivera behörigheter för Kontakter om du vill söka bland kontakterna."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Du måste aktivera behörigheten Telefon för att kunna ringa."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefonappen har inte skrivbehörighet i systeminställningarna."</string>
+</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
new file mode 100644
index 0000000..38a1f88
--- /dev/null
+++ b/res/values-sw/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Simu"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Nambari ya simu"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Vitufe vya Kupiga Simu"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Simu"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Rekodi ya simu zilizopigwa"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Ripoti nambari isiyo sahihi"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Nakili nambari"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Nakili unukuzi"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Zuia nambari"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> imezuiwa"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Ondolea nambari kizuizi"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> imeondolewa kizuizi"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"TENDUA"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Futa"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Badilisha nambari kabla ya kupiga simu"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Futa rekodi ya simu zilizopigwa"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Futa ujumbe wa sauti"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ujumbe wa sauti umefutwa"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"TENDUA"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Je, ungependa kufuta rekodi ya simu zilizopigwa?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Hii itafuta simu zote kutoka rekodi zako"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Inafuta rekodi ya simu zilizopigwa..."</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Simu"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Simu ambayo haikujibiwa"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Simu ya kazini ambayo hukujibu"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Simu zisizojibiwa"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Simu <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ambazo hazikujibiwa"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Mpigie"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Ujumbe"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other">Ujumbe <xliff:g id="COUNT">%1$d</xliff:g> wa sauti </item>
+      <item quantity="one">Ujumbe wa sauti</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Cheza"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Barua mpya ya sauti kutoka <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Haikuweza kucheza ujumbe wa sauti"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Inapakia ujumbe wa sauti..."</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Haikuweza kupakia ujumbe wa sauti"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Simu zilizo na ujumbe wa sauti tu"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Simu zinazoingia tu"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Simu zinazotoka tu"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Simu zisizojibiwa tu"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Ujumbe wa sauti unaoonekana"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Tazama na usikilize ujumbe wako wa sauti, bila kupiga simu kwa nambari yoyote. Huenda ukatozwa kwa gharama ya data."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Mipangilio"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Masasisho ya ujumbe wa sauti hayapatikani"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Ujumbe mpya wa sauti unasubiri. Haiwezi kupakia sasa hivi."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Sanidi ujumbe wako wa sauti"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Sauti haipatikana"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Sanidi"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Pigia barua sauti"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"( <xliff:g id="COUNT">%1$d</xliff:g> ) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Chagua nambari"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Chagua nambari"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Kumbuka chaguo hili"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"tafuta"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"piga simu"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"nambari ya kupiga"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Cheza au usimamishe uchezaji wa ujumbe wa sauti"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Washa au uzime spika ya simu"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Tafuta sehemu ya kucheza ujumbe wa sauti"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Punguza kasi ya kucheza ujumbe wa sauti"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Ongeza kasi ya kucheza ujumbe wa sauti"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historia ya Simu"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Chaguo zaidi"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"kitufe cha kupiga"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Onyesha zinazotoka pekee"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Onyesha zinazoingia pekee"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Onyesha zilizokosa kupokewa pekee"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Onyesha barua za sauti pekee"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Onyesha simu zote"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Ongeza usitishaji wa sekunde 2"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Ongeza kusubiri"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Mipangilio"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Anwani mpya"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Anwani zote"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Maelezo ya simu"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Maelezo hayapatikana"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Tumia kibao cha kuchapa cha sauti na kugusa"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Rudi kwa simu inayoendelea"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Ongeza simu"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Unapigiwa simu"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Simu unayopiga"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Simu isiyojibiwa"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Hangout ya Video inayoingia"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Hangout ya Video inayotoka"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Hangout ya Video ambayo haikupokewa"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Barua za sauti"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Simu iliyokataliwa"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Simu iliyozuiwa"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Simu zinazoingia"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Sikiliza ujumbe wa sauti"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Angalia anwani <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Piga <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Maelezo ya <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"Simu <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Hangout ya video."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Tuma SMS kwa <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Barua sauti ambayo haijasikizwa"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Anza kutafuta kwa kutamka"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Haijulikani"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Ujumbe wa sauti"</string>
+    <string name="private_num" msgid="6374339738119166953">" Nambari isiyojulikana"</string>
+    <string name="payphone" msgid="7726415831153618726">"Simu ya kulipia"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"Sekunde <xliff:g id="SECONDS">%s</xliff:g>"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"Dak <xliff:g id="MINUTES">%s</xliff:g> sek <xliff:g id="SECONDS">%s</xliff:g>"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> saa <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Haiwezi kupiga simu kwa nambari hii"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ili kusanidi ujumbe wa sauti, nenda kwa Menyu &gt; Mipangilio."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Kupigia simu ujumbe wa sauti, kwanza zima hali ya ndege."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Inapakia…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Inapakia kutoka SIM kadi..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Anwani za SIM kadi"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Hakuna programu za mawasiliano zinazopatikana"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Kutafuta kwa kutamka hakupatikani"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Haiwezi kupiga simu kwa sababu programu ya Simu imezimwa."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Hakuna programu kwa ajili ya hiyo kwenye kifaa hiki"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Tafuta anwani"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Ongeza nambari au utafute anwani"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Rekodi yako ya simu zilizopigwa haina chochote"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Piga simu"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Huna simu ulizokosa kupokea"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Kikasha chako cha ujumbe wa sauti hakina ujumbe."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Onyesha zinazopendwa tu"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Rekodi ya Simu Zilizopigwa"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Zote"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Ambazo hazikupokewa"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Ujumbe wa sauti"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Ungependa kuzuia <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Simu zinazopigwa kutoka nambari hii zitazuiwa na ujumbe wa sauti utafutwa kiotomatiki."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Simu zinazopigwa kutoka nambari hii zitazuiwa, lakini mpigaji bado anaweza kukutumia ujumbe wa sauti."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ZUIA"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Ungependa kuondoa kizuizi kwenye <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Simu kutoka kwenye nambari hii hazitazuiwa tena."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ONDOA KIZUIZI"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Unaowasiliana nao zaidi"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Rekodi ya Simu Zilizopigwa"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Anwani zote"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Ujumbe wa sauti"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Imeondolowa kwenye vipendwa"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Tendua"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Ongeza anwani mpya"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Ongeza kwenye anwani"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Tuma SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Piga Hangout ya video"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Zuia nambari"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Simu <xliff:g id="NUMBER">%s</xliff:g> za karibuni ambazo hazikujibiwa"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Hakuna mtu aliye katika orodha yako ya watu unaowasiliana nao zaidi"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Ongeza kipendwa"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Bado huna anwani zozote"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Ongeza anwani"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Gusa picha ili uone nambari zote au gusa na ushikilie ili upange upya"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Ondoa"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Hangout ya Video"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Tuma SMS"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Maelezo ya simu"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Piga simu kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Simu ambayo haikupokelewa kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Simu iliyopokelewa kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Ujumb wa sauti ambao haujasikilizwa kutoka <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Ujumbe wa sauti kutoka <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Simu iliyopigwa kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"kwenye <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Piga simu"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Piga simu kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Hangout ya video <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Sikiliza ujumbe wa sauti kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Cheza ujumbe wa sauti kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Sitisha ujumbe wa sauti kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Futa ujumbe wa sauti kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other">Ujumbe <xliff:g id="COUNT_1">%d</xliff:g> mpya wa sauti</item>
+      <item quantity="one">Ujumbe <xliff:g id="COUNT_0">%d</xliff:g> mpya wa sauti</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Unda anwani ya <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Ongeza <xliff:g id="NAMEORNUMBER">^1</xliff:g> kwenye anwani iliyopo"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Maelezo ya simu ya <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Ilifutwa kutoka rekodi ya simu zilizopigwa"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Leo"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Jana"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Nzee zaidi"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Orodha ya simu"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Washa spika."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Zima spika."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Cheza kwa kasi zaidi."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Cheza polepole."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Anzisha au usitishe kucheza."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Chaguo za onyesho"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sauti na mtetemo"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Zana za walio na matatizo ya kuona au kusikia"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Mlio wa simu"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Tetema simu zinapoingia pia"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Milio ya vitufe vya kupiga simu"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Urefu wa toni ya vitufe vya kupiga simu"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Kawaida"</item>
+    <item msgid="6177579030803486015">"Ndefu"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Majibu ya haraka"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Simu zilizopigwa"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Kuzuia simu"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Kuzuia simu kumezimwa kwa muda"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Kipengele cha kuzuia simu kimezimwa kwa sababu uliwasiliana na huduma za dharura kwenye simu hii ndani ya saa 48 zilizopita. Kipengele hiki kitawashwa kiotomatiki baada ya kipindi cha saa 48 kumalizika."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Leta nambari"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Hapo awali uliwekea alama baadhi ya wanaopiga ili simu zao ziingie kwenye ujumbe wa sauti kiotomatiki kupitia programu nyingine."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Angalia Nambari"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Leta"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Imeshindwa kuingiza"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Ondolea nambari kizuizi"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Ongeza nambari"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Simu zinazopigwa kutoka nambari hizi zitazuiwa na ujumbe wa sauti utafutwa kiotomatiki."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Simu zinazopigwa kutoka nambari hizi zitazuiwa, lakini wapigaji bado wanaweza kukutumia ujumbe wa sauti."</string>
+    <string name="block_list" msgid="7760188925338078011">"Nambari zilizozuiwa"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> si sahihi."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> tayari imezuiwa."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Huduma ya kuzuia simu imezimwa kwa saa 48"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Imezimwa kwa sababu simu ya dharura imepigwa."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Akaunti za simu"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Washa"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Weka ruhusa"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Ili kuwasha kipengele cha unaowasiliana nao zaidi, washa ruhusa ya Anwani."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Ili uone rekodi yako ya nambari za simu, washa ruhusa ya Simu."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Ili uone anwani zako, washa ruhusa ya Anwani."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Ili ufikie ujumbe wako wa sauti, washa ruhusa ya Simu."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Ili utafute anwani zako, washa ruhusa za Anwani."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Ili upige simu, washa ruhusa ya Simu."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Programu ya simu haina ruhusa ya kuandika kwenye mipangilio ya mfumo."</string>
+</resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
new file mode 100644
index 0000000..9d72a27
--- /dev/null
+++ b/res/values-ta-rIN/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ஃபோன்"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ஃபோன்"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ஃபோன் டயல்பேடு"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ஃபோன்"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"அழைப்பு வரலாறு"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"தவறான எண் எனப் புகாரளி"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"எண்ணை நகலெடு"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"டிரான்ஸ்கிரிப்ஷனை நகலெடு"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"எண்ணைத் தடு"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> தடுக்கப்பட்டது"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"எண்ணை அனுமதி"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> அனுமதிக்கப்பட்டது"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"செயல்தவிர்"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"நீக்கு"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"அழைப்பதற்கு முன் எண்ணை மாற்று"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"அழைப்பு வரலாற்றை அழி"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"குரலஞ்சலை நீக்கு"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"குரலஞ்சல் நீக்கப்பட்டது"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"செயல்தவிர்"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"அழைப்பு பதிவை அழிக்கவா?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"பதிவிலிருந்து எல்லா அழைப்புகளும் நீக்கப்படும்"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"அழைப்பு வரலாற்றை அழிக்கிறது…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ஃபோன்"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"தவறிய அழைப்பு"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"தவறிய அழைப்பு (பணி)"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"தவறிய அழைப்புகள்"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> தவறிய அழைப்புகள்"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"திரும்ப அழை"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"செய்தி அனுப்பு"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> குரலஞ்சல்கள் </item>
+      <item quantity="one">குரலஞ்சல்</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"இயக்கு"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> இன் புதிய குரலஞ்சல்"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"குரலஞ்சலை இயக்க முடியவில்லை"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"குரலஞ்சலை ஏற்றுகிறது…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"குரலஞ்சலை ஏற்ற முடியவில்லை"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"குரலஞ்சலுடனான அழைப்புகள் மட்டும்"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"உள்வரும் அழைப்புகள் மட்டும்"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"வெளிச்செல்லும் அழைப்புகள் மட்டும்"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"தவறிய அழைப்புகள் மட்டும்"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"விஷூவல் குரலஞ்சல்"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"எண்ணை அழைக்காமலே, குரலஞ்சலைப் பார்க்கலாம் மற்றும் கேட்கலாம். இதற்கு தரவுக் கட்டணங்கள் விதிக்கப்படலாம்."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"அமைப்புகள்"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"குரலஞ்சல் புதுப்பிப்புகள் இல்லை"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"புதிய குரலஞ்சல் காத்திருக்கிறது. தற்போது ஏற்ற முடியாது."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"குரலஞ்சலை அமைக்கவும்"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ஆடியோ இல்லை"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"அமைப்பு"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"குரலஞ்சலில் அழை"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"எண்ணைத் தேர்வுசெய்யவும்"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"எண்ணைத் தேர்வுசெய்யவும்"</string>
+    <string name="make_primary" msgid="5829291915305113983">"இந்த விருப்பத்தை நினைவில்கொள்"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"தேடு"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"டயல்"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"டயல் செய்வதற்கான எண்"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"பிளேபேக்கை இயக்கு அல்லது நிறுத்து"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"ஸ்பீக்கர்போனை இயக்கு அல்லது முடக்கு"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"பிளேபேக் நிலையைத் தேடு"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"பிளேபேக் விகிதத்தைக் குறை"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"பிளேபேக் விகிதத்தை அதிகரி"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"அழைப்பு பட்டியல்"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"மேலும் விருப்பங்கள்"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"டயல்பேடு"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"வெளிச்செல்லுவதை மட்டும் காட்டு"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"உள்வருவதை மட்டும் காட்டு"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"தவறியதை மட்டும் காட்டு"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"குரலஞ்சல்களை மட்டும் காட்டு"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"எல்லா அழைப்புகளையும் காட்டு"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-வினாடி இடைநிறுத்தத்தைச் சேர்"</string>
+    <string name="add_wait" msgid="3360818652790319634">"காத்திருப்பைச் சேர்"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"அமைப்பு"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"புதிய தொடர்பு"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"எல்லா தொடர்புகளும்"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"அழைப்பு விவரங்கள்"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"விவரங்கள் இல்லை"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"டச் டோன் விசைப்பலகையைப் பயன்படுத்தவும்"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"செயலிலுள்ள அழைப்பிற்குத் திரும்பு"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"அழைப்பைச் சேர்"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"உள்வரும் அழைப்பு"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"வெளிச்செல்லும் அழைப்பு"</string>
+    <string name="type_missed" msgid="2720502601640509542">"தவறிய அழைப்பு"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"உள்வரும் வீடியோ அழைப்பு"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"வெளிச்செல்லும் வீடியோ அழைப்பு"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"தவறிய வீடியோ அழைப்பு"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"குரலஞ்சல்"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"நிராகரிக்கப்பட்ட அழைப்பு"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"தடுக்கப்பட்ட அழைப்பு"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"உள்வரும் அழைப்புகள்"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"குரலஞ்சலை இயக்கு"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> தொடர்பைக் காட்டு"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> ஐ அழை"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> க்கான தொடர்பு விவரங்கள்"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> அழைப்புகள்."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"வீடியோ அழைப்பு."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g>க்கு SMS அனுப்பு"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"கேட்கப்படாத குரலஞ்சல்"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"குரல் தேடலைத் தொடங்கு"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> ஐ அழை"</string>
+    <string name="unknown" msgid="740067747858270469">"அறியப்படாதது"</string>
+    <string name="voicemail" msgid="3851469869202611441">"குரலஞ்சல்"</string>
+    <string name="private_num" msgid="6374339738119166953">"தனிப்பட்ட எண்"</string>
+    <string name="payphone" msgid="7726415831153618726">"கட்டணத் தொலைபேசி"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> வி"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> நிமிடம் <xliff:g id="SECONDS">%s</xliff:g> வினாடி"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> அன்று <xliff:g id="TIME">%2$s</xliff:g> மணிக்கு"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"இந்த எண்ணை அழைக்க முடியாது"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"குரலஞ்சலை அமைக்க, செல்க மெனு &gt; அமைப்பு."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"குரலஞ்சலை அழைப்பதற்கு, முதலில் விமானப் பயன்முறையை முடக்கவும்."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"ஏற்றுகிறது..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"சிம் கார்டிலிருந்து ஏற்றுகிறது…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"சிம் கார்டின் தொடர்புகள்"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"தொடர்புகள் பயன்பாடு எதுவுமில்லை"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"குரல் தேடல் இல்லை"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Phone பயன்பாடு முடக்கப்பட்டுள்ளதால், ஃபோன் அழைப்பைச் செய்ய முடியாது."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"சாதனத்தில் இந்தச் செயலைச் செய்வதற்கான பயன்பாடு எதுவும் இல்லை"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"தொடர்புகளைத் தேடுக"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"எண்ணைச் சேர்க்கவும் அல்லது தொடர்புகளில் தேடவும்"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"அழைப்பு வரலாறு காலியாக உள்ளது"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"அழை"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"தவறிய அழைப்புகள் இல்லை."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"குரலஞ்சல் இன்பாக்ஸ் காலியாக உள்ளது."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"பிடித்தவற்றை மட்டும் காட்டு"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"அழைப்பு வரலாறு"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"எல்லாம்"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"தவறியவை"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"குரலஞ்சல்"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g>ஐத் தடுக்கவா?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"இந்த எண்ணின் அழைப்புகள் தடுக்கப்படுவதுடன், அதன் குரலஞ்சல்களும் தானாகவே நீக்கப்படும்."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"இந்த எண்ணின் அழைப்புகள் தடுக்கப்படும், ஆனால் அழைப்பாளரால் இன்னமும் உங்களுக்குக் குரலஞ்சல்களை அனுப்ப முடியும்."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"தடு"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g>ஐ அனுமதிக்கவா?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"இனி உங்களை அழைக்க இந்த எண் அனுமதிக்கப்படும்."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"அனுமதி"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"விரைவு டயல்"</string>
+    <string name="tab_history" msgid="2563144697322434940">"அழைப்பு வரலாறு"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"தொடர்புகள்"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"குரலஞ்சல்"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"பிடித்தவற்றிலிருந்து அகற்றப்பட்டது"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"செயல்தவிர்"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ஐ அழை"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"புதிய தொடர்பை உருவாக்கு"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"தொடர்பில் சேர்"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS அனுப்பு"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"வீடியோவில் அழை"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"எண்ணைத் தடு"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> புதிய தவறிய அழைப்புகள்"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"இன்னும் விரைவு டயலில் யாரையும் சேர்க்கவில்லை"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"பிடித்தவராகச் சேர்"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"இதுவரை எந்தத் தொடர்புகளும் இல்லை"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"ஒரு தொடர்பைச் சேர்க்கவும்"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"எல்லா எண்களையும் பார்க்க, படத்தைத் தொடவும் அல்லது மறுவரிசைப்படுத்த தொட்டுப் பிடித்திருக்கவும்"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"அகற்று"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"வீடியோ அழைப்பு"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"செய்தி அனுப்பவும்"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"அழைப்பு விவரங்கள்"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ஐ அழை"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"தவறிய அழைப்பு: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"பேசிய அழைப்பு: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"படிக்காத குரலஞ்சல்: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"குரலஞ்சல்: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"அழைத்த அழைப்பு: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> இல்"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"அழை"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ஐ அழை"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ஐ வீடியோவில் அழைக்கும்."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> இன் குரலஞ்சலைக் கேள்"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> இன் குரலஞ்சலை இயக்கும்"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> இன் குரலஞ்சலை இடைநிறுத்தும்"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> இன் குரலஞ்சலை நீக்கும்"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> புதிய குரலஞ்சல்கள்</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> புதிய குரலஞ்சல்</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>க்கான தொடர்பை உருவாக்கும்"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"இருக்கும் தொடர்பில் <xliff:g id="NAMEORNUMBER">^1</xliff:g>ஐச் சேர்க்கும்"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> இன் அழைப்பு விவரங்கள்"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"அழைப்பு வரலாற்றிலிருந்து நீக்கப்பட்டது"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"இன்று"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"நேற்று"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"பழையது"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"அழைப்புகள் பட்டியல்"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"ஸ்பீக்கரை இயக்கு."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"ஸ்பீக்கரை முடக்கு."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"வேகமாக இயக்கு."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"மெதுவாக இயக்கு."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"பிளேபேக்கைத் தொடங்கு அல்லது இடைநிறுத்து."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"காட்சி விருப்பத்தேர்வு"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ஒலிகளும் அதிர்வும்"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"அணுகல் தன்மை"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"மொபைலின் ரிங்டோன்"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"அழைப்புகளுக்கும் அதிர்வுறு"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"டயல்பேட் ஒலிகள்"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"டயல்பேட் டோன் நீளம்"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"இயல்பு"</item>
+    <item msgid="6177579030803486015">"நீளமானது"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"விரைவு பதில்கள்"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"அழைப்புகள்"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"அழைப்புத் தடுப்பு"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"அழைப்புத் தடுப்பு அம்சம் தற்காலிகமாக முடக்கப்பட்டுள்ளது"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"கடந்த 48 மணிநேரத்தில், இந்த ஃபோனிலிருந்து அவசர அழைப்பு எண்ணைத் தொடர்புகொண்டதால் அழைப்புத் தடுப்பு அம்சம் முடக்கப்பட்டுள்ளது. 48 மணிநேரம் கழித்து, இந்த அம்சம் தானாகவே மீண்டும் இயக்கப்படும்."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"எண்களை இறக்கு"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"பிற பயன்பாடுகளின் மூலம் சில அழைப்பாளர்களின் அழைப்புகளை தானாகவே குரலஞ்சலுக்கு அனுப்புமாறு ஏற்கனவே குறித்துள்ளீர்கள்."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"எண்களைக் காட்டு"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"இறக்கு"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"இறக்குவதில் தோல்வி"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"எண்ணை அனுமதி"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"எண்ணைச் சேர்"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"இந்த எண்களின் அழைப்புகள் தடுக்கப்படுவதுடன், அவற்றின் குரலஞ்சல்களும் தானாகவே நீக்கப்படும்."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"இந்த எண்களின் அழைப்புகள் தடுக்கப்படும், ஆனால் அழைப்பாளர்களால் இன்னமும் உங்களுக்குக் குரலஞ்சல்களை அனுப்ப முடியும்."</string>
+    <string name="block_list" msgid="7760188925338078011">"தடுக்கப்பட்ட எண்கள்"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> தவறானது."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ஏற்கனவே தடுக்கப்பட்டுள்ளது."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"அழைப்புத் தடுப்பு 48 மணிநேரத்திற்கு முடக்கப்பட்டுள்ளது"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"அவசர அழைப்பு செய்திருப்பதால், அழைப்புத் தடுப்பு முடக்கப்பட்டது."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"அழைப்பு கணக்குகள்"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"இயக்கு"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"அனுமதிகளை அமை"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"விரைவு டயலை இயக்க, தொடர்புகள் அனுமதியை இயக்கவும்."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"அழைப்புப் பதிவைப் பார்க்க, ஃபோன் அனுமதியை இயக்கவும்."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"தொடர்புகளைப் பார்க்க, தொடர்புகள் அனுமதியை இயக்கவும்."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"குரலஞ்சலை அணுக, ஃபோன் அனுமதியை இயக்கவும்."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"தொடர்புகளைத் தேட, தொடர்புகள் அனுமதிகளை இயக்கவும்."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"அழைக்க, ஃபோன் அனுமதியை இயக்கவும்."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"முறைமை அமைப்புகளில் எழுதுவதற்கான அனுமதி ஃபோன் பயன்பாட்டுக்கு இல்லை."</string>
+</resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
new file mode 100644
index 0000000..5077e23
--- /dev/null
+++ b/res/values-te-rIN/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"ఫోన్"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ఫోన్"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"ఫోన్ డయల్‌ప్యాడ్"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ఫోన్"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"కాల్ చరిత్ర"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"సరికాని నంబర్‌ను నివేదించు"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"నంబర్‌ను కాపీ చేయి"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"లిప్యంతరీకరణను కాపీ చేయి"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"నంబర్‌ను బ్లాక్ చేయి"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> బ్లాక్ చేయబడింది"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"నంబర్‌ను అన్‌బ్లాక్ చేయి"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> అన్‌బ్లాక్ చేయబడింది"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"రద్దు చేయి"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"తొలగించు"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"కాల్ చేయడానికి ముందు నంబర్‌ను సవరించు"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"కాల్ చరిత్రను తీసివేయి"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"వాయిస్ మెయిల్‌ను తొలగించు"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"వాయిస్‌‍మెయిల్ తొలగించింది"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"చర్యరద్దు"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"కాల్ చరిత్రను క్లియర్ చేయాలా?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"దీని వలన మీ చరిత్ర నుండి అన్ని కాల్‌లు తొలగించబడతాయి"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"కాల్ చరిత్రను క్లియర్ చేస్తోంది…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"ఫోన్"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"మిస్డ్ కాల్"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"సమాధానమివ్వని కార్యాలయ కాల్"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"మిస్డ్ కాల్‌లు"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> మిస్డ్ కాల్‌లు"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"తిరిగి కాల్ చేయి"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"సందేశం పంపు"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> వాయిస్ మెయిల్‌లు </item>
+      <item quantity="one">వాయిస్ మెయిల్</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ప్లే చేయి"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> నుండి కొత్త వాయిస్ మెయిల్"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"వాయిస్ మెయిల్‌ను ప్లే చేయడం సాధ్యపడలేదు"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"వాయిస్ మెయిల్‌ను లోడ్ చేస్తోంది…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"వాయిస్ మెయిల్‌ను లోడ్ చేయడం సాధ్యపడలేదు"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"వాయిస్ మెయిల్ కాల్‌లు మాత్రమే"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"ఇన్‌కమింగ్ కాల్‌లు మాత్రమే"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"అవుట్‌గోయింగ్ కాల్‌లు మాత్రమే"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"సమాధానం ఇవ్వని కాల్‌లు మాత్రమే"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"దృశ్యమాన వాయిస్ మెయిల్"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"నంబర్‌కు కాల్ చేయకుండానే మీ వాయిస్ మెయిల్‌ని చూడండి మరియు వినండి. డేటా ఛార్జీలు వర్తించవచ్చు."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"సెట్టింగ్‌లు"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"వాయిస్ మెయిల్ నవీకరణలు అందుబాటులో లేవు"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"కొత్త వాయిస్ మెయిల్ వేచి ఉంది. ప్రస్తుతం లోడ్ చేయడం సాధ్యపడదు."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"మీ వాయిస్ మెయిల్‌ను సెటప్ చేయండి"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ఆడియో అందుబాటులో లేదు"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"సెటప్ చేయండి"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"వాయిస్ మెయిల్‌కు కాల్ చేయండి"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"నంబర్‌ను ఎంచుకోండి"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"నంబర్‌ను ఎంచుకోండి"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ఈ ఎంపికను గుర్తుంచుకో"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"శోధించు"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"డయల్ చేయి"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"డయల్ చేయాల్సిన నంబర్"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"ప్లేబ్యాక్‌ని ప్లే చేయి లేదా ఆపివేయి"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"స్పీకర్‌ఫోన్‌ను స్విచ్ ఆన్ లేదా స్విచ్ ఆఫ్ చేయి"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"ప్లేబ్యాక్ స్థానాన్ని కావాల్సిన చోటుకి జరపండి"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"ప్లేబ్యాక్ రేటుని తగ్గించు"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"ప్లేబ్యాక్ రేటుని పెంచు"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"కాల్ చరిత్ర"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"మరిన్ని ఎంపికలు"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"డయల్ ప్యాడ్"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"అవుట్‌గోయింగ్ మాత్రమే చూపు"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"ఇన్‌కమింగ్ మాత్రమే చూపు"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"సమాధానం ఇవ్వనివి మాత్రమే చూపు"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"వాయిస్ మెయిల్‌లు మాత్రమే చూపు"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"అన్ని కాల్‌లను చూపు"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-సెకన్ల పాజ్‌ను జోడించండి"</string>
+    <string name="add_wait" msgid="3360818652790319634">"నిరీక్షణ సమయాన్ని జోడించు"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"సెట్టింగ్‌లు"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"కొత్త పరిచయం"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"అన్ని పరిచయాలు"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"కాల్ వివరాలు"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"వివరాలు అందుబాటులో లేవు"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"టచ్ టోన్ కీప్యాడ్‌ను ఉపయోగించండి"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"ప్రోగ్రెస్‌లో ఉన్న కాల్‌కు వెళ్లు"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"కాల్‌ను జోడించు"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"ఇన్‌కమింగ్ కాల్"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"అవుట్‌గోయింగ్ కాల్"</string>
+    <string name="type_missed" msgid="2720502601640509542">"సమాధానం ఇవ్వని కాల్"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ఇన్‌కమింగ్ వీడియో కాల్"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"అవుట్‌గోయింగ్ వీడియో కాల్"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"సమాధానమివ్వని వీడియో కాల్‌"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"వాయిస్ మెయిల్"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"నిరాకరించిన కాల్"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"బ్లాక్ చేసిన కాల్"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ఇన్‌కమింగ్ కాల్‌లు"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"వాయిస్ మెయిల్ ప్లే చేయండి"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> పరిచయాన్ని వీక్షించండి"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g>కు కాల్ చేయండి"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> యొక్క సంప్రదింపు వివరాలు"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> కాల్‌లు."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"వీడియో కాల్."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g>కి SMS పంపు"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"వినని వాయిస్ మెయిల్"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"వాయిస్ శోధనను ప్రారంభించండి"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>కు కాల్ చేయి"</string>
+    <string name="unknown" msgid="740067747858270469">"తెలియదు"</string>
+    <string name="voicemail" msgid="3851469869202611441">"వాయిస్ మెయిల్"</string>
+    <string name="private_num" msgid="6374339738119166953">"ప్రైవేట్ నంబర్"</string>
+    <string name="payphone" msgid="7726415831153618726">"పే ఫోన్"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> సెక"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> నిమి <xliff:g id="SECONDS">%s</xliff:g> సెక"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="TIME">%2$s</xliff:g>కి"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ఈ నంబర్‌కు కాల్ చేయలేరు"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"వాయిస్ మెయిల్ సెటప్ చేయడానికి, మెను &gt; సెట్టింగ్‌లకు వెళ్లండి."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"వాయిస్ మెయిల్ కాల్ చేయడానికి, మొదట ఎయిర్‌ప్లైన్ మోడ్‌ను ఆపివేయండి."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"లోడ్ చేస్తోంది…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"సిమ్ కార్డు నుండి లోడ్ చేస్తోంది…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"సిమ్ కార్డు పరిచయాలు"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"పరిచయాల అనువర్తనం ఏదీ అందుబాటులో లేదు"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"వాయిస్ శోధన అందుబాటులో లేదు"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ఫోన్ అనువర్తనం నిలిపివేయబడినందున ఫోన్ కాల్ చేయలేరు."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"ఈ పరికరంలో దాని కోసం అనువర్తనం ఏదీ లేదు"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"పరిచయాలను శోధించండి"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"నంబర్ జోడించండి లేదా పరిచయాల్లో శోధించండి"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"మీ కాల్ చరిత్ర ఖాళీగా ఉంది"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"కాల్ చేయి"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"మీకు మిస్డ్ కాల్‌లు ఏవీ లేవు."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"మీ వాయిస్ మెయిల్ ఇన్‌బాక్స్ ఖాళీగా ఉంది."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"ఇష్టమైనవాటిని మాత్రమే చూపు"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"కాల్ చరిత్ర"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"అన్నీ"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"సమాధానం ఇవ్వలేదు"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"వాయిస్ మెయిల్"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g>ని బ్లాక్ చేయాలా?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ఈ నంబర్ నుండి కాల్‌లు బ్లాక్ చేయబడతాయి మరియు వాయిస్‌మెయిల్‌లు స్వయంచాలకంగా తొలగించబడతాయి."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ఈ నంబర్ నుండి కాల్‌లు బ్లాక్ చేయబడతాయి, కానీ కాలర్ ఇప్పటికీ మీకు వాయిస్‌మెయిల్‌లు పంపగలరు."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"బ్లాక్ చేయి"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g>ని అన్‌బ్లాక్ చేయాలా?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"ఈ నంబర్ ఇకపై మీకు కాల్ చేయలేకుండా బ్లాక్ చేయబడదు."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"అన్‌బ్లాక్ చేయి"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"స్పీడ్ డయల్"</string>
+    <string name="tab_history" msgid="2563144697322434940">"కాల్ చరిత్ర"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"పరిచయాలు"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"వాయిస్ మెయిల్"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"ఇష్టమైనవాటి నుండి తీసివేయబడింది"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"చర్య రద్దు చేయి"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>కు కాల్ చేయండి"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"కొత్త పరిచయాన్ని సృష్టించు"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"పరిచయానికి జోడించు"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS పంపు"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"వీడియో కాల్ చేయండి"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"నంబర్‌ను బ్లాక్ చేయి"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> కొత్త సమాధానం ఇవ్వని కాల్‌లు"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"మీ స్పీడ్ డయల్‌లో ఇంకా ఎవరూ లేరు"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"ఇష్టమైనదాన్ని జోడించండి"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"మీకు ఇప్పటికీ పరిచయాలేవీ లేవు"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"పరిచయాన్ని జోడించండి"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"అన్ని నంబర్‌లను చూడటానికి చిత్రాన్ని తాకండి లేదా మళ్లీ క్రమం చేయడానికి తాకి, ఉంచండి"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"తీసివేయి"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"వీడియో కాల్"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"సందేశాన్ని పంపు"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"కాల్ వివరాలు"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>కి కాల్ చేయి"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g> నుండి <xliff:g id="TIMEOFCALL">^3</xliff:g> <xliff:g id="PHONEACCOUNT">^4</xliff:g>కి మిస్డ్ కాల్ ఇచ్చారు."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g> నుండి <xliff:g id="TIMEOFCALL">^3</xliff:g> <xliff:g id="PHONEACCOUNT">^4</xliff:g>కి చేసిన కాల్‌కి సమాధానం ఇచ్చారు."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> నుండి చదవని వాయిస్ మెయిల్, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> నుండి వాయిస్ మెయిల్, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>కి <xliff:g id="TIMEOFCALL">^3</xliff:g> <xliff:g id="PHONEACCOUNT">^4</xliff:g> నుండి కాల్ చేసారు."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>లో"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"కాల్ చేయి"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>కి కాల్ చేయి"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>కి వీడియో కాల్."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> నుండి వచ్చిన వాయిస్ మెయిల్‌ను వినండి"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> నుండి వచ్చిన వాయిస్ మెయిల్‌ను ప్లే చేయండి"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> నుండి వచ్చిన వాయిస్ మెయిల్‌ను పాజ్ చేయండి"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> నుండి వచ్చిన వాయిస్ మెయిల్‌ను తొలగించండి"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> కొత్త వాయిస్‌మెయిల్‌లు</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> కొత్త వాయిస్‌మెయిల్</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> కోసం పరిచయాన్ని సృష్టించండి"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ని ఇప్పటికే ఉన్న పరిచయానికి జోడించండి"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> యొక్క కాల్ వివరాలు"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"కాల్ చరిత్ర నుండి తొలగించబడింది"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ఈ రోజు"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"నిన్న"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"పాతది"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"కాల్‌ల జాబితా"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"స్పీకర్‌ను ఆన్ చేయి."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"స్పీకర్‌ను ఆఫ్ చేయి."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"వేగంగా ప్లే చేయి."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"నెమ్మదిగా ప్లే చేయి."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ప్లేబ్యాక్‌ను ప్రారంభించు లేదా పాజ్ చేయి."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ప్రదర్శన ఎంపికలు"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ధ్వనులు మరియు వైబ్రేషన్"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ప్రాప్యత సామర్థ్యం"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ఫోన్ రింగ్‌టోన్"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"కాల్‌ల కోసం వైబ్రేట్ కూడా చేయి"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"డయల్‌ప్యాడ్ టోన్‌లు"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"డయల్‌ప్యాడ్ టోన్ నిడివి"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"సాధారణం"</item>
+    <item msgid="6177579030803486015">"ఎక్కువ నిడివి"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"శీఘ్ర ప్రతిస్పందనలు"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"కాల్‌లు"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"కాల్ బ్లాక్ చేయడం"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"కాల్ బ్లాకింగ్ తాత్కాలికంగా ఆఫ్ అయ్యింది"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"మీరు గత 48 గంటల వ్యవధిలో ఈ ఫోన్ నుండి అత్యవసర సేవలను సంప్రదించినందున కాల్ బ్లాకింగ్ నిలిపివేయబడింది. 48 గంటల వ్యవధి ముగిసిన తర్వాత ఇది స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"నంబర్‌లను దిగుమతి చేయి"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"మీరు ఇంతకుముందే కొంతమంది కాలర్‌లను స్వయంచాలకంగా ఇతర అనువర్తనాల ద్వారా వాయిస్ మెయిల్‌కి పంపేందుకు గుర్తు పెట్టారు."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"నంబర్‌లను వీక్షించండి"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"దిగుమతి చేయి"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"దిగుమతి విఫలమైంది"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"నంబర్‌ను అన్‌బ్లాక్ చేయి"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"నంబర్‌ను జోడించు"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ఈ నంబర్‌ల నుండి కాల్‌లు బ్లాక్ చేయబడతాయి మరియు వాయిస్‌మెయిల్‌లు స్వయంచాలకంగా తొలగించబడతాయి."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ఈ నంబర్‌ల నుండి కాల్‌లు బ్లాక్ చేయబడతాయి, కానీ వాటి నుండి ఇప్పటికీ వాయిస్‌మెయిల్‌లు పంపబడవచ్చు."</string>
+    <string name="block_list" msgid="7760188925338078011">"బ్లాక్ చేయబడిన నంబర్‌లు"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> చెల్లదు."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ఇప్పటికే బ్లాక్ చేయబడింది."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"48 గంటల పాటు కాల్ బ్లాకింగ్ నిలిపివేయబడింది"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"అత్యవసర కాల్ చేసినందున నిలిపివేయబడింది."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"కాల్ చేసే ఖాతాలు"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"ఆన్ చేయి"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"అనుమతులను సెట్ చేయి"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"స్పీడ్ డయల్‌ను ప్రారంభించడానికి, పరిచయాల అనుమతిని ఆన్ చేయండి."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"మీ కాల్ లాగ్‌ను చూడటానికి, ఫోన్ అనుమతిని ఆన్ చేయండి."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"మీ పరిచయాలను చూడటానికి, పరిచయాల అనుమతిని ఆన్ చేయండి."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"మీ వాయిస్ మెయిల్‌ను ప్రాప్యత చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"మీ పరిచయాలను శోధించడానికి, పరిచయాల అనుమతులను ఆన్ చేయండి."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"కాల్ చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"సిస్టమ్ సెట్టింగ్‌లకు వ్రాయడం కోసం ఫోన్ అనువర్తనానికి అనుమతి లేదు."</string>
+</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
new file mode 100644
index 0000000..2bd3589
--- /dev/null
+++ b/res/values-th/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"โทรศัพท์"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"โทรศัพท์"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"แป้นกดหมายเลขโทรศัพท์"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"โทรศัพท์"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"ประวัติการโทร"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"รายงานหมายเลขที่ไม่ถูกต้อง"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"คัดลอกหมายเลข"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"คัดลอกการถอดเสียงเป็นคำ"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"บล็อกหมายเลข"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"บล็อก <xliff:g id="NUMBER">%1$s</xliff:g> แล้ว"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"เลิกบล็อกหมายเลข"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"เลิกบล็อก <xliff:g id="NUMBER">%1$s</xliff:g> แล้ว"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"เลิกทำ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"ลบ"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"แก้ไขหมายเลขก่อนโทร"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"ล้างประวัติการโทร"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"ลบข้อความเสียง"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"ลบข้อความเสียงแล้ว"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"เลิกทำ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ล้างประวัติการโทรไหม"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"การดำเนินการนี้จะลบการโทรทั้งหมดออกจากประวัติของคุณ"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"กำลังล้างประวัติการโทร…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"โทรศัพท์"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"สายที่ไม่ได้รับ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"มีสายจากที่ทำงานที่ไม่ได้รับ"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"สายที่ไม่ได้รับ"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"ไม่ได้รับ <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> สาย"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"โทรกลับ"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"ข้อความ"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ข้อความเสียง </item>
+      <item quantity="one">ข้อความเสียง</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"เล่น"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ข้อความเสียงใหม่จาก <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"ไม่สามารถเล่นข้อความเสียงได้"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"กำลังโหลดข้อความเสียง…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"ไม่สามารถโหลดข้อความเสียงได้"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"เฉพาะสายที่มีข้อความเสียง"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"เฉพาะสายเรียกเข้า"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"เฉพาะสายโทรออก"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"เฉพาะสายที่ไม่ได้รับ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"ข้อความเสียงพร้อมภาพ"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"ดูและฟังข้อความเสียง โดยไม่ต้องโทรไปยังหมายเลขใดๆ อาจมีการเรียกเก็บค่าบริการอินเทอร์เน็ต"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"การตั้งค่า"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"ไม่มีการอัปเดตข้อความเสียง"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"มีข้อความเสียงใหม่รออยู่ ไม่สามารถโหลดได้ในขณะนี้"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"ตั้งค่าข้อความเสียง"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ไม่สามารถใช้เสียงได้"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"ตั้งค่า"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"เรียกข้อความเสียง"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"เลือกหมายเลข"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"เลือกหมายเลข"</string>
+    <string name="make_primary" msgid="5829291915305113983">"จำตัวเลือกนี้"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ค้นหา"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"หมุนหมายเลข"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"หมายเลขที่จะโทร"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"เล่นหรือหยุดเล่น"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"เปิดหรือปิดลำโพง"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"ค้นหาตำแหน่งการเล่น"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"ลดอัตราการเล่น"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"เพิ่มอัตราการเล่น"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"ประวัติการโทร"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"ตัวเลือกเพิ่มเติม"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"แป้นหมายเลข"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"แสดงสายที่โทรออกเท่านั้น"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"แสดงสายโทรเข้าเท่านั้น"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"แสดงสายที่ไม่ได้รับเท่านั้น"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"แสดงเฉพาะข้อความเสียง"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"แสดงการโทรทั้งหมด"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"เพิ่มช่วงคั่น 2 วินาที"</string>
+    <string name="add_wait" msgid="3360818652790319634">"เพิ่มการรอ"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"การตั้งค่า"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"สร้างรายชื่อใหม่"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"รายชื่อติดต่อทั้งหมด"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"รายละเอียดการโทร"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"ไม่สามารถดึงรายละเอียด"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ใช้ปุ่มกดสัญญาณเสียง"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"กลับไปคุยสายต่อ"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"เพิ่มการโทร"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"สายเรียกเข้า"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"สายโทรออก"</string>
+    <string name="type_missed" msgid="2720502601640509542">"สายที่ไม่ได้รับ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"แฮงเอาท์วิดีโอเรียกเข้า"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"สายโทรออกแฮงเอาท์วิดีโอ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"ไม่ได้รับแฮงเอาท์วิดีโอ"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"ข้อความเสียง"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"สายที่ปฏิเสธ"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"สายที่บล็อก"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"สายโทรเข้า"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"เล่นข้อความเสียง"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"ดูรายชื่อติดต่อ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"โทรหา <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"รายละเอียดรายชื่อติดต่อสำหรับ <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> สาย"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"แฮงเอาท์วิดีโอ"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"ส่ง SMS ไปยัง <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ข้อความเสียงที่ยังไม่ได้ฟัง"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"เริ่มต้นการค้นหาด้วยเสียง"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"โทร <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"ไม่ทราบ"</string>
+    <string name="voicemail" msgid="3851469869202611441">"ข้อความเสียง"</string>
+    <string name="private_num" msgid="6374339738119166953">"หมายเลขส่วนตัว"</string>
+    <string name="payphone" msgid="7726415831153618726">"โทรศัพท์สาธารณะ"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> นาที <xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"วันที่ <xliff:g id="DATE">%1$s</xliff:g> เวลา <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ไม่สามารถโทรไปยังหมายเลขนี้"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"หากต้องการตั้งค่าข้อความเสียง ให้ไปที่เมนู &gt; การตั้งค่า"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"หากต้องการฟังข้อความเสียง ให้ปิดโหมดใช้งานบนเครื่องบินก่อน"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"กำลังโหลด..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"กำลังโหลดจากซิมการ์ด…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"รายชื่อบนซิมการ์ด"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"ไม่มีแอปรายชื่อติดต่อที่พร้อมใช้งาน"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"การค้นหาด้วยเสียงไม่พร้อมใช้งาน"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ไม่สามารถโทรศัพท์ได้เนื่องจากแอปพลิเคชันโทรศัพท์ถูกปิดใช้งาน"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"ไม่มีแอปสำหรับการทำงานนั้นบนอุปกรณ์นี้"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"ค้นหารายชื่อติดต่อ"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"เพิ่มหมายเลขหรือค้นหาผู้ติดต่อ"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"ประวัติการโทรว่างเปล่า"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"โทรออก"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"คุณไม่มีสายที่ไม่ได้รับ"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"กล่องข้อความเสียงว่างเปล่า"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"แสดงเฉพาะรายชื่อที่ชื่นชอบ"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"ประวัติการโทร"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"ทั้งหมด"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"ไม่ได้รับ"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"ข้อความเสียง"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"บล็อก <xliff:g id="NUMBER">%1$s</xliff:g> ไหม"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"ระบบจะบล็อกสายเรียกเข้าจากหมายเลขนี้และลบข้อความเสียงโดยอัตโนมัติ"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"ระบบจะบล็อกสายเรียกเข้าจากหมายเลขนี้ แต่ผู้โทรอาจยังฝากข้อความเสียงถึงคุณได้อยู่"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"บล็อก"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"เลิกบล็อก <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"หมายเลขนี้จะไม่ถูกบล็อกจากการโทรหาคุณอีกต่อไป"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"เลิกบล็อก"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"การโทรด่วน"</string>
+    <string name="tab_history" msgid="2563144697322434940">"ประวัติการโทร"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"รายชื่อติดต่อ"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"ข้อความเสียง"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"ลบจากรายการโปรด"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"เลิกทำ"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"โทร <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"สร้างรายชื่อติดต่อใหม่"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"เพิ่มในรายชื่อติดต่อ"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ส่ง SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ใช้แฮงเอาท์วิดีโอ"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"บล็อกหมายเลข"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"สายที่ไม่ได้รับใหม่ <xliff:g id="NUMBER">%s</xliff:g> สาย"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"ยังไม่ได้กำหนดผู้ใดในการโทรด่วน"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"เพิ่มรายการโปรด"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"คุณยังไม่มีรายชื่อติดต่อ"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"เพิ่มรายชื่อติดต่อ"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"แตะรูปภาพเพื่อดูหมายเลขทั้งหมด หรือแตะค้างไว้เพื่อเรียงลำดับใหม่"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"ลบ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"แฮงเอาท์วิดีโอ"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"ส่งข้อความ"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"รายละเอียดการโทร"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"โทรไปที่ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"ไม่ได้รับสายจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"รับสายจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"ข้อความเสียงที่ยังไม่ได้อ่านจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g> ผ่านทาง<xliff:g id="TYPEORLOCATION">^2</xliff:g> เมื่อ <xliff:g id="TIMEOFCALL">^3</xliff:g> <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"ข้อความเสียงจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g> ผ่านทาง<xliff:g id="TYPEORLOCATION">^2</xliff:g> เมื่อ <xliff:g id="TIMEOFCALL">^3</xliff:g> <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"โทรหา <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"บน <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"โทร"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"โทรไปที่ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"เรียกแฮงเอาท์วิดีโอไปยัง <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"ฟังข้อความเสียงจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"เล่นข้อความเสียงจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"หยุดข้อความเสียงจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g> ชั่วคราว"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"ลบข้อความเสียงจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ข้อความเสียงใหม่</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ข้อความเสียงใหม่</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"สร้างรายชื่อติดต่อสำหรับ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"เพิ่ม <xliff:g id="NAMEORNUMBER">^1</xliff:g> ไปยังรายชื่อติดต่อที่มีอยู่"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"รายละเอียดการโทรสำหรับ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"ลบออกจากประวัติการโทรแล้ว"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"วันนี้"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"เมื่อวานนี้"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"เก่ากว่า"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"รายการโทร"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"เปิดลำโพง"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"ปิดลำโพง"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"เล่นเร็วขึ้น"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"เล่นช้าลง"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"เริ่มหรือหยุดเล่นชั่วคราว"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ตัวเลือกการแสดง"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"เสียงและการสั่น"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"การเข้าถึง"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"เสียงเรียกเข้า"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"สั่นเมื่อมีสายเรียกเข้าด้วย"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"เสียงแป้นหมายเลข"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ระยะเวลาของเสียงแป้นหมายเลข"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ปกติ"</item>
+    <item msgid="6177579030803486015">"ยาว"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"คำตอบด่วน"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"การโทร"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"การบล็อกสายเรียกเข้า"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"การบล็อกสายเรียกเข้าปิดชั่วคราว"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"ระบบปิดใช้การบล็อกสายเรียกเข้าเนื่องจากคุณติดต่อบริการฉุกเฉินจากโทรศัพท์เครื่องนี้ภายใน 48 ชั่วโมงที่ผ่านมา ระบบจะเปิดใช้คุณลักษณะนี้อีกครั้งโดยอัตโนมัติเมื่อครบ 48 ชั่วโมง"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"นำเข้าหมายเลข"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"ก่อนหน้านี้คุณได้ทำเครื่องหมายว่าให้ส่งผู้โทรบางคนไปยังข้อความเสียงโดยอัตโนมัติผ่านแอปอื่นๆ"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"ดูหมายเลข"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"นำเข้า"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"การนำเข้าล้มเหลว"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"เลิกบล็อกหมายเลข"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"เพิ่มหมายเลข"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ระบบจะบล็อกสายเรียกเข้าจากหมายเลขเหล่านี้และลบข้อความเสียงโดยอัตโนมัติ"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ระบบจะบล็อกสายเรียกเข้าจากหมายเลขเหล่านี้ แต่ผู้โทรอาจยังฝากข้อความเสียงถึงคุณได้อยู่"</string>
+    <string name="block_list" msgid="7760188925338078011">"หมายเลขที่ถูกบล็อก"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> ไม่ถูกต้อง"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> ถูกบล็อกอยู่แล้ว"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"ปิดการบล็อกสายเรียกเข้า 48 ชั่วโมง"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"ปิดใช้งานเนื่องจากมีการโทรเข้าหมายเลขฉุกเฉิน"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"บัญชีการโทร"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"เปิด"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"ตั้งค่าสิทธิ์"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"หากต้องการเปิดใช้การโทรด่วน ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"หากต้องการดูประวัติการโทร ให้เปิดสิทธิ์เข้าถึงโทรศัพท์"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"หากต้องการดูรายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"หากต้องการเข้าถึงข้อความเสียง ให้เปิดสิทธิ์เข้าถึงโทรศัพท์"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"หากต้องการค้นหารายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"หากต้องการโทรออก ให้เปิดสิทธิ์เข้าถึงโทรศัพท์"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"แอปโทรศัพท์ไม่ได้รับอนุญาตให้เขียนไปยังการตั้งค่าระบบ"</string>
+</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
new file mode 100644
index 0000000..cf37718
--- /dev/null
+++ b/res/values-tl/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telepono"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telepono"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Dialpad ng Telepono"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telepono"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"History ng tawag"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Iulat ang hindi wastong numero"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopyahin ang numero"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopyahin ang transkripsyon"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"I-block ang numero"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Na-block ang <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Alisin sa pagkaka-block ang numero"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Naalis sa pagkaka-block ang <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"I-UNDO"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"I-delete"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"I-edit ang numero bago tumawag"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"I-clear ang history ng tawag"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"I-delete ang voicemail"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Na-delete voicemail"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"I-UNDO"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"I-clear ang history ng tawag?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Idi-delete nito ang lahat ng tawag mula sa iyong history"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Kini-clear ang history ng tawag…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telepono"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Hindi nasagot na tawag"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Hindi nasagot na tawag sa trabaho"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Mga hindi nasagot na tawag"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> (na) hindi nasagot na tawag"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Tawagan"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Mensahe"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemail </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> na Voicemail </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"I-play"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Bagong voicemail mula kay <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Hindi ma-play ang voicemail"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Nilo-load ang voicemail…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Hindi ma-load ang voicemail"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Mga tawag lang na may voicemail"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Mga papasok na tawag lang"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Mga papalabas na tawag lang"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Mga hindi nasagot na tawag lang"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Visual voicemail"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Tingnan at pakinggan ang iyong voicemail, nang hindi kinakailangang tumawag sa isang numero. Maaaring may mga singilin para sa data."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Mga setting"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Walang available na mga update sa voicemail"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"May naghihintay na bagong voicemail. Hindi ma-load sa ngayon."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"I-set up ang iyong voicemail"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Hindi available ang audio"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"I-set up"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Tawagan ang voicemail"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Pumili ng numero"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Pumili ng numero"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Tandaan ang pagpipiliang ito"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"maghanap"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"mag-dial"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"numerong ida-dial"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"I-play o ihinto ang playback"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"I-on o i-off ang speakerphone"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Hanapin ang posisyon ng playback"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Bagalan ang playback"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Bilisan ang playback"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"History ng Tawag"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Higit pang mga pagpipilian"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"dial pad"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Ipakita lang ang papalabas"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Ipakita lang ang paparating"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Ipakita lang ang hindi nasagot"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Ipakita lamang ang mga voicemail"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Ipakita ang lahat ng tawag"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Magdagdag ng pag-pause na 2-seg"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Magdagdag ng paghihintay"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Mga Setting"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Bagong contact"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Lahat ng contact"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Mga detalye ng tawag"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Hindi available ang mga detalye"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Gumamit ng touch tone na keypad"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Bumalik sa kasalukuyang tawag"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Magdagdag ng tawag"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Papasok na tawag"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Papalabas na tawag"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Hindi nasagot na tawag"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Papasok na video call"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Papalabas na video call"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Hindi nasagot na video call"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Tinanggihang tawag"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Naka-block na tawag"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Mga paparating na tawag"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"I-play ang voicemail"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Tingnan ang contact na si <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Tawagan si <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Mga detalye sa pakikipag-ugnayan para kay/sa <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> (na) tawag."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video call."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Magpadala ng SMS kay <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Hindi pa naririnig na voicemail"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Simulan ang paghahanap gamit ang boses"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Tumawag sa <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Di-kilala"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
+    <string name="private_num" msgid="6374339738119166953">"Pribadong numero"</string>
+    <string name="payphone" msgid="7726415831153618726">"Payphone"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> ng <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Hindi matawagan ang numerong ito"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Upang mag-set up ng voicemail, pumunta sa Menu &gt; Mga Setting."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Upang tumawag sa voicemail, i-off muna ang Airplane mode."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Naglo-load…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Naglo-load mula sa SIM card…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Mga contact sa SIM card"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Walang available na app ng mga contact"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Hindi available ang paghahanap gamit ang boses"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Hindi makagawa ng tawag sa telepono dahil naka-disable ang application na Telepono."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Walang app para doon sa device na ito"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Maghanap ng mga contact"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Magdagdag ng numero, maghanap sa contact"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Walang laman ang iyong history ng tawag"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Tumawag"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Wala kang mga hindi nasagot na tawag."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Walang laman ang iyong voicemail inbox."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Mga paborito lang ang ipakita"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"History ng Tawag"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Lahat"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Di nasagot"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Voicemail"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Gusto mo bang i-block ang <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Iba-block ang mga tawag mula sa numerong ito at awtomatikong ide-delete ang mga voicemail."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Iba-block ang mga tawag mula sa numerong ito, ngunit makakapag-iwan pa rin sa iyo ng mga voicemail ang tumatawag."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"I-BLOCK"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Gusto mo bang alisin sa pagkaka-block ang <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Maaalis na sa pagkaka-block ang numerong ito at maaari ka na nitong matawagan."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ALISIN SA PAGKAKA-BLOCK"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
+    <string name="tab_history" msgid="2563144697322434940">"History ng Tawag"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Mga Contact"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Voicemail"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Inalis sa mga paborito"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"I-undo"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Tumawag sa <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Gumawa ng bagong contact"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Idagdag sa isang contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Magpadala ng SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Gumawa ng video call"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"I-block ang numero"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> (na) bagong hindi nasagot na tawag"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Wala pang tao sa iyong speed dial"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Magdagdag ng paborito"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Wala ka pang sinumang mga contact"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Magdagdag ng contact"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Pindutin ang larawan upang makita ang lahat ng numero o pindutin nang matagal upang ayusing muli"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Alisin"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Mag-video call"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Magpadala ng mensahe"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Mga detalye ng tawag"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Tawagan ang/si <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Hindi nasagot na tawag mula kay/sa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Nasagot na tawag mula kay/sa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Hindi pa nababasang voicemail mula sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Voicemail mula sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Tawag kay/sa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"sa <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Tumawag"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Tawagan ang/si <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"I-video call si/ang <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Makinig sa voicemail mula sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"I-play ang voicemail mula sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"I-pause ang voicemail mula sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"I-delete ang voicemail mula sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> bagong voicemail</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> na bagong voicemail</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Gumawa ng contact para kay/sa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Idagdag si/ang <xliff:g id="NAMEORNUMBER">^1</xliff:g> sa umiiral nang contact"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Mga detalye ng tawag para sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Na-delete mula sa history ng tawag"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Ngayon"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Kahapon"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Mas Luma"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Listahan ng mga tawag"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"I-on ang speaker."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"I-off ang speaker."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Mag-play nang mas mabilis."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Mag-play nang mas mabagal."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Simulan o i-pause ang pag-playback."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Mga display option"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Tunog at pag-vibrate"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Pagiging Naa-access"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Ringtone ng telepono"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Mag-vibrate din para sa tawag"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Mga dialpad tone"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tagal ng tunog ng dialpad"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Mahaba"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Mga mabilisang tugon"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Mga Tawag"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Pagba-block ng tawag"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Pansamantalang na-off ang call blocking"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Na-disable ang pagba-block ng tawag dahil nakipag-ugnayan ka sa mga pang-emergency na serbisyo mula sa teleponong ito sa nakalipas na 48 oras. Awtomatiko itong muling i-enable kapag nag-expire na ang 48 oras."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"I-import ang mga numero"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Minarkahan mo na dati ang ilang tumatawag na awtomatikong ipadala sa voicemail sa pamamagitan ng iba pang mga app."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Tingnan ang Numero"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"I-import"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Hindi nakapag-import"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Alisin sa pagkaka-block ang numero"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Magdagdag ng numero"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Iba-block ang mga tawag mula sa mga numerong ito at awtomatikong ide-delete ang mga voicemail."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Iba-block ang mga tawag mula sa numerong ito, ngunit makakapag-iwan pa rin sila sa iyo ng mga voicemail."</string>
+    <string name="block_list" msgid="7760188925338078011">"Mga naka-block na numero"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Hindi wasto ang <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Naka-block na ang <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Na-disable ang pagba-block ng tawag sa loob ng 48 oras"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Na-disable dahil tumawag para sa emergency."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Account sa pagtawag"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"I-on"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Magtakda ng mga pahintulot"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Upang i-enable ang speed dial, i-on ang pahintulot ng Mga Contact."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Upang makita ang iyong log ng tawag, i-on ang pahintulot ng Telepono."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Upang makita ang iyong mga contact, i-on ang pahintulot ng Mga Contact."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Upang ma-access ang iyong voicemail, i-on ang pahintulot ng Telepono."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Upang hanapin ang iyong mga contact, i-on ang mga pahintulot sa Mga Contact."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Upang tumawag, i-on ang pahintulot ng Telepono."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Walang pahintulot ang app ng Telepono na mag-write sa mga setting ng system."</string>
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
new file mode 100644
index 0000000..c528f4d
--- /dev/null
+++ b/res/values-tr/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefon Tuş Takımı"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Çağrı geçmişi"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Hatalı numarayı bildir"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Numarayı kopyala"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Çeviri yazıyı kopyala"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Numarayı engelle"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefon engellendi"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Numaranın engellemesini kaldır"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefonun engellemesi kaldırıldı"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"GERİ AL"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Sil"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Telefon etmeden önce numarayı düzenle"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Çağrı geçmişini temizle"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Sesli mesajı sil"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Sesli mesaj silindi"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"GERİ AL"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Çağrı geçmişi temizlensin mi?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Bu işlem, geçmişinizdeki tüm çağrıları silecek"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Çağrı geçmişi temizleniyor…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Cevapsız çağrı"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"İşle ilgili cevapsız çağrı"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Cevapsız çağrılar"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> cevapsız çağrı"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Geri ara"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"İleti"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Sesli Mesaj </item>
+      <item quantity="one">Sesli Mesaj</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Oynat"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Yeni sesli mesj gönderen: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Sesli mesaj oynatılamadı"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Sesli mesaj yükleniyor…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Sesli mesaj yüklenemedi"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Yalnızca sesli mesaj içeren çağrılar"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Yalnızca gelen çağrılar"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Yalnızca giden çağrılar"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Yalnızca cevapsız çağrılar"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Görsel sesli mesaj"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Herhangi bir numarayı aramak zorunda kalmadan sesli mesajınızı görün ve dinleyin. Bu işlem için veri ücreti alınabilir."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Ayarlar"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Sesli mesaj güncellemesi yok"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Yeni sesli mesaj bekliyor. Şu anda yüklenemiyor."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Sesli mesajınızı yapılandırın"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Ses kullanılamıyor"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Yapılandır"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Sesli mesaj ara"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Sayı seçin"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Sayı seçin"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Bu tercihi anımsa"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ara"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"çevir"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"çevrilecek numara"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Oynatmayı başlat veya durdur"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Hoperlörü aç veya kapat"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Oynatma konumunu ayarla"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Oynatma hızını azalt"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Oynatma hızını artır"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Çağrı Geçmişi"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Diğer seçenekler"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"tuş takımı"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Yalnızca gidenleri göster"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Yalnızca gelenleri göster"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Yalnızca cevapsızları göster"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Yalnızca sesli msajları göster"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Tüm çağrıları göster"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2 saniyelik duraklama ekle"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Bekleme ekle"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Ayarlar"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Yeni kişi"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Tüm kişiler"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Çağrı ayrıntıları"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Ayrıntı yok"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Telefon tuş takımını kullan"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Çağrıya dön"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Çağrı ekle"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Gelen çağrı"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Giden çağrı"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Cevapsız çağrı"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Gelen video görüşmesi isteği"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Giden video görüşmesi isteği"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Cevapsız video görüşmesi isteği"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Sesli mesaj"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Reddedilen çağrı"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Engellenen çağrı"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Gelen çağrılar"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Sesli mesajı oynat"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Kişiyi görüntüle: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Sesli arama yap: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> için kişi ayrıntıları"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> çağrı."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video görüşmesi."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Şuraya SMS gönder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Dinlenilmemiş sesli mesaj"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Sesli arama başlat"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Çağrı yap: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Bilinmiyor"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Sesli Mesaj"</string>
+    <string name="private_num" msgid="6374339738119166953">"Özel numara"</string>
+    <string name="payphone" msgid="7726415831153618726">"Ankesörlü telefon"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> sn."</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> dk. <xliff:g id="SECONDS">%s</xliff:g> sn."</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Bu numara aranamaz"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Sesli mesajı yapılandırmak için Menü &gt; Ayarlar\'a gidin."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Sesli mesaja çağrı yapmak için öncelikle Uçak modunu kapatın."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Yükleniyor..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM karttan yükleniyor..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM kart kişileri"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Kullanılabilir rehber uygulaması yok"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Sesli arama kullanılamaz"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Telefon uygulaması devre dışı bırakıldığından telefon edilemiyor."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Bu cihazda bu işlem için uygun uygulama yok"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Kişilerde ara"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Numara ekleyin veya kişi arayın"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Çağrı geçmişiniz boş"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Telefon et"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Cevapsız çağirınız yok."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Sesli mesaj gelen kutunuz boş."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Yalnızca favori kişileri göster"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Çağrı Geçmişi"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Tümü"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Cevapsız"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Sesli Mesaj"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefon engellensin mi?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Bu numaradan gelen çağrılar engellenecek ve sesli mesajlar otomatik olarak silinecektir."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Bu numaradan gelen çağrılar engellenecek, ancak arayan kişi yine de size sesli mesaj bırakabilecektir."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"ENGELLE"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefonun engellemesi kaldırılsın mı?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Bu numaranın artık sizi araması engellenmeyecek."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"ENGELLEMEYİ KALDIR"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Hızlı arama"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Çağrı Geçmişi"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kişiler"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Sesli mesaj"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Favorilerden kaldırıldı"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Geri al"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefon et: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Yeni kişi oluştur"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Bir kişiye ekle"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS gönder"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Video görüşmesi yap"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Numarayı engelle"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> yeni cevapsız çağrı"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Hızlı arama listenizde henüz kimse yok"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Favori ekle"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Henüz kayıtlı kişi yok"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Kişi ekle"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Tüm numaraları görmek için resme dokunun veya yeniden sıralamak için dokunup basılı tutun"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Kaldır"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video görüşmesi"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"İleti gönder"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Çağrı ayrıntıları"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Telefon et: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Cevapsız çağrı: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Cevaplanan çağrı: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Dinlenmemiş sesli posta: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Sesli posta: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Yapılan çağrı: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> üzerinde"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telefon et"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Telefon et: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ile video görüşmesi yap."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Şu numaradan gelen sesli mesajı dinle: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> tarafından kaydedilmiş sesli mesajı çal"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> tarafından kaydedilmiş sesli mesajı duraklat"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> tarafından kaydedilmiş sesli mesajı sil"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> yeni sesli mesaj</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> yeni sesli mesaj</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> için kişi oluştur"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> bilgisini mevcut kişiye ekle"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> için çağrı ayrıntıları"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Çağrı geçmişinden silindi"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Bugün"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Dün"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Daha eski"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Çağrı listesi"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Hoparlörü açın."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Hoparlörü kapatın."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Daha hızlı çalın."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Daha yavaş çalın."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Çalmayı başlatın veya duraklatın."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Görüntüleme seçenekleri"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ses ve titreşim"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Erişilebilirlik"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Telefon zil sesi"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Çağrılarda ayrıca titret"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tuş takımı tonları"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tuş takımı ses uzunluğu"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Uzun"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hızlı yanıtlar"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Çağrılar"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Çağrı engelleme"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Çağrı engelleme geçici olarak kapalı"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Son 48 saat içinde bu telefondan acil servislerle iletişimde bulunduğunuz için çağrı engelleme modu devre dışı bırakıldı. 48 saatlik süre dolduktan sonra çağrı engelleme modu otomatik olarak tekrar etkinleştirilecektir."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Numaraları içe aktar"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Bazı arayanları, diğer uygulamalar aracılığıyla otomatik olarak sesli mesaj gönderilmesi için önceden işaretlediniz."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Numaraları Görüntüle"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"İçe aktar"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"İçe aktarma başarısız oldu"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Numaranın engellemesini kaldır"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Numara ekle"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Bu numaralardan gelen çağrılar engellenecek ve sesli mesajlar otomatik olarak silinecektir."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Bu numaralardan gelen çağrılar engellenecek, ancak arayan kişiler yine de size sesli mesaj bırakabileceklerdir."</string>
+    <string name="block_list" msgid="7760188925338078011">"Engellenen numaralar"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefon geçersiz."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefon zaten engellendi."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Çağrı engelleme 48 saat süreyle devre dışı bırakıldı"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Acil durum çağrısı yapıldığından devre dışı bırakıldı."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Çağrı hesapları"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Aç"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"İzinleri ayarla"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Hızlı aramayı etkinleştirmek için Kişiler iznini açın."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Çağrı günlüğünüzü görmek için Telefon iznini açın."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Kişilerinizi görmek için Kişiler iznini açın."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Sesli mesajınıza erişmek için Telefon iznini açın."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Kişilerinizde arama yapmak için Kişiler izinlerini açın."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Telefon etmek için Telefon iznini açın."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefon uygulamasının sistem ayarlarına yazma izni yok."</string>
+</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
new file mode 100644
index 0000000..001ecc7
--- /dev/null
+++ b/res/values-uk/strings.xml
@@ -0,0 +1,259 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Телефон"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Цифрова клавіатура"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Тел."</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Історія дзвінків"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Повідомити про неправильний номер"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Копіювати номер"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Копіювати транскрипцію"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Заблокувати номер"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> заблоковано"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Розблокувати номер"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> розблоковано"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"ВІДМІНИТИ"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Видалити"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Редагувати номер перед викликом"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Очистити історію дзвінків"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Видалити голосову пошту"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Видалено"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"ВІДМІНИТИ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Очистити історію дзвінків?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"З історії буде видалено всі дзвінки"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Очищення історії дзвінків…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Номер телефону"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Пропущений виклик"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Пропущений дзвінок на робочий телефон"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Пропущені виклики"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"Пропущено викликів: <xliff:g id="NUM_MISSED_CALLS">%s</xliff:g>"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Передзвонити"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Повідомлення"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> голосове повідомлення </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> голосові повідомлення </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> голосових повідомлень </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> голосових повідомлень </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Відтворити"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова голосова пошта від <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Не вдалося відтворити голосову пошту"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Завантаження голосової пошти…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Не вдалося завантажити голосову пошту"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Лише виклики з голосовою поштою"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Лише вхідні виклики"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Лише вихідні виклики"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Лише пропущені виклики"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Візуальна голосова пошта"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Переглядайте та слухайте голосову пошту, не телефонуючи. За передавання даних може стягуватися плата."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Налаштування"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Нові повідомлення голосової пошти недоступні"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Є нове повідомлення голосової пошти. Помилка завантаження."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Налаштуйте голосову пошту"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Аудіо недоступне"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Налаштувати"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Дзвон.на голос.пошту"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Вибрати номер"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Вибрати номер"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Пам\'ятати цей вибір"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"пошук"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"дзвон."</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"номер для набору"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Почати або зупинити відтворення"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Увімкнути або вимкнути гучний зв’язок"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Шукати місце відтворення"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Зменшити швидкість відтворення"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Збільшити швидкість відтворення"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Історія викликів"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Інші варіанти"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"цифрова клавіатура"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Показувати лише вихідні"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Показувати лише вхідні"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Показувати лише пропущені"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Показувати лише голосову пошту"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Показувати всі виклики"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Додати 2-сек. паузу"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Додати паузу"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Налаштування"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Новий контакт"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Усі контакти"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Деталі виклику"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Деталі недоступні"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Використовувати тональний набір"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Повернутися до поточного виклику"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Додати виклик"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Вхідний виклик"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Вихідний виклик"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Пропущений виклик"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Вхідний відеодзвінок"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Вихідний відеодзвінок"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Пропущений відеодзвінок"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Голосова пошта"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Відхилений виклик"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Заблокований виклик"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Вхідні виклики"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Відтворити голосову пошту"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Переглянути контакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Дзвонити: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Відомості про контакт <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"Викликів: <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Відеодзвінок."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Надіслати SMS контакту <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослухана голосова пошта"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Розпочати голосовий пошук"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Подзвонити на <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Невідомий"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Голосова пошта"</string>
+    <string name="private_num" msgid="6374339738119166953">"Приватний номер"</string>
+    <string name="payphone" msgid="7726415831153618726">"Таксофон"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> с"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> хв <xliff:g id="SECONDS">%s</xliff:g> с"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> о <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Не можна телефонувати на цей номер"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Щоб налаштувати голосову пошту, перейдіть у Меню &gt; Налаштування."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Щоб перевірити голосову пошту, спочатку вимкніть режим польоту."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Завантаження..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Завантаж. із SIM-карти…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Контакти SIM-карти"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Немає додатка з контактами"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Голосовий пошук недоступний"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Не вдається здійснити дзвінок, оскільки додаток Телефон вимкнено."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"На цьому пристрої немає додатка, який може виконати цю дію"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Пошук серед контактів"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Введіть або знайдіть номер"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Немає історії дзвінків"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Телефонувати"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Немає пропущених дзвінків."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Немає голосової пошти."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Показати лише вибрані"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Історія дзвінків"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Усі"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Пропущені"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Голосова пошта"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Заблокувати номер <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Виклики з цього номера блокуватимуться, а голосові повідомлення автоматично видалятимуться."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Виклики з цього номера блокуватимуться, але абонент зможе залишати голосові повідомлення."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"БЛОКУВАТИ"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Розблокувати номер <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Дзвінки з цього номера більше не блокуватимуться."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"РОЗБЛОКУВАТИ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Швидкий набір"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Історія дзвінків"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Контакти"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Голосова пошта"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Вилучено з вибраного"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Відмінити"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Набрати <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Створити новий контакт"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Додати в контакти"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Надіслати SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Здійснити відеодзвінок"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Заблокувати номер"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"Нових пропущених дзвінків: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Немає номерів для швидкого набору"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Додати номер"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Ще немає контактів"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Додати контакт"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Торкніться зображення, щоб побачити всі номери, або натисніть і утримуйте, щоб змінити порядок"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Видалити"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Відеодзвінок"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Надіслати повідомлення"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Деталі виклику"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>: телефонувати"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропущений дзвінок: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Прийнятий дзвінок: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Непрочитане голосове повідомлення: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Голосове повідомлення: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Вихідний дзвінок: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"Обліковий запис: <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Виклик"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Телефонувати: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Запросити контакт <xliff:g id="NAMEORNUMBER">^1</xliff:g> на відеодзвінок."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Слухати голосову пошту: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>: слухати голосову пошту"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>: призупинити голосову пошту"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>: видалити голосову пошту"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> нове повідомлення голосової пошти</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> нові повідомлення голосової пошти</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> нових повідомлень голосової пошти</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> нового повідомлення голосової пошти</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>: створити контакт"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>: додати до наявного контакта"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>: деталі виклику"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Видалено з історії дзвінків"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Сьогодні"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Учора"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Старіші"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Список дзвінків"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Увімкнути динамік."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Вимкнути динамік."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Відтворювати швидше."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Відтворювати повільніше."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Почати або призупинити відтворення."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Параметри відображення"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуки та вібрація"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Спеціальні можливості"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Сигнал дзвінка телефона"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Також вібрувати для дзвінків"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звуки цифрової клавіатури"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Тривалість сигналу цифрової клавіатури"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Стандартний сигнал"</item>
+    <item msgid="6177579030803486015">"Довгий сигнал"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Швидкі відповіді"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Дзвінки"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Блокування викликів"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Блокування дзвінків тимчасово вимкнено"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Блокування дзвінків вимкнено, оскільки ви зверталися з цього телефона в екстрені служби протягом останніх 48 годин. Ця функція автоматично ввімкнеться, коли мине 48 годин."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Імпортувати номери"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Ви позначили абонентів, чиї дзвінки мають автоматично спрямовуватися на голосову пошту через інші додатки."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Переглянути номери"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Імпортувати"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Не вдалось імпортувати"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Розблокувати номер"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Додати номер"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Виклики з цих номерів блокуватимуться, а голосові повідомлення автоматично видалятимуться."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Виклики з цих номерів блокуватимуться, але абоненти зможуть залишати голосові повідомлення."</string>
+    <string name="block_list" msgid="7760188925338078011">"Заблоковані номери"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> недісний."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"Номер <xliff:g id="NUMBER">%1$s</xliff:g> уже заблоковано."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Блокування викликів вимкнено на 48 годин"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Блокування вимкнено, оскільки ви зробили екстрений виклик."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Обл. записи для дзвінків"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Увімкнути"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Налаштувати дозволи"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Щоб активувати швидкий набір, увімкніть дозвіл \"Контакти\"."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Щоб переглянути журнал викликів, увімкніть дозвіл \"Телефон\"."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Щоб переглянути контакти, увімкніть дозвіл \"Контакти\"."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Щоб користуватися голосовою поштою, увімкніть дозвіл \"Телефон\"."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Щоб шукати контакти, увімкніть дозвіл \"Контакти\"."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Щоб зателефонувати, увімкніть дозвіл \"Телефон\"."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Додаток Телефон не має дозволу змінювати системні налаштування."</string>
+</resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
new file mode 100644
index 0000000..bc0d7de
--- /dev/null
+++ b/res/values-ur-rPK/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"فون"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"فون"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"فون ڈائل پیڈ"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"فون"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"کال کی سرگزشت"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"غلط نمبر کی رپورٹ کریں"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"نمبر کاپی کریں"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"ٹرانسکرپشن کاپی کریں"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"نمبر مسدود کریں"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> مسدود ہو گیا"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"نمبر غیر مسدود کریں"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> غیر مسدود ہو گیا"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"کالعدم کریں"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"حذف کریں"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"کال کرنے سے پہلے نمبر میں ترمیم کریں"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"کال کی سرگزشت صاف کریں"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"صوتی میل حذف کریں"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"صوتی میل حذف ہو گئی"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"کالعدم کریں"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"کال کی سرگزشت صاف کریں؟"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"یہ آپ کی سرگزشت سے سبھی کالز کو حذف کر دے گا"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"کال کی سرگزشت صاف کی جا رہی ہے…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"فون"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"چھوٹی ہوئی کال"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"کام سے متعلق چھوٹی ہوئی کال"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"چھوٹی ہوئی کالیں"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> چھوٹی ہوئی کالیں"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"واپس کال کریں"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"پیغام"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> صوتی میلز </item>
+      <item quantity="one">صوتی میل</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"چلائیں"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>، <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> کی جانب سے نیا صوتی میل"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"صوتی میل نہیں چلا سکا"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"صوتی میل لوڈ ہو رہا ہے…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"صوتی میل لوڈ نہیں کیا جا سکا"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"صرف صوتی میل والی کالیں"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"صرف آنے والی کالیں"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"صرف باہر جانے والی کالیں"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"صرف چھوٹی ہوئی کالیں"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"بصری صوتی میل"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"اپنی صوتی میل دیکھیں اور سنیں، آپ کو اس نمبر پر کال نہیں کرنی پڑے گی۔ ڈیٹا چارجز کا اطلاق  ہو سکتا ہے۔"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"ترتیبات"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"صوتی میل کی اپ ڈیٹس دستیاب نہیں ہیں"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"نئے صوتی میل کے منتظر۔ ابھی لوڈ نہیں کیا جا سکتا۔"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"اپنے صوتی میل کو ترتیب دیں"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"آڈیو دستیاب نہیں ہے"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"ترتیب دیں"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"صوتی میل کو کال کریں"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"نمبر منتخب کریں"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"نمبر منتخب کریں"</string>
+    <string name="make_primary" msgid="5829291915305113983">"یہ انتخاب یاد رکھیں"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"تلاش کریں"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ڈائل کریں"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ڈائل کرنے کیلئے نمبر"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"پلے بیک چلائیں یا روکیں"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"اسپیکر فون آن یا آف کریں"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"پلے بیک پوزیشن طلب کریں"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"پلے بیک کی شرح گھٹائیں"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"پلے بیک کی شرح بڑھائیں"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"کال کی سرگزشت"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"مزید اختیارات"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ڈائل پیڈ"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"صرف باہر جانے والی دکھائیں"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"صرف آنے والی دکھائیں"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"صرف چھوٹی ہوئی دکھائیں"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"صرف صوتی میلز دکھائیں"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"سبھی کالیں دکھائیں"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2 سیکنڈ کا توقف شامل کریں"</string>
+    <string name="add_wait" msgid="3360818652790319634">"انتظار شامل کریں"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"ترتیبات"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"نیا رابطہ"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"سبھی رابطے"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"کال کی تفصیلات"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"تفصیلات دستیاب نہیں ہیں"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ٹچ ٹون کی پیڈ کا استعمال کریں"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"جاری کال پر واپس لوٹیں"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"کال شامل کریں"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"آنے والی کال"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"باہر جانے والی کال"</string>
+    <string name="type_missed" msgid="2720502601640509542">"چھوٹی ہوئی کال"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"آنے والی ویڈیو کال"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"کی جانے والی ویڈیو کال"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"چھوٹی ہوئی ویڈیو کال"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"صوتی میل"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"مسترد شدہ کال"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"مسدود شدہ کال"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"آنے والی کالیں"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"صوتی میل چلائیں"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"رابطہ <xliff:g id="NAME">%1$s</xliff:g> دیکھیں"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> کو کال کریں"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> کیلئے رابطہ کی تفصیلات"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> کالیں۔"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ویڈیو کال۔"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"‏<xliff:g id="NAME">%1$s</xliff:g> پر SMS بھیجیں"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"نہ سنا ہوا صوتی میل"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"صوتی تلاش شروع کریں"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> کو کال کریں"</string>
+    <string name="unknown" msgid="740067747858270469">"نامعلوم"</string>
+    <string name="voicemail" msgid="3851469869202611441">"صوتی میل"</string>
+    <string name="private_num" msgid="6374339738119166953">"نجی نمبر"</string>
+    <string name="payphone" msgid="7726415831153618726">"بامعاوضہ فون"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> سیکنڈ"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> منٹ <xliff:g id="SECONDS">%s</xliff:g> سیکنڈ"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> بوقت <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"اس نمبر پر کال نہیں کر سکتے ہیں"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"صوتی میل تشکیل دینے کیلئے، مینو &gt; ترتیبات پر جائیں۔"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"صوتی میل کو کال کرنے کیلئے، پہلے ہوائی جہاز طرز آف کریں۔"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"لوڈ ہو رہا ہے…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"‏SIM کارڈ سے لوڈ ہو رہا ہے…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"‏SIM کارڈ کے رابطے"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"رابطوں کی کوئی ایپ دستیاب نہیں ہے"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"صوتی تلاش دستیاب نہیں ہے"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"فون کال نہیں کی جا سکتی ہے کیونکہ فون ایپلیکیشن کو غیر فعال کر دیا گیا ہے۔"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"اس آلہ پر اس کیلئے کوئی ایپ نہیں ہے"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"رابطے تلاش کریں"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"نمبر شامل کریں یا رابطے تلاش کریں"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"آپ کی کال کی سرگزشت خالی ہے"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"ایک کال کریں"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"آپ کے پاس کوئی چھوٹی ہوئی کالز نہیں ہیں۔"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"آپ کا صوتی میل ان باکس خالی ہے۔"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"صرف پسندیدہ دکھائیں"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"کال کی سرگزشت"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"سبھی"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"چھوٹی ہوئی"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"صوتی میل"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> مسدود کریں؟"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"اس نمبر سے کالز مسدود ہوجائیں گی اور صوتی میلز خودبخزد جذف ہو جائیں گی۔"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"اس نمبر سے کالز مسدود ہو جائیں گی گی لیکن ممکن ہے کالر پھر بھی آپ کیلئے صوتی میلز چھوڑ پائے۔"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"مسدود کریں"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> غیر مسدود کریں؟"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"اس نمبر پر سے آپ کو کال کرنا مزید مسدود نہیں رہے گا۔"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"غیر مسدود کریں"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"اسپیڈ ڈائل"</string>
+    <string name="tab_history" msgid="2563144697322434940">"کال کی سرگزشت"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"رابطے"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"صوتی میل"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"پسندیدہ سے ہٹا دیا گیا"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"کالعدم کریں"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> کو کال کریں"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"نیا رابطہ بنائیں"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"رابطے میں شامل کریں"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"‏SMS بھیجیں"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ویڈیو کال کریں"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"نمبر مسدود کریں"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> نئی چھوٹی ہوئی کالیں"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"آپ کے اسپیڈ ڈائل پر ابھی تک کوئی نہیں ہے"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"ایک پسندیدہ شامل کریں"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"آپ کے پاس ابھی تک کوئی رابطے نہیں ہیں"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"ایک رابطہ شامل کریں"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"سبھی نمبرز دیھکنے کیلئے تصویر ٹچ کریں یا دوبارہ ترتیب دینے کیلئے ٹچ کریں اور دبائے رکھیں"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"ہٹائیں"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ویڈیو کال"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"پیغام بھیجیں"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"کال کی تفصیلات"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کو کال کریں"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g> کی جانب سے چھوٹی ہوئی کال۔"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g> کی جانب سے جواب دی گئی کال۔"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"بغیر پڑھی گئی صوتی میل منجانب <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>۔"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"صوتی میل منجانب <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>۔"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g> پر کال کریں۔"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> پر"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"کال کریں"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کو کال کریں"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کو ویڈیو کال کریں۔"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> سے صوتی میل سنیں"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> سے صوتی میل چلائیں"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> سے صوتی میل موقوف کریں"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> سے صوتی میل حذف کریں"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> نئی صوتی میلز</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> نئی صوتی میل </item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کیلئے رابطہ بنائیں"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کو موجودہ رابطہ میں شامل کریں"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کیلئے کال کی تفصیلات"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"کال کی سرگزشت سے حذف کر دیا گیا"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ﺁﺝ"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"گزشتہ کل"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"قدیم تر"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"کالز کی فہرست"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"اسپیکر کو آن کر دیں۔"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"اسپیکر کو آف کر دیں۔"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"تیزی سے چلائیں۔"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"آہستہ چلائیں۔"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"پلے بیک شروع یا موقوف کریں۔"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">"، "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ڈسپلے کے اختیارات"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"آوازیں اور وائبریشن"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"فون رِنگ ٹون"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"کالز کیلئے وائبریٹ بھی کرے"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ڈائل پیڈ ٹونز"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ڈائل پیڈ ٹون کی لمبائی"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"حسب معمول"</item>
+    <item msgid="6177579030803486015">"طویل"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"فوری جوابات"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"کالز"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"کال مسدود کرنا"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"کال مسدود کرنا عارضی طور پر آف ہے"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"کال مسدود کرنا غیر فعال کر دیا گیا ہے کیونکہ آپ نے پچھلے 48 گھنٹوں میں اس فون سے ہنگامی سروسز کے ساتھ رابطہ کیا تھا۔ جب 48 گھنٹے کا دورانیہ ختم ہوگا تو یہ خودکار طور پر دوبارہ فعال ہو جائے گا۔"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"نمبرز درآمد کریں"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"آپ نے پہلے کچھ کالرز کو خودکار طور پر بذریعہ دیگر ایپس صوتی میل کو بھیجنا نشان زد کیا تھا۔"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"نمبرز دیکھیں"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"درآمد کریں"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"درآمد کرنا ناکام ہوگیا"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"نمبر غیر مسدود کریں"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"نمبر شامل کریں"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"ان نمبرز سے کالز مسدود ہوجائیں گی اور صوتی میلز خودبخود جذف ہو جائیں گی۔"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"ان نمبرز سے کالز مسدود ہو جائیں گی گی لیکن ممکن ہے وہ پھر بھی آپ کیلئے صوتی میلز چھوڑ پائیں۔"</string>
+    <string name="block_list" msgid="7760188925338078011">"مسدود کردہ نمبرز"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> غلط ہے۔"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> پہلے ہی مسدود ہے۔"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"کال مسدود کرنا 48 گھنٹے کیلئے غیر فعال ہو گیا"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"غیر فعال ہو گیا کیونکہ ایک ہنگامی کال کی گئی تھی۔"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"کالنگ اکاؤنٹس"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"آن کریں"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"اجازتیں طے کریں"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"اسپیڈ ڈائل کو فعال کرنے کیلئے رابطوں کی اجازت آن کریں۔"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"اپنا کال لاگ دیکھنے کیلئے فون کی اجازت آن کریں۔"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"اپنے رابطے دیکھنے کیلئے رابطوں کی اجازت آن کریں۔"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"اپنی صوتی میل تک رسائی کیلئے فون کی اجازت آن کریں۔"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"اپنے رابطوں کو تلاش کرنے کیلئے رابطوں کی اجازتیں آن کریں۔"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"کال کرنے کیلئے فون کی اجازت آن کریں۔"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"فون ایپ کے پاس سسٹم ترتیبات کو لکھنے کی اجازت نہیں ہے۔"</string>
+</resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
new file mode 100644
index 0000000..1ec0c8f
--- /dev/null
+++ b/res/values-uz-rUZ/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Telefon"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Telefon raqam terish paneli"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Qo‘ng‘iroqlar tarixi"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Raqam noto‘g‘ri aniqlandi"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Raqamdan nusxa olish"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Transkripsiyadan nusxa olish"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Raqamni bloklash"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami bloklandi"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Raqamni blokdan chiqarish"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami blokdan chiqarildi"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"QAYTARISH"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"O‘chirish"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Raqamni o‘zgartirish va telefon qilish"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Qo‘ng‘iroqlar tarixini tozalash"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Ovozli xabarni o‘chirish"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ovozli pochta o‘chirildi"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"QAYTARISH"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Qo‘ng‘iroqlar tarixi tozalansinmi?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Barcha qo‘ng‘iroqlar tarixi o‘chib ketadi."</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Qo‘ng‘iroqlar tarixi tozalanmoqda…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Telefon"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Javobsiz qo‘ng‘iroq"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Javobsiz ishchi qo‘ng‘irog‘i"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Javobsiz qo‘ng‘iroqlar"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> ta javobsiz qo‘ng‘iroq"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Telefon qilish"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"SMS yuborish"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ta ovozli xabar </item>
+      <item quantity="one">Ovozli xabar</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Tinglash"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>dan yangi ovozli xabar"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Ovozli xabarni eshitib bo‘lmadi"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Ovozli xabar yuklanmoqda…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Ovozli xabarni yuklab bo‘lmadi"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Faqat ovozli xabar qo‘ng‘iroqlari"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Faqat kiruvchi qo‘ng‘iroqlar"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Faqat chiquvchi qo‘ng‘iroqlar"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Faqat javobsiz qo‘ng‘iroqlar"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Vizual ovozli xabar"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Ovozli xabarlarni abonentga qo‘ng‘iroq qilmasdan ko‘rng yoki eshiting. Internet-trafik uchun to‘lov olinishi mumkin."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Sozlamalar"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Yangi ovozli xabarlar yo‘q"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Yangi ovozli xabar kutib turibdi. Uni hozir yuklab bo‘lmaydi."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Ovozli pochtangizni sozlang"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio mavjud emas"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Sozlash"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Ovoz xabarga qo‘ng‘."</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Raqamni tanlang"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Raqamni tanlang"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Ushbu tanlov eslab qolinsin"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"qidiruv"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"terish"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"terish uchun raqam"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Ijroni boshlash yoki to‘xtatish"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Karnayni yoqish yoki o‘chirish"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Ijro vaziyatini qidirish"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Ijro tezligini kamaytirish"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Ijro tezligini oshirish"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Qo‘ng‘iroqlar tarixi"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Qo‘shimcha sozlamalar"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"terish paneli"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Chiquvchi qo‘ng‘-ni ko‘rsatish"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Kiruvchi qo‘n-larni ko‘rsatish"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Javobsiz qo‘n-larni ko‘rsatish"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Ovozli xabarlarni ko‘rsatish"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Barcha qo‘n-larni ko‘rsatish"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2 soniyalik pauza qo‘shish"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Kutishni qo‘shish"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Sozlamalar"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Yangi kontakt"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Barcha kontaktlar"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Qo‘ng‘iroq tafsilotlari"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Tafsilotlar mavjud emas"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Tovushli raqam tergich"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Qo‘ng‘iroqqa qaytish"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Qo‘ng‘iroq qo‘shish"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Kiruvchi qo‘ng‘iroq"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Chiquvchi qo‘ng‘iroq"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Javobsiz qo‘ng‘iroq"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Kiruvchi videoqo‘ng‘iroq"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Chiquvchi videoqo‘ng‘iroq"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Javobsiz videoqo‘ng‘iroq"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Ovozli xabar"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Rad qilingan qo‘ng‘iroq"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Bloklangan qo‘ng‘iroq"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Kiruvchi qo‘ng‘iroqlar"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Ovozli xabarni eshitish"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> kontaktini ko‘rish"</string>
+    <string name="description_call" msgid="3443678121983852666">"Qo‘ng‘iroq: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> uchun kontakt ma’lumotlari"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ta qo‘ng‘iroq."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video qo‘ng‘iroq."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g>ga SMS yuborish"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ochilmagan ovozli xabar"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Ovozli qidiruvni boshlash"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Qo‘ng‘iroq: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Noma’lum"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Ovozli xabar"</string>
+    <string name="private_num" msgid="6374339738119166953">"Shaxsiy raqam"</string>
+    <string name="payphone" msgid="7726415831153618726">"Taksofon"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> soniya"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> daq <xliff:g id="SECONDS">%s</xliff:g> son"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Bu raqamga qo‘ng‘iroq qilib bo‘lmaydi"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ovozli xabarni sozlash uchun \"Menyu\" &gt; \"Sozlamalar\"ga o‘ting."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Ovozli xabar jo‘natish uchun, avval \"Parvoz rejimi\"ni o‘chiring."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Yuklanmoqda…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM kartadan yuklanmoqda…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM karta kontaktlari"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Hech qanday kontakt ilovasi yo‘q"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Ovozli qidiruv mavjud emas"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Telefon ilovasi o‘chirib qo‘yilgani sababli telefon qo‘ng‘iroqlarini amalga oshirib bo‘lmaydi."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Qurilmada buni bajaradigan ilova yo‘q"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Kontakt qidirish"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Raqam qo‘shish yoki kontaktlardan qidirish"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Qo‘ng‘iroqlar tarixi bo‘m-bo‘sh"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Qo‘ng‘iroq qilish"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Sizda hech qanday javobsiz qo‘ng‘iroq yo‘q."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Ovozli pochta qutisi bo‘m-bo‘sh."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Faqat saralar ko‘rsatilsin"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Qo‘ng‘iroqlar tarixi"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Barchasi"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Javobsiz"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Ovozli xabar"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami bloklanilsinmi?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Bu raqamdan kelgan qo‘ng‘iroqlar bloklanadi va ovozli xabari avtomatik o‘chiriladi."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Bu raqamdan kelgan qo‘ng‘iroqlar bloklanadi, lekin raqam egasi sizga ovozli xabar qoldira oladi."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"BLOKLASH"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami blokdan chiqarilsinmi?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Ushbu raqamdan endi sizga qo‘ng‘iroq qilinganda bloklanmaydi."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"BLOKDAN CHIQARISH"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Tezkor terish"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Qo‘ng‘iroqlar tarixi"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktlar"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Ovozli pochta"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Tanlanganlardan o‘chirilgan"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Bekor qilish"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Qo‘ng‘iroq: <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Yangi kontakt yaratish"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Kontaktlarga qo‘shish"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS yuborish"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videoqo‘ng‘iroq qilish"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Raqamni bloklash"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ta javobsiz qo‘ng‘iroq"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Tezkor raqam tergich ro‘yxatida hech kim yo‘q"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Sevimli kontakt qo‘shing"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Sizda hali hech qanday kontakt yo‘q"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Yangi kontakt qo‘shing"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Barcha raqamlarni ko‘rish uchun rasm ustiga bosing. Joyini o‘zgartirish uchun uni bosib turing."</string>
+    <string name="remove_contact" msgid="1080555335283662961">"O‘chirish"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video qo‘ng‘iroq"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"SMS yuborish"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Qo‘ng‘iroq tafsilotlari"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Qo‘ng‘iroq qilish: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Qo‘ng‘iroq javobsiz qoldirildi: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Qo‘ng‘iroqqa javob berildi: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"O‘qilmagan ovozli xabar (<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Ovozli xabar (<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Qo‘ng‘iroq qilindi: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> orqali"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Qo‘ng‘iroq qilish"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Qo‘ng‘iroq qilish: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Video qo‘ng‘iroq qilish: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> kontaktidan kelgan ovozli xabarni tinglash"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> tomonidan yuborilgan ovozli xabarni eshitish"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> tomonidan yuborilgan ovozli xabarni pauza qilish"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> tomonidan yuborilgan ovozli xabarni o‘chirish"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ta yangi ovozli xabar</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ta yangi ovozli xabar</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Yangi kontakt yaratish: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Mavjud kontaktlarga qo‘shish: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> – qo‘ng‘iroq tafsilotlari"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Qo‘ng‘iroqlar tarixidan o‘chirib tashlandi"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Bugun"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Kecha"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Eskiroq"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Qo‘ng‘iroqlar ro‘yxati"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Karnayni yoqish."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Karnayni o‘chirib qo‘yish."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Tezro ijro etish."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Sekinroq ijro etish."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Ijroni boshlash yoki to‘xtatish"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Ko‘rsatish parametrlari"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ovoz va tebranish"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Maxsus imkoniyatlar"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Telefon ringtoni"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Chaqiruv vaqtida tebranish"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tugmalar tovushi"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Klaviatura ohangi uzunligi"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"O‘rtacha"</item>
+    <item msgid="6177579030803486015">"Uzun"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Tezkor javoblar"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Qo‘ng‘iroqlar"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Qo‘ng‘iroqlarni bloklash"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Qo‘ng‘iroqlarni bloklash o‘chirilgan"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Oxirgi 48 soat ichida ushbu telefon orqali favqulodda xizmatlar bilan bog‘lanilganligi uchun qo‘ng‘iroqlarni bloklash o‘chirib qo‘yildi. 48 soatlik muddat tugagandan so‘ng bu avtomatik qayta yoqiladi."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Raqamlarni import qilish"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Ba’zi kiruvchi kontaktlaringiz boshqa ilovalar orqali avtomatik ovozli xabar yo‘llaydigan qilib belgilagansiz."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Sonini ko‘rish"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Import qilish"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Import qilib bo‘lmadi"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Raqamni blokdan chiqarish"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Raqam qo‘shish"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Bu raqamlardan kelgan qo‘ng‘iroqlar bloklanadi va ovozli xabarlari avtomatik o‘chiriladi."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Bu raqamlardan kelgan qo‘ng‘iroqlar bloklanadi, lekin raqam egalari sizga ovozli xabar qoldira olishadi."</string>
+    <string name="block_list" msgid="7760188925338078011">"Bloklangan raqamlar"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"Noto‘g‘ri raqam: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami allaqachon bloklangan."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Qo‘ng‘iroqlarni bloklash 48 soat muddatga o‘chirildi"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Favqulodda qo‘ng‘iroq amalga oshirilgani uchun o‘chirildi."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Qo‘ng‘iroq hisoblari"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Yoqish"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Ruxsatnomalarni sozlash"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Tezkor raqam terish uchun “Kontaktlar” ruxsatnomasini yoqing."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Qo‘ng‘iroqlaringiz ro‘yxatini ko‘rish uchun “Telefon” ruxsatnomasini yoqing."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Kontaktlaringizni ko‘rish uchun “Kontaktlar” ruxsatnomasini yoqing."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Ovozli pochtaga kirish uchun “Telefon” ruxsatnomasini yoqing."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Kontaktlarni qidirish uchun “Kontaktlar” ruxsatnomasini yoqing."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Qo‘ng‘iroq qilish uchun “Telefon” ruxsatnomasini yoqing."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Telefon ilovasida tizim sozlamalarini o‘zgartirish uchun ruxsat yo‘q."</string>
+</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
new file mode 100644
index 0000000..2629527
--- /dev/null
+++ b/res/values-vi/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Điện thoại"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Điện thoại"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Bàn phím số điện thoại"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Điện thoại"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Nhật ký cuộc gọi"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Báo cáo số không chính xác"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Sao chép số"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Sao chép bản ghi âm"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Chặn số"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"Đã chặn <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Bỏ chặn số"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"Đã bỏ chặn <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"HOÀN TÁC"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Xóa"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Chỉnh sửa số trước khi gọi"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Xóa nhật ký cuộc gọi"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Xóa thư thoại"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Đã xóa thư thoại"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"HOÀN TÁC"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Xóa nhật ký cuộc gọi?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Thao tác này sẽ xóa tất cả cuộc gọi khỏi nhật ký của bạn"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Đang xóa nhật ký cuộc gọi…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Điện thoại"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Cuộc gọi nhỡ"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Cuộc gọi nhỡ về công việc"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Cuộc gọi nhỡ"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> cuộc gọi nhỡ"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Gọi lại"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Tin nhắn"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Thư thoại </item>
+      <item quantity="one">Thư thoại</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Phát"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Thư thoại mới từ <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Không thể phát thư thoại"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Đang tải thư thoại…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Không thể tải thư thoại"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Chỉ cuộc gọi có thư thoại"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Chỉ cuộc gọi đến"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Chỉ cuộc gọi đi"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Chỉ cuộc gọi nhỡ"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Thư thoại kèm theo hình ảnh"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Xem và nghe thư thoại của bạn mà không phải thực hiện cuộc gọi. Bạn có thể mất phí dữ liệu."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Cài đặt"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Không có cập nhật thư thoại"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Đang chờ thư thoại mới. Không thể tải ngay bây giờ."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Thiết lập thư thoại của bạn"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Không có âm thanh"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Thiết lập"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Gọi thư thoại"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Chọn số"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Chọn số"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Nhớ lựa chọn này"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"tìm kiếm"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"quay số"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"số để quay"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Phát hoặc dừng phát lại"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Bật hoặc tắt loa ngoài"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Tìm kiếm vị trí phát lại"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Giảm tốc độ phát lại"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Tăng tốc độ phát lại"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Nhật ký cuộc gọi"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Tùy chọn khác"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"bàn phím số"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Chỉ hiển thị cuộc gọi đi"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Chỉ hiển thị cuộc gọi đến"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Chỉ hiển thị cuộc gọi nhỡ"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Chỉ hiển thị thư thoại"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Hiển thị tất cả cuộc gọi"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Thêm 2 giây dừng"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Thêm chờ"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Cài đặt"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Liên hệ mới"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Tất cả liên hệ"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Chi tiết cuộc gọi"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Không có chi tiết"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Sử dụng bàn phím số cảm ứng có âm"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Quay lại cuộc gọi đang thực hiện"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Thêm cuộc gọi"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Cuộc gọi đến"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Cuộc gọi đi"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Cuộc gọi nhỡ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Cuộc gọi điện video đến"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Cuộc gọi điện video đi"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Cuộc gọi điện video bị nhỡ"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Thư thoại"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Cuộc gọi bị từ chối"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Cuộc gọi bị chặn"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Cuộc gọi đến"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Phát thư thoại"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Xem thông tin liên hệ của <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Gọi <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Chi tiết liên lạc cho <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> cuộc gọi."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Gọi điện video."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Gửi SMS cho <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Thư thoại chưa nghe"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Bắt đầu tìm kiếm bằng giọng nói"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Gọi <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Không xác định"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Thư thoại"</string>
+    <string name="private_num" msgid="6374339738119166953">"Số cá nhân"</string>
+    <string name="payphone" msgid="7726415831153618726">"Điện thoại công cộng"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> giây"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> phút <xliff:g id="SECONDS">%s</xliff:g> giây"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> lúc <xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Không thể gọi số này"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Để thiết lập thư thoại, đi tới Menu &gt; Cài đặt."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Để gọi thư thoại, trước tiên hãy tắt chế độ trên Máy bay."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Đang tải…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Đang tải từ thẻ SIM…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Danh bạ trên thẻ SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Không có ứng dụng danh bạ"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Không có tính năng tìm kiếm bằng giọng nói"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Không thể thực hiện cuộc gọi điện thoại vì ứng dụng Điện thoại đã bị tắt."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Không có ứng dụng nào cho thao tác đó trên thiết bị này"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Tìm kiếm liên hệ"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Thêm số hoặc tìm kiếm danh bạ"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Nhật ký cuộc gọi của bạn trống"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Gọi điện"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Bạn không có cuộc gọi nhỡ nào."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Hộp thư thoại đến của bạn trống."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Chỉ hiển thị liên hệ ưa thích"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Nhật ký cuộc gọi"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Tất cả"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Bị nhỡ"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Thư thoại"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Chặn <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Các cuộc gọi từ số này sẽ bị chặn và thư thoại sẽ tự động bị xóa."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Các cuộc gọi từ số này sẽ bị chặn nhưng người gọi vẫn có thể để lại thư thoại cho bạn."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"CHẶN"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Bỏ chặn <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Số này sẽ không còn bị chặn gọi cho bạn nữa."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"BỎ CHẶN"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Quay số nhanh"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Nhật ký cuộc gọi"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Danh bạ"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Thư thoại"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Đã xóa khỏi liên hệ yêu thích"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Hoàn tác"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Gọi <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Tạo liên hệ mới"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Thêm vào liên hệ"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Gửi SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Gọi điện video"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Chặn số"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> cuộc gọi nhỡ mới"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Chưa có ai trong danh bạ quay số nhanh của bạn"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Thêm liên hệ quay số nhanh yêu thích"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Bạn chưa có bất kỳ liên hệ nào"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Thêm liên hệ"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Chạm vào hình ảnh để xem tất cả các số hoặc chạm và giữ để sắp xếp lại"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Xóa"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Cuộc gọi điện video"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Gửi tin nhắn"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Chi tiết cuộc gọi"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Gọi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Cuộc gọi nhỡ từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Cuộc gọi đã trả lời từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Thư thoại chưa đọc từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Thư thoại từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Gọi tới <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"trên <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Gọi"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Gọi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Gọi điện video cho <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Nghe thư thoại từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Phát thư thoại từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Tạm dừng thư thoại từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Xóa thư thoại từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> thư thoại mới</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> thư thoại mới</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Tạo địa chỉ liên hệ cho <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Thêm <xliff:g id="NAMEORNUMBER">^1</xliff:g> vào địa chỉ liên hệ hiện có"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Chi tiết cuộc gọi cho <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Đã xóa khỏi nhật ký cuộc gọi"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Hôm nay"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Hôm qua"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Cũ hơn"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Danh sách cuộc gọi"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Bật loa."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Tắt loa."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Phát nhanh hơn."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Phát chậm hơn."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Bắt đầu hoặc tạm dừng phát lại."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Tùy chọn hiển thị"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Âm thanh và rung"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Trợ năng"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Nhạc chuông điện thoại"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Đồng thời rung khi có cuộc gọi"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Âm bàn phím số"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Độ dài âm bàn phím số"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Thường"</item>
+    <item msgid="6177579030803486015">"Dài"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Trả lời nhanh"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Cuộc gọi"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Chặn cuộc gọi"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Tạm thời tắt chặn cuộc gọi"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Tính năng chặn cuộc gọi đã bị tắt vì bạn đã liên hệ với dịch vụ khẩn cấp từ điện thoại này trong vòng 48 giờ qua. Tính năng này sẽ được bật lại tự động sau khi khoảng thời gian 48 giờ kết thúc."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Nhập số"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Trước đây bạn đã đánh dấu một số người gọi sẽ được tự động gửi tới thư thoại qua các ứng dụng khác."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Xem số"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Nhập"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Nhập không thành công"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Bỏ chặn số"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Thêm số"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Cuộc gọi từ các số này sẽ bị chặn và thư thoại sẽ tự động bị xóa."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Cuộc gọi từ các số này sẽ bị chặn nhưng họ vẫn có thể để lại thư thoại cho bạn."</string>
+    <string name="block_list" msgid="7760188925338078011">"Số bị chặn"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> không hợp lệ."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> đã bị chặn."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Đã tắt tính năng chặn cuộc gọi trong 48 giờ"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Bị tắt vì bạn đã thực hiện cuộc gọi khẩn cấp."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Tài khoản gọi"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Bật"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Đặt quyền"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Để bật quay số nhanh, bật quyền đối với Danh bạ."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Để xem nhật ký cuộc gọi của bạn, bật quyền đối với Điện thoại."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Để xem danh bạ của bạn, bật quyền đối với Danh bạ."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Để truy cập thư thoại của bạn, bật quyền đối với Điện thoại."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Để tìm kiếm liên hệ của bạn, hãy bật quyền đối với Danh bạ."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Để thực hiện cuộc gọi, bật quyền đối với Điện thoại."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Ứng dụng Điện thoại không có quyền ghi vào cài đặt hệ thống."</string>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..bbc0423
--- /dev/null
+++ b/res/values-zh-rCN/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"电话"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"电话"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"电话拨号键盘"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"拨号"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"通话记录"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"报告错误的号码"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"复制号码"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"复制转录内容"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"屏蔽号码"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"已屏蔽 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"取消屏蔽号码"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"已取消屏蔽 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"撤消"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"删除"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"拨打之前修改号码"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"清除通话记录"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"删除语音邮件"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"语音邮件已删除"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"撤消"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"要清除通话记录吗?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"这会删除您的所有通话记录"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通话记录…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"打电话"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"未接电话"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"未接工作来电"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"未接电话"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 个未接电话"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"回电"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"发短信"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> 封语音邮件</item>
+      <item quantity="one">1 封语音邮件</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"播放"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>,<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"来自<xliff:g id="CALLER">%1$s</xliff:g>的新语音邮件"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"无法播放语音邮件"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"正在加载语音邮件…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"无法加载语音邮件"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"只显示语音信箱留言"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"只显示来电"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"只显示外拨电话"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"只显示未接来电"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"可视语音信箱"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"无需拨号就可以查看和收听您的语音邮件。不过,可能会产生额外的数据流量费。"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"设置"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"无法更新语音信箱"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"您有新的语音邮件,但目前无法加载。"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"设置您的语音信箱"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"无法播放音频"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"设置"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"呼叫语音信箱"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"选择号码"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"选择号码"</string>
+    <string name="make_primary" msgid="5829291915305113983">"记住此选择"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"搜索"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"拨打"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"要拨打的号码"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"开始或停止播放"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"打开或关闭扬声器"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"拖动到播放位置"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"减慢播放速度"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"加快播放速度"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"通话记录"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"更多选项"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"拨号键盘"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"仅显示外拨电话"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"只显示来电"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"只显示未接来电"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"只显示语音邮件"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"显示所有通话"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"延长暂停时间2秒"</string>
+    <string name="add_wait" msgid="3360818652790319634">"延长等待时间"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"设置"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"新建联系人"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"所有联系人"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"通话详情"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"无法获取详细信息"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"使用按键式键盘"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"返回正在进行的通话"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"添加通话"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"来电"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"外拨电话"</string>
+    <string name="type_missed" msgid="2720502601640509542">"未接电话"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"视频通话来电"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"拨出的视频通话"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"错过的视频通话"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"语音信箱"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"拒接的来电"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"屏蔽的来电"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"来电"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"播放语音邮件"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"查看联系人<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"呼叫<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>的详细联系信息"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g>次通话。"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"视频通话。"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"向<xliff:g id="NAME">%1$s</xliff:g>发送短信"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未收听的语音邮件"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"开始语音搜索"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"拨打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"未知"</string>
+    <string name="voicemail" msgid="3851469869202611441">"语音信箱"</string>
+    <string name="private_num" msgid="6374339738119166953">"私密号码"</string>
+    <string name="payphone" msgid="7726415831153618726">"公用电话"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> 分钟 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g><xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"无法拨打此号码"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"要设置语音信箱,请转到“菜单”&gt;“设置”。"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"要呼叫语音信箱,请先关闭飞行模式。"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"正在加载..."</string>
+    <string name="imei" msgid="3045126336951684285">"移动通信国际识别码"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"正从 SIM 卡中加载..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM卡联系人"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"没有可用的通讯录应用"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"无法使用语音搜索"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"“电话”应用已被停用,因此无法拨打电话。"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"此设备上没有可执行此操作的应用"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"搜索联系人"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"添加号码或搜索联系人"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"您没有任何通话记录"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"拨打电话"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"您没有任何未接电话。"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"您未收到任何语音邮件。"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"仅显示收藏的联系人"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"通话记录"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"全部"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"未接电话"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"语音邮件"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"要屏蔽 <xliff:g id="NUMBER">%1$s</xliff:g> 吗?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"系统将屏蔽该号码的来电,并将自动删除来电者发送的语音邮件。"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"系统将屏蔽该号码的来电,但来电者可能仍然能够给您发送语音邮件。"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"屏蔽"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"要取消屏蔽 <xliff:g id="NUMBER">%1$s</xliff:g> 吗?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"系统将不再屏蔽此号码的来电。"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"取消屏蔽"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"快速拨号"</string>
+    <string name="tab_history" msgid="2563144697322434940">"通话记录"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"通讯录"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"语音邮件"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"已从收藏中移除"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"撤消"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"拨打<xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"新建联系人"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"添加到联系人"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"发送短信"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"发起视频通话"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"屏蔽号码"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>个新的未接电话"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"您的快速拨号功能尚未收藏任何联系人"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"添加常用联系人"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"您还没有任何联系人"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"添加联系人"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"触摸图片可查看所有号码,触摸并按住可重新排序"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"移除"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"视频通话"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"发送短信"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"通话详情"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"与<xliff:g id="NAMEORNUMBER">^1</xliff:g>通话"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="PHONEACCOUNT">^4</xliff:g> 上 <xliff:g id="TIMEOFCALL">^3</xliff:g>来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="TYPEORLOCATION">^2</xliff:g>)的未接电话。"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="PHONEACCOUNT">^4</xliff:g> 上 <xliff:g id="TIMEOFCALL">^3</xliff:g>来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="TYPEORLOCATION">^2</xliff:g>)的已接电话。"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"<xliff:g id="PHONEACCOUNT">^4</xliff:g> 上 <xliff:g id="TIMEOFCALL">^3</xliff:g>来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="TYPEORLOCATION">^2</xliff:g>)的未读语音邮件。"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"<xliff:g id="PHONEACCOUNT">^4</xliff:g> 上 <xliff:g id="TIMEOFCALL">^3</xliff:g>来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="TYPEORLOCATION">^2</xliff:g>)的语音邮件。"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="TIMEOFCALL">^3</xliff:g>通过 <xliff:g id="PHONEACCOUNT">^4</xliff:g> 拨打给<xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="TYPEORLOCATION">^2</xliff:g>)的电话。"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"通过 <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"拨打电话"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"呼叫<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"与<xliff:g id="NAMEORNUMBER">^1</xliff:g>进行视频通话。"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"听取来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>的语音邮件"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"播放来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>的语音邮件"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"暂停来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>的语音邮件"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"删除来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>的语音邮件"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 封新的语音邮件</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 封新的语音邮件</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"为<xliff:g id="NAMEORNUMBER">^1</xliff:g>创建联系人信息"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"将<xliff:g id="NAMEORNUMBER">^1</xliff:g>添加到现有联系人"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"与<xliff:g id="NAMEORNUMBER">^1</xliff:g>的通话详情"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"已从通话记录中删除"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"今天"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"昨天"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"更早"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"通话清单"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"打开扬声器。"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"关闭扬声器。"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"快放。"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"慢放。"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"开始或暂停播放。"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"显示选项"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"提示音和振动"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"无障碍功能"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"手机铃声"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"有来电时响铃并振动"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"拨号键盘提示音"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"拨号键盘提示音长度"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"标准"</item>
+    <item msgid="6177579030803486015">"长"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"快速回复"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"通话"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"来电屏蔽"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"来电拦截功能已暂时关闭"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"来电拦截功能已停用,因为您在过去 48 小时内使用该手机拨打了紧急服务电话。系统会在 48 小时的期限结束后自动重新启用该功能。"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"导入号码"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"您曾通过其他应用将某些来电者设为自动转到语音信箱。"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"查看号码"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"导入"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"导入失败"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"取消屏蔽号码"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"添加号码"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"系统将屏蔽这些号码的来电,并将自动删除这些来电者发送的语音邮件。"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"系统将屏蔽这些号码的来电,但这些来电者可能仍然能够给您发送语音邮件。"</string>
+    <string name="block_list" msgid="7760188925338078011">"已屏蔽的号码"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> 无效。"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> 已被屏蔽。"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"来电拦截功能将停用 48 小时"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"此功能已停用,因为您拨打了紧急呼救电话。"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"通话帐号"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"开启"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"设置权限"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"要启用快速拨号功能,请开启“通讯录”权限。"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"要查看您的通话记录,请开启“电话”权限。"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"要查看您的联系人,请开启“通讯录”权限。"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"要使用您的语音信箱,请开启“电话”权限。"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"要搜索您的联系人,请开启“通讯录”权限。"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"要拨打电话,请开启“电话”权限。"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"电话应用不具备写入系统设置的权限。"</string>
+</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..2223dfc
--- /dev/null
+++ b/res/values-zh-rHK/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"電話"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"電話"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"手機撥號盤"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"通話記錄"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"報告錯誤號碼"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"複製號碼"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"複製內容轉錄"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"封鎖號碼"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"已封鎖 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"解除封鎖號碼"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"已解除封鎖 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"復原"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"刪除"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"在撥號前編輯號碼"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"清除通話記錄"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"刪除留言"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"已刪除留言信箱"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"復原"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"要清除通話記錄嗎?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"這會刪除所有通話記錄"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通話記錄…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"撥打電話"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"未接來電"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"未接工作來電"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"未接來電"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 個未接來電"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"回電"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"短訊"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> 個留言</item>
+      <item quantity="one">留言</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"播放"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"來自<xliff:g id="CALLER">%1$s</xliff:g>的新語音留言"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"無法播放留言"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"正在載入留言…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"無法載入留言"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"只顯示有留言的來電"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"只顯示來電"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"只顯示撥出電話"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"只顯示未接來電"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"視像留言信箱"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"檢視及聆聽您的語音留言,而無需撥號。可能需要支付數據用量費用。"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"設定"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"無法更新留言"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"有新留言,但目前無法載入。"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"設定您的留言信箱"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"無法使用音效"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"設定"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"致電語音信箱號碼"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"( <xliff:g id="COUNT">%1$d</xliff:g> ) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"選擇號碼"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"選擇號碼"</string>
+    <string name="make_primary" msgid="5829291915305113983">"記住這個選擇"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"搜尋"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"撥號"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"致電號碼"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"播放或停止播放"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"開啟或關閉揚聲器"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"指定播放位置"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"減慢播放速度"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"加快播放速度"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"通話記錄"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"更多選項"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"撥號鍵盤"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"只顯示撥出電話"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"只顯示來電"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"只顯示未接來電"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"僅顯示語音留言"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"顯示所有通話"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"新增 2 秒暫停功能"</string>
+    <string name="add_wait" msgid="3360818652790319634">"新增插播功能"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"設定"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"新增聯絡人"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"所有聯絡人"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"通話詳細資料"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"沒有詳細資訊"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"使用觸控音頻按鍵"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"返回進行中的通話"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"新增通話"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"來電"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"撥出電話"</string>
+    <string name="type_missed" msgid="2720502601640509542">"未接來電"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"視像通話來電"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"撥出的視像通話"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"未接視像通話"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"留言信箱"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"拒絕來電"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"封鎖來電"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"來電"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"播放語音留言"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"查看聯絡人<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"致電<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"「<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>」的聯絡人詳細資料"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> 次通話次數。"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"視像通話。"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"向 <xliff:g id="NAME">%1$s</xliff:g> 傳送短訊"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未聽取的語音留言"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"開始語音搜尋"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"未知"</string>
+    <string name="voicemail" msgid="3851469869202611441">"留言"</string>
+    <string name="private_num" msgid="6374339738119166953">"私人號碼"</string>
+    <string name="payphone" msgid="7726415831153618726">"公共電話"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g><xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"無法撥打這個電話號碼"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"如要設定留言信箱,請移至 [選單] &gt; [設定]。"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"如要致電留言信箱,請先關閉飛行模式。"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"正在載入..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"正在從 SIM 卡載入..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM 卡聯絡人"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"沒有可用的聯絡人應用程式"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"無法使用語音搜尋"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"由於「電話」應用程式已停用,因此無法打電話。"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"這部裝置上沒有可用的應用程式"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"搜尋聯絡人"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"新增號碼或搜尋聯絡人"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"您沒有通話記錄"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"撥號"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"您沒有未接來電。"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"您的留言信箱沒有留言。"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"只顯示我的最愛"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"通話記錄"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"全部"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"未接來電"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"留言信箱"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"要封鎖 <xliff:g id="NUMBER">%1$s</xliff:g> 嗎?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"將會封鎖這個號碼的來電,而留言將會自動刪除。"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"將會封鎖這個號碼的來電,但來電可能會轉駁至留言信箱。"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"封鎖"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"要解除封鎖 <xliff:g id="NUMBER">%1$s</xliff:g> 嗎?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"此號碼的來電封鎖將會解除。"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"解除封鎖"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"快速撥號"</string>
+    <string name="tab_history" msgid="2563144697322434940">"通話記錄"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"聯絡人"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"留言信箱"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"已從「我的最愛」中移除"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"復原"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"建立新聯絡人"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"加入到聯絡人"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"傳送短訊"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"進行視像通話"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"封鎖號碼"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> 個新的未接來電"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"沒有快速撥號聯絡人"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"新增快速撥號聯絡人"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"您沒有聯絡人"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"新增聯絡人"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"輕觸圖像以查看所有電話號碼,或輕觸並按住圖像以重新排序"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"移除"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"視像通話"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"傳送訊息"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"通話詳細資料"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"致電 <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"未接聽來電:<xliff:g id="NAMEORNUMBER">^1</xliff:g> (<xliff:g id="TIMEOFCALL">^3</xliff:g>,<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="PHONEACCOUNT">^4</xliff:g>)。"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"已接聽來電:<xliff:g id="NAMEORNUMBER">^1</xliff:g> (<xliff:g id="TIMEOFCALL">^3</xliff:g>,<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="PHONEACCOUNT">^4</xliff:g>)。"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"未收聽的留言來自 <xliff:g id="NAMEORNUMBER">^1</xliff:g> (<xliff:g id="TYPEORLOCATION">^2</xliff:g>),來電時間:<xliff:g id="TIMEOFCALL">^3</xliff:g>,撥打至 <xliff:g id="PHONEACCOUNT">^4</xliff:g>。"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"留言來自 <xliff:g id="NAMEORNUMBER">^1</xliff:g> (<xliff:g id="TYPEORLOCATION">^2</xliff:g>),來電時間:<xliff:g id="TIMEOFCALL">^3</xliff:g>,撥打至 <xliff:g id="PHONEACCOUNT">^4</xliff:g>。"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"致電:<xliff:g id="NAMEORNUMBER">^1</xliff:g> (<xliff:g id="TIMEOFCALL">^3</xliff:g>,<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="PHONEACCOUNT">^4</xliff:g>)。"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"使用 <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"撥號"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"致電 <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"與<xliff:g id="NAMEORNUMBER">^1</xliff:g>進行視像通話。"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"收聽來自「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的留言信箱"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"播放來自 <xliff:g id="NAMEORNUMBER">^1</xliff:g> 的語音留言"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"暫停來自 <xliff:g id="NAMEORNUMBER">^1</xliff:g> 的語音留言"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"刪除來自 <xliff:g id="NAMEORNUMBER">^1</xliff:g> 的語音留言"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>個新留言</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>個新留言</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"為<xliff:g id="NAMEORNUMBER">^1</xliff:g>建立聯絡人"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"加入<xliff:g id="NAMEORNUMBER">^1</xliff:g>至現有的聯絡人"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"與「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」通話的詳細資料"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"已從通話記錄中刪除"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"今天"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"昨天"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"較早"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"通話清單"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"開啟揚聲器。"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"關閉揚聲器。"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"加快播放速度。"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"放慢播放速度。"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"開始或暫停播放。"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"顯示選項"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"聲音和震動"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"無障礙功能"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"手機鈴聲"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"來電時同時震動"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"撥號盤音效"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"撥號音長度"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"正常"</item>
+    <item msgid="6177579030803486015">"長"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"快速回應"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"通話"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"來電封鎖"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"暫時關閉來電封鎖功能"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"您在過去 48 小時內曾經使用此手機聯絡緊急服務,因此來電封鎖功能已停用。系統會在 48 小時期限結束後自動重新啟用功能。"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"匯入號碼"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"您早前透過其他應用程式標記部分來電者,將他們的來電自動轉駁至留言信箱。"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"查看電話號碼"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"匯入"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"匯入失敗"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"解除封鎖號碼"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"新增電話號碼"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"將會封鎖這些號碼的來電,而留言將會自動刪除。"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"將會封鎖這些號碼的來電,但來電可能會轉駁至留言信箱。"</string>
+    <string name="block_list" msgid="7760188925338078011">"已封鎖的號碼"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> 無效。"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"已封鎖 <xliff:g id="NUMBER">%1$s</xliff:g>。"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"已停用來電封鎖 (48 小時)"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"已撥打緊急電話,已停用來電封鎖功能。"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"通話帳戶"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"開放權限"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"設定權限"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"如要啟用快速撥號功能,請開放「通訊錄」權限。"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"如要查看通話記錄,請開放「手機」權限。"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"如要查看聯絡人,請開放「通訊錄」權限。"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"如要存取留言信箱,請開放「手機」權限。"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"如要搜尋聯絡人,請開啟「通訊錄」權限。"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"如要撥打電話,請開放「手機」權限。"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"手機應用程式沒有系統設定的寫入權限。"</string>
+</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..16bb03c
--- /dev/null
+++ b/res/values-zh-rTW/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"電話"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"電話"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"電話撥號鍵盤"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"通話紀錄"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"回報號碼錯誤"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"複製號碼"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"複製留言轉錄內容"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"封鎖號碼"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"已封鎖 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"解除封鎖號碼"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"已解除封鎖 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"復原"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"刪除"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"撥打前編輯號碼"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"清除通話紀錄"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"刪除語音留言"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"已刪除語音留言"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"復原"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"清除通話紀錄?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"這項操作會將所有通話從您的紀錄中刪除"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通話紀錄…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"撥打電話"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"未接來電"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"未接公司來電"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"未接來電"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 通未接來電"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"回撥"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"傳送簡訊"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> 則語音留言</item>
+      <item quantity="one">語音留言</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"播放"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>、<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"最新語音留言者:<xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"無法播放語音留言"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"正在載入語音留言…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"無法載入語音留言"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"僅顯示語音信箱留言"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"僅顯示來電"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"僅顯示已撥電話"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"僅顯示未接來電"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"具有畫面的語音信箱"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"不必撥號即可查看及聽取您的語音留言 (可能需要額外支付數據傳輸費用)。"</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"設定"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"沒有新的語音留言"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"您有新的語音留言,但目前無法載入。"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"設定您的語音留言"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"無法存取音訊"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"設定"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"撥打語音信箱號碼"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"選擇號碼"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"選擇號碼"</string>
+    <string name="make_primary" msgid="5829291915305113983">"記住這個選擇"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"搜尋"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"撥號"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"撥號號碼"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"播放或停止播放"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"切換擴音器開關"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"指定播放時間點"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"降低播放速率"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"提高播放速率"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"通話紀錄"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"更多選項"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"撥號鍵盤"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"僅顯示撥出電話"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"僅顯示來電"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"僅顯示未接來電"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"僅顯示語音留言"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"顯示所有通話"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"暫停時間延長 2 秒"</string>
+    <string name="add_wait" msgid="3360818652790319634">"延長等待時間"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"設定"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"新增聯絡人"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"所有聯絡人"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"通話詳細資料"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"沒有詳細資料"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"使用觸控音按鍵"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"返回進行中的通話"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"新增通話"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"來電"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"撥出電話"</string>
+    <string name="type_missed" msgid="2720502601640509542">"未接來電"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"視訊通話來電"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"撥出的視訊通話"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"未接視訊通話來電"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"語音信箱"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"拒接的來電"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"封鎖的來電"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"來電"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"播放語音留言"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"查看聯絡人<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"撥電話給<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"「<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>」的聯絡詳細資料"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"通話 <xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> 次。"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"視訊通話。"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"傳送簡訊給<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未聽取的語音留言"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"開始進行語音搜尋"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"不明"</string>
+    <string name="voicemail" msgid="3851469869202611441">"語音留言"</string>
+    <string name="private_num" msgid="6374339738119166953">"私人號碼"</string>
+    <string name="payphone" msgid="7726415831153618726">"公用電話"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g><xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"無法撥打這個號碼"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"如要設定語音信箱,請前往 [選單] &gt; [設定]。"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"如要聽語音留言,請先關閉飛行模式。"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"載入中…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"從  SIM 卡讀取中…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM 卡聯絡人"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"沒有可用的聯絡人應用程式"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"無法使用語音搜尋"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"「電話」應用程式已遭停用,因此無法撥打電話。"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"這個裝置未安裝可執行該操作的應用程式"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"搜尋聯絡人"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"新增號碼或搜尋聯絡人"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"沒有任何通話紀錄"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"撥打電話"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"您沒有任何未接來電。"</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"您沒有任何語音留言。"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"只顯示我的收藏"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"通話紀錄"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"全部"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"未接來電"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"語音留言"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"要封鎖 <xliff:g id="NUMBER">%1$s</xliff:g> 嗎?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"系統會封鎖這組號碼的來電,並自動刪除對方的語音留言。"</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"系統會封鎖這組號碼的來電,但對方仍可錄製語音留言給您。"</string>
+    <string name="block_number_ok" msgid="770551992296781873">"封鎖"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"要解除封鎖 <xliff:g id="NUMBER">%1$s</xliff:g> 嗎?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"系統將不再封鎖這組號碼的來電。"</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"解除封鎖"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"快速撥號"</string>
+    <string name="tab_history" msgid="2563144697322434940">"通話紀錄"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"聯絡人"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"語音信箱"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"已從最愛的聯絡人移除"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"復原"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"建立新聯絡人"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"新增至聯絡人"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"傳送簡訊"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"進行視訊通話"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"封鎖號碼"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> 通新的未接來電"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"您的快速撥號功能尚未設定任何聯絡人"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"新增常用聯絡人"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"您尚未加入任何聯絡人"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"新增聯絡人"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"輕觸圖片即可查看所有號碼,輕觸並按住則可重新排序"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"移除"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"視訊通話"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"傳送簡訊"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"通話詳細資料"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"撥號給「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"未接來電:<xliff:g id="NAMEORNUMBER">^1</xliff:g>/<xliff:g id="TYPEORLOCATION">^2</xliff:g>/<xliff:g id="TIMEOFCALL">^3</xliff:g>/<xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"已接來電:<xliff:g id="NAMEORNUMBER">^1</xliff:g>/<xliff:g id="TYPEORLOCATION">^2</xliff:g>/<xliff:g id="TIMEOFCALL">^3</xliff:g>/<xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"您有一則未讀語音留言,來電者:<xliff:g id="NAMEORNUMBER">^1</xliff:g>,<xliff:g id="TYPEORLOCATION">^2</xliff:g>,<xliff:g id="TIMEOFCALL">^3</xliff:g>,<xliff:g id="PHONEACCOUNT">^4</xliff:g>。"</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"您有一則語音留言,來電者:<xliff:g id="NAMEORNUMBER">^1</xliff:g>,<xliff:g id="TYPEORLOCATION">^2</xliff:g>,<xliff:g id="TIMEOFCALL">^3</xliff:g>,<xliff:g id="PHONEACCOUNT">^4</xliff:g>。"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"撥出通話:<xliff:g id="NAMEORNUMBER">^1</xliff:g>/<xliff:g id="TYPEORLOCATION">^2</xliff:g>/<xliff:g id="TIMEOFCALL">^3</xliff:g>/<xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"透過 <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"撥號"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"撥號給「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"與「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」視訊通話。"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"聽取「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的語音留言"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"播放來自「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的語音留言"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"暫停來自「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的語音留言"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"刪除來自「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的語音留言"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 則新的語音留言</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 則新的語音留言</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"建立「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的聯絡人資訊"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"將「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」新增到現有的聯絡人"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"與「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」通話的詳細資料"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"已從通話紀錄中刪除"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"今天"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"昨天"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"較舊"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"通話清單"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"開啟喇叭。"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"關閉喇叭。"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"加快播放速度。"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"放慢播放速度。"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"開始或暫停播放。"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"顯示選項"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"音效與振動"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"協助工具"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"手機鈴聲"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"來電時同時震動"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"撥號鍵盤音效"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"撥號音長度"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"一般"</item>
+    <item msgid="6177579030803486015">"長"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"快速回應"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"通話"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"來電封鎖"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"來電封鎖功能已暫時關閉"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"由於您曾在過去 48 小時內使用這支手機撥打緊急服務電話,因此來電封鎖功能已停用。此功能停用達 48 小時後,將由系統自動重新啟用。"</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"匯入電話號碼"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"您之前曾將某些來電者標示為自動透過其他應用程式轉到語音信箱。"</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"查看號碼"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"匯入"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"匯入失敗"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"解除封鎖號碼"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"新增號碼"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"系統會封鎖這些號碼的來電,並自動刪除對方的語音留言。"</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"系統會封鎖這些號碼的來電,但對方仍可錄製語音留言給您。"</string>
+    <string name="block_list" msgid="7760188925338078011">"已封鎖的號碼"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> 無效。"</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> 已在封鎖清單中。"</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"來電封鎖功能會停用 48 小時"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"由於您曾撥打緊急電話,因此本功能已停用。"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"通話帳戶"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"開啟"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"設定權限"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"如要啟用快速撥號,請開啟「聯絡人」存取權限。"</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"如要查看您的通話紀錄,請開啟「電話」存取權限。"</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"如要查看您的聯絡人,請開啟「聯絡人」存取權限。"</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"如要存取您的語音信箱,請開啟「電話」存取權限。"</string>
+    <string name="permission_no_search" msgid="84152933267902056">"如要搜尋您的聯絡人,請開啟「聯絡人」存取權限。"</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"如要撥打電話,請開啟「電話」存取權限。"</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"電話應用程式的權限不足,無法寫入系統設定。"</string>
+</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
new file mode 100644
index 0000000..0dd3e93
--- /dev/null
+++ b/res/values-zu/strings.xml
@@ -0,0 +1,255 @@
+<?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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="7762561155467201526">"Ifoni"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Ifoni"</string>
+    <string name="launcherDialpadActivityLabel" msgid="3959809805046059167">"Iphedi yokudayela yefoni"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Ifoni"</string>
+    <string name="callHistoryIconLabel" msgid="3734413397291301223">"Umlando wekholi"</string>
+    <string name="action_report_number" msgid="4635403959812186162">"Bika inombolo engalungile"</string>
+    <string name="action_copy_number_text" msgid="588249522108594155">"Kopisha inombolo"</string>
+    <string name="copy_transcript_text" msgid="5652787482893879382">"Kopisha ukukhiphela"</string>
+    <string name="action_block_number" msgid="1482657602262262134">"Vimba inombolo"</string>
+    <string name="snackbar_number_blocked" msgid="939830142765936021">"<xliff:g id="NUMBER">%1$s</xliff:g> ivinjiwe"</string>
+    <string name="action_unblock_number" msgid="3043777622269776127">"Vulela inombolo"</string>
+    <string name="snackbar_number_unblocked" msgid="4854738171099045912">"<xliff:g id="NUMBER">%1$s</xliff:g> vulela"</string>
+    <string name="block_number_undo" msgid="591338370336724156">"HLEHLISA"</string>
+    <string name="call_details_delete" msgid="1833359621896346955">"Susa"</string>
+    <string name="action_edit_number_before_call" msgid="3100221149873436485">"Hlela inombolo ngaphambi kwekholi"</string>
+    <string name="call_log_delete_all" msgid="4677609108288680411">"Sula umlando wekholi"</string>
+    <string name="call_log_trash_voicemail" msgid="1283948488625129019">"Susa ivoyisimeyili"</string>
+    <string name="snackbar_voicemail_deleted" msgid="5098542835986188582">"Ivoyisimeyili isusiwe"</string>
+    <string name="snackbar_voicemail_deleted_undo" msgid="3741811385891289167">"HLEHLISA"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Sula umlando wekholi?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Lokhu kuzosusa wonke amakholi kusukela kumlando wakho"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Isula umlando wekholi…"</string>
+    <string name="userCallActivityLabel" product="default" msgid="6652512551977445095">"Ifoni"</string>
+    <string name="notification_missedCallTitle" msgid="2078223183024451723">"Ikholi ephuthelwe"</string>
+    <string name="notification_missedWorkCallTitle" msgid="8418335304394771688">"Ugeje ikholi yomsebenzi"</string>
+    <string name="notification_missedCallsTitle" msgid="4948840634672742797">"Amakholi akuphuthele"</string>
+    <string name="notification_missedCallsMsg" msgid="158790423221579961">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> amakholi akulahlekele"</string>
+    <string name="notification_missedCall_call_back" msgid="1991552423738343203">"Phinda ushayele"</string>
+    <string name="notification_missedCall_message" msgid="3042123733754151052">"Umlayezo"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Amavoyisimeyili </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Amavoyisimeyili </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Dlala"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"I-imeyli entsha esuka ku <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Ayikwazanga ukudlala ivoyisimeyili"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Ilayisha ivoyisimeyili…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Ayikwazi ukulayisha ivoyisimeyili"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Amakholi anevoyisimeyili kuphela"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Amakholi angenayo kuphela"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Amakholi aphumayo kuphela"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Amakholi agejiwe kuphela"</string>
+    <string name="visual_voicemail_title" msgid="4574199312906348905">"Ivoyisimeyili ebonakalayo"</string>
+    <string name="visual_voicemail_text" msgid="164967285234132509">"Bona futhi ulalele ivoyisimeyili yakho, ngaphandle kokushayela inombolo. Amanani edatha angahle asebenze."</string>
+    <string name="visual_voicemail_settings" msgid="8090338793118794741">"Izilungiselelo"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Izibuyekezo zevoyisimeyili azitholakali"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Ivoyisimeyili entsha ilindile. Ayikwazi ukulayisha khona manje."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Setha ivoyisimeyili yakho"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Umsindo awutholakali"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Setha"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Shayela ivoyisimeyili"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Khetha inombolo"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Khetha inombolo"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Khumbula lokhu okukhethiwe"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"sesha"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"dayela"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"inombolo okumele uyidayele"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Dlala noma misa ukudlala"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Vula noma vala isipikha sefoni"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Funa indawo yokudlala"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Yehlisa isilinganiso sokudlala"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Yenyusa isilinganiso sokudlala"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Umlando wekholi"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Izinketho eziningi"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"okokudayila"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Bonisa eziphumayo kuphela"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Bonisa okungenayo kuphela"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Bonisa okugejiwe kuphela"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Bonisa ama-imeyli ezwi kuphela"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Bonisa zonke izingcingo ezenziwe"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Faka ukumisa okwesikhashana kwamasekhondi angu-2"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Yengeza ukulinda"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Izilungiselelo"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Othintana naye omusha"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Bonke oxhumana nabo"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Imininingwane yekholi"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Imininingwane ayitholakali"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Sebenzisa ikhiphedi yethoni yokuthinta"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Buyela kukholi eqhubekayo"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Yengeza ikholi"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Ikholi engenayo"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Ikholi oluphumayo"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Ikholi elahlekeli"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Ikholi yevidiyo engenayo"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Ikholi yevidiyo ephumayo"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Ikholi yevidiyo ephuthelwe"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Ivoyisimeyili"</string>
+    <string name="type_rejected" msgid="7783201828312472691">"Ikholi enqatshelwe"</string>
+    <string name="type_blocked" msgid="3521686227115330015">"Ikholi evinjiwe"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Amakholi angenayo"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Dlala i-imeyli yezwi"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Bheka oxhumana naye <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Fonela <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Imininingwane yokuxhumana ka-<xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> amakholi."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Ikholi yevidiyo."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Thumela i-SMS ku-<xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"I-imeyli yezwi engazwakalanga"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Qalisa ukusesha ngezwi"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Shayela <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Akwaziwa"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Ivoyisimeyili"</string>
+    <string name="private_num" msgid="6374339738119166953">"Inombolo yangasese"</string>
+    <string name="payphone" msgid="7726415831153618726">"Ucingo olufakwa imali"</string>
+    <string name="callDetailsShortDurationFormat" msgid="3988146235579303592">"<xliff:g id="SECONDS">%s</xliff:g> isekhondi"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> amaminithi <xliff:g id="SECONDS">%s</xliff:g> amasekhondi"</string>
+    <!-- no translation found for voicemailCallLogToday (682363079840402849) -->
+    <skip />
+    <string name="voicemailCallLogDateTimeFormat" msgid="4388070029056487713">"<xliff:g id="DATE">%1$s</xliff:g> ngo-<xliff:g id="TIME">%2$s</xliff:g>"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Ayikwazi ukushayela le nombolo"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ukuya emyalezweni wephimbo, yana ezisethweni &gt; zemenyu."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Ukushayela i-voicemail, vala kuqala imodi Yendiza."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Iyalayisha…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"I-MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Ilayisha kusuka ekhadini le-SIM..."</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Othintana nabo bekhadi le-SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Alukho uhlelo lokusebenza loxhumana nabo olutholakalayo"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Usesho lwezwi alutholakali"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Ayikwazi ukwenza ikholi yefoni ngoba uhlelo lokusebenza lwefoni likhutshaziwe."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Alukho uhlelo lokusebenza lalokho kule divayisi"</string>
+    <string name="dialer_hint_find_contact" msgid="3574350254520035364">"Sesha oxhumana nabo"</string>
+    <string name="block_number_search_hint" msgid="5409571607043872758">"Engeza inombolo noma useshe oxhumana nabo"</string>
+    <string name="call_log_all_empty" msgid="8357417710416340920">"Umlando wakho wekholi awunalutho"</string>
+    <string name="call_log_all_empty_action" msgid="9093210119068366147">"Yenza ikholi"</string>
+    <string name="call_log_missed_empty" msgid="3927274175205520135">"Awunawo amakholi aphuthelwe."</string>
+    <string name="call_log_voicemail_empty" msgid="8383585074222277550">"Ibhokisi lokungenayo kwakho levoyisimeyili alinalutho."</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Bonisa izintandokazi kuphela"</string>
+    <string name="call_log_activity_title" msgid="7949633151371183580">"Umlando wekholi"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Konke"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Phuthelwe"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Ivoyisimeyili"</string>
+    <string name="block_number_confirmation_title" msgid="6862219558186931304">"Vimba <xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="block_number_confirmation_message_vvm" msgid="5655646611437082611">"Amakholi wangakusasa kusuka kule nombolo azovinyelwa futhi amavoyisimeyili azosuswa ngokuzenzakalela."</string>
+    <string name="block_number_confirmation_message_no_vvm" msgid="4511900601491718173">"Amakholi kusuka kule nombolo azovinjwa, kodwa inkampani yenenethiwekhi ingakwazi ukukushiyela amavoyisimeyili."</string>
+    <string name="block_number_ok" msgid="770551992296781873">"VIMBA"</string>
+    <string name="unblock_number_confirmation_title" msgid="252824779504084354">"Vulela i-<xliff:g id="NUMBER">%1$s</xliff:g>?"</string>
+    <string name="unblock_number_confirmation_message" msgid="8521058345002166692">"Le nombolo ngeke isavinjwa kusuka ekukushayeleni."</string>
+    <string name="unblock_number_ok" msgid="6449899182699684786">"VULELA"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Ukudayela okusheshayo"</string>
+    <string name="tab_history" msgid="2563144697322434940">"Umlando wekholi"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Oxhumana nabo"</string>
+    <string name="tab_voicemail" msgid="155024725947496746">"Ivoyisimeyili"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Kukhishiwe kusuka kuzintandokazi"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Hlehlisa"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Shayela ku-<xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Dala oxhumana naye omusha"</string>
+    <string name="search_shortcut_add_to_contact" msgid="4327842393369915751">"Engeza koxhumana naye"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Thumela i-SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Yenza ikholi yevidiyo"</string>
+    <string name="search_shortcut_block_number" msgid="4787156645163436072">"Vimba inombolo"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> amakholi amasha owaphuthelwe"</string>
+    <string name="speed_dial_empty" msgid="8838921693673366129">"Akekho umuntu osekudayeleni kwakho okusheshayo okwamanje"</string>
+    <string name="speed_dial_empty_add_favorite_action" msgid="7944893641496695770">"Engeza intandokazi"</string>
+    <string name="all_contacts_empty" msgid="471370638298229686">"Awunabo oxhumana nabo okwamanje"</string>
+    <string name="all_contacts_empty_add_contact_action" msgid="1515782853819374618">"Engeza oxhumana naye"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Thinta isithombe ukuze ubone zonke izinombolo noma uthinte uphinde ubambe ukuze uhlele kabusha"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Susa"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Ikholi yevidiyo"</string>
+    <string name="call_log_action_send_message" msgid="5679719296905285131">"Thumela umlayezo"</string>
+    <string name="call_log_action_details" msgid="701345508704970622">"Imininingwane yekholi"</string>
+    <string name="call_log_action_call" msgid="463690849042459842">"Shayela ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Ikholi egejiwe kusuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Phendula ikholi kusuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_unread_voicemail" msgid="5826351827625665597">"Ivoyisimeyili engafundiwe kusukela ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_read_voicemail" msgid="133974208364152610">"Ivoyisimeyili esuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Ikholi eya ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"ku-<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Shaya"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Shayela ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="7386922428155062213">"Ikholi yevidiyo ka-<xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Lalela ivoyisimeyili esuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_play" msgid="2689369874037785439">"Dlala ivoyisimeyili kusuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_pause" msgid="3905259748756919693">"Misa okwesikhashana ivoyisimeyili kusuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_voicemail_delete" msgid="2025472770630153436">"Sula ivoyisimeyili kusuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <plurals name="description_voicemail_unread" formatted="false" msgid="8708346053055570332">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> amavoyisimeyili amasha</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> amavoyisimeyili amasha</item>
+    </plurals>
+    <string name="description_create_new_contact_action" msgid="818755978791008167">"Dalela oxhumana naye u-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_add_to_existing_contact_action" msgid="6081200053494414351">"Engeza u-<xliff:g id="NAMEORNUMBER">^1</xliff:g> koxhumana naye okhona"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Imininingwane yekholi ye-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Isusiwe kusukela kumlando wekholi"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Namhlanje"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Izolo"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Okudala"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Uhlu lwamakholi"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Vula isipikha."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Vala isipikha."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Dala ngokushesha."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Dlala ngokungasheshi."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Qala noma misa isikhashana ukudlala."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Izinketho zokubukeka"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Imisindo nokudlidliza"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Ukufinyeleleka"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Ithoni yokukhala yefoni"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Iyadlidliza futhi ngamakholi"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Ukukhala kwephedi yokudayela"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Ubude bethoni bephedi yokudayela"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Okujwayelekile"</item>
+    <item msgid="6177579030803486015">"Kude"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Izimpendulo ezisheshayo"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Amakholi"</string>
+    <string name="manage_blocked_numbers_label" msgid="5959801428936629196">"Ukuvimbela ikholi"</string>
+    <string name="blocked_numbers_disabled_emergency_header_label" msgid="7870947220238070418">"Ukuvimbela ikholi kuvalwe isikhashana"</string>
+    <string name="blocked_numbers_disabled_emergency_desc" msgid="7755803249073401381">"Ukuvimbela ikholi kukhutshaziwe ngoba uxhumane nabosizo oluphuthumayo kusukela kule foni phakathi kwamahora angu-48 wokugcina. Kuzophinda kunikwe amandla ngokuzenzakalela uma sokuphele isikhathi samahora angu-48."</string>
+    <string name="import_send_to_voicemail_numbers_label" msgid="1606601823746799926">"Ngenisa izinombolo"</string>
+    <string name="blocked_call_settings_import_description" msgid="8640906226815125906">"Ngaphambilini umake abanye abashayi ukuthi bathunyelwe ngokuzenzakalelayo kuvoyisimeyili ngezinhlelo zokusebenza."</string>
+    <string name="blocked_call_settings_view_numbers_button" msgid="6698986720875955935">"Buka izinombolo"</string>
+    <string name="blocked_call_settings_import_button" msgid="178821255125295473">"Ngenisa"</string>
+    <string name="send_to_voicemail_import_failed" msgid="5547202002133560069">"Ukulanda akuphumelelanga"</string>
+    <string name="description_blocked_number_list_delete" msgid="3240093199107796792">"Vulela inombolo"</string>
+    <string name="addBlockedNumber" msgid="6064812257482886526">"Engeza inombolo"</string>
+    <string name="block_number_footer_message_vvm" msgid="5387302253765439712">"Amakholi kusuka kulezi lzinombolo azovinjwa futhi amavoyisimeyili azosulwa ngokuzenzakalela."</string>
+    <string name="block_number_footer_message_no_vvm" msgid="223238617533822381">"Amakholi kusuka kulezi zinombolo azovinjwa, kodwa angakwazi ukushiya amavoyisimeyili."</string>
+    <string name="block_list" msgid="7760188925338078011">"Izinombolo ezivinjiwe"</string>
+    <string name="invalidNumber" msgid="619058581062192851">"<xliff:g id="NUMBER">%1$s</xliff:g> ayivumelekile."</string>
+    <string name="alreadyBlocked" msgid="282340105563646876">"<xliff:g id="NUMBER">%1$s</xliff:g> isivinjiwe kakade."</string>
+    <string name="call_blocking_disabled_notification_title" msgid="8185193413377920194">"Ukuvimbela ikholi kukhutshaziwe amahora angu-48"</string>
+    <string name="call_blocking_disabled_notification_text" msgid="5330772013626378526">"Kukhutshaziwe ngoba ikholi ephuthumayo yenziwe."</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Ama-akhawunti wokushaya"</string>
+    <string name="permission_single_turn_on" msgid="1543391076065465464">"Vula"</string>
+    <string name="permission_multiple_turn_on" msgid="2426278457455950554">"Setha izimvume"</string>
+    <string name="permission_no_speeddial" msgid="6882563445996184051">"Nika amandla ukudayela okusheshayo, vula imvume yoxhumana nabo."</string>
+    <string name="permission_no_calllog" msgid="555711464287041043">"Ukuze ubone irekhodi lakho lamakholi, vuma imvume yefoni."</string>
+    <string name="permission_no_contacts" msgid="6237980143178936279">"Ukuze ubone oxhumana nabo, vula imvume yoxhumana nabo."</string>
+    <string name="permission_no_voicemail" msgid="8306280257799917574">"Ukuze ufinyelele ivoyisimeyili, vula imvume yefoni."</string>
+    <string name="permission_no_search" msgid="84152933267902056">"Ukuze useshe oxhumana nabo, vula izimvume zoxhumana nabo."</string>
+    <string name="permission_place_call" msgid="2101287782615887547">"Ukuze ubeke ikholi, vula imvume yefoni."</string>
+    <string name="toast_cannot_write_system_settings" msgid="5614246168296606709">"Uhlelo lokusebenza lefoni alinayo imvume yokubhalela kuzilungiselelo zesistimu."</string>
+</resources>
diff --git a/res/values/animation_constants.xml b/res/values/animation_constants.xml
new file mode 100644
index 0000000..4e4bc36
--- /dev/null
+++ b/res/values/animation_constants.xml
@@ -0,0 +1,30 @@
+<?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
+  -->
+<resources>
+    <integer name="fade_duration">300</integer>
+
+    <!-- Swipe constants -->
+    <integer name="swipe_escape_velocity">100</integer>
+    <integer name="escape_animation_duration">200</integer>
+    <integer name="max_escape_animation_duration">400</integer>
+    <integer name="max_dismiss_velocity">2000</integer>
+    <integer name="snap_animation_duration">350</integer>
+    <integer name="swipe_scroll_slop">2</integer>
+    <dimen name="min_swipe">0dip</dimen>
+    <dimen name="min_vert">10dip</dimen>
+    <dimen name="min_lock">20dip</dimen>
+</resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
new file mode 100644
index 0000000..23f639f
--- /dev/null
+++ b/res/values/attrs.xml
@@ -0,0 +1,36 @@
+<?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
+  -->
+<resources>
+
+    <declare-styleable name="CallLog">
+        <attr name="call_log_primary_text_color" format="color" />
+        <attr name="call_log_primary_background_color" format="color" />
+        <attr name="call_log_secondary_text_color" format="color" />
+        <attr name="call_log_secondary_background_color" format="color" />
+        <attr name="call_log_header_color" format="color" />
+    </declare-styleable>
+
+    <declare-styleable name="VoicemailStatus">
+        <attr name="call_log_voicemail_status_height" format="dimension" />
+        <attr name="call_log_voicemail_status_background_color" format="color" />
+        <attr name="call_log_voicemail_status_text_color" format="color" />
+        <attr name="call_log_voicemail_status_action_text_color" format="color" />
+    </declare-styleable>
+
+    <declare-styleable name="SearchEditTextLayout" />
+
+</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
new file mode 100644
index 0000000..75d05ac
--- /dev/null
+++ b/res/values/colors.xml
@@ -0,0 +1,142 @@
+<!--
+  ~ 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
+-->
+
+<resources>
+    <!--  Primary text color in the Dialer -->
+    <color name="dialtacts_primary_text_color">#333333</color>
+    <!-- Secondary text color in the Dialer -->
+    <color name="dialtacts_secondary_text_color">#636363</color>
+    <color name="dialer_red_highlight_color">#ff1744</color>
+    <color name="dialer_green_highlight_color">#00c853</color>
+
+    <color name="dialer_button_text_color">#fff</color>
+    <color name="dialer_flat_button_text_color">@color/dialer_theme_color</color>
+    <color name="dialer_snackbar_action_text_color">@color/dialer_theme_color</color>
+
+    <!-- Color for the setting text. -->
+    <color name="setting_primary_color">@color/dialtacts_primary_text_color</color>
+    <!-- Color for the setting description text. -->
+    <color name="setting_secondary_color">@color/dialtacts_secondary_text_color</color>
+    <color name="setting_disabled_color">#aaaaaa</color>
+    <color name="setting_background_color">#ffffff</color>
+    <color name="setting_button_color">#eee</color>
+
+    <!-- 54% black -->
+    <color name="call_log_icon_tint">#8a000000</color>
+    <!-- 87% black -->
+    <color name="call_log_primary_color">#de000000</color>
+    <!-- 54% black -->
+    <color name="call_log_detail_color">#8a000000</color>
+    <!-- 87% black -->
+    <color name="call_log_voicemail_transcript_color">#de000000</color>
+    <!-- 70% black -->
+    <color name="call_log_action_color">#b3000000</color>
+    <!-- 54% black -->
+    <color name="call_log_day_group_heading_color">#8a000000</color>
+    <!-- 87% black-->
+    <color name="call_log_unread_text_color">#de000000</color>
+    <color name="call_log_list_item_primary_action_icon_tint">@color/call_log_icon_tint</color>
+    <!-- Color of the text describing an unconsumed missed call. -->
+    <color name="call_log_missed_call_highlight_color">@color/dialer_red_highlight_color</color>
+    <!-- Color of the text describing an unconsumed voicemail. -->
+    <color name="call_log_voicemail_highlight_color">#33b5e5</color>
+
+    <!-- Background color of visual voicemail promo card. -->
+    <color name="visual_voicemail_promo_card_background">#673ab7</color>
+    <color name="visual_voicemail_promo_card_divider">#7d57c1</color>
+    <color name="promo_card_text">#ffffff</color>
+
+    <color name="voicemail_icon_tint">@color/call_log_icon_tint</color>
+    <color name="voicemail_icon_disabled_tint">#80000000</color>
+    <color name="voicemail_playpause_icon_tint">@color/dialer_theme_color</color>
+    <!-- Colour of voicemail progress bar to the right of position indicator. -->
+    <color name="voicemail_playback_seek_bar_yet_to_play">#cecece</color>
+    <!-- Colour of voicemail progress bar to the left of position indicator. -->
+    <color name="voicemail_playback_seek_bar_already_played">@color/dialer_theme_color</color>
+
+    <!-- Standard color for selected items. -->
+    <color name="item_selected">#660099cc</color>
+
+    <!-- White background for dialer -->
+    <color name="background_dialer_white">#ffffff</color>
+    <!-- Background color of new dialer activity -->
+    <color name="background_dialer_light">#fafafa</color>
+    <!-- Background color for search results and call details -->
+    <color name="background_dialer_results">#f9f9f9</color>
+    <color name="background_dialer_call_log">@color/background_dialer_light</color>
+    <color name="background_dialer_call_log_list_item">@color/background_dialer_white</color>
+
+    <!-- Color of the 1dp divider that separates favorites -->
+    <color name="favorite_contacts_separator_color">#d0d0d0</color>
+
+    <color name="searchbox_icon_tint">#a4a4a4</color>
+
+    <!-- Color of the contact name in favorite tiles -->
+    <color name="contact_tile_name_color">#ffffff</color>
+
+    <color name="contact_list_name_text_color">@color/dialtacts_primary_text_color</color>
+
+    <!-- Undo dialogue color -->
+    <color name="undo_dialogue_text_color">#4d4d4d</color>
+
+    <color name="empty_list_text_color">#b2b2b2</color>
+
+    <color name="remove_text_color">#ffffff</color>
+
+    <!-- Text color for the "Remove" text when a contact is dragged on top of the remove view -->
+    <color name="remove_highlighted_text_color">#FF3F3B</color>
+
+    <!-- Color of the bottom border below the contacts grid on the main dialer screen. -->
+    <color name="contacts_grid_bottom_border_color">#16000000</color>
+
+    <!-- Color of actions in expanded call log entries.  This text color represents actions such
+         as call back, play voicemail, etc. -->
+    <color name="call_log_action_text">@color/dialer_theme_color</color>
+
+    <!-- Color for missed call icons. -->
+    <color name="missed_call">#ff2e58</color>
+    <!-- Color for answered or outgoing call icons. -->
+    <color name="answered_call">@color/dialer_green_highlight_color</color>
+    <!-- Color for blocked call icons. -->
+    <color name="blocked_call">@color/dialtacts_secondary_text_color</color>
+
+    <!-- Color for icons in the actionbar -->
+    <color name="actionbar_icon_color">#ffffff</color>
+
+    <color name="dialer_dialpad_touch_tint">#330288d1</color>
+
+    <color name="floating_action_button_touch_tint">#80ffffff</color>
+
+    <color name="call_log_action_divider">#eeeeee</color>
+    <color name="divider_line_color">#D8D8D8</color>
+
+    <!--  Colors for blocked numbers list -->
+    <color name="blocked_contact_background">#afafaf</color>
+    <color name="blocked_number_primary_text_color">@color/dialtacts_primary_text_color</color>
+    <color name="blocked_number_secondary_text_color">@color/dialtacts_secondary_text_color</color>
+    <color name="blocked_number_icon_tint">#616161</color>
+    <color name="blocked_number_background">#FFFFFF</color>
+    <color name="blocked_number_accent_color">#42A5F5</color>
+    <color name="blocked_number_block_color">#F44336</color>
+    <color name="blocked_number_header_color">@color/dialer_theme_color</color>
+    <color name="blocked_number_disabled_emergency_header_color">#616161</color>
+    <color name="blocked_number_disabled_emergency_background_color">#E0E0E0</color>
+    <color name="add_blocked_number_icon_color">#bdbdbd</color>
+    <!-- Grey 700 -->
+    <color name="call_detail_footer_text_color">#616161</color>
+    <color name="call_detail_footer_icon_tint">@color/call_detail_footer_text_color</color>
+
+</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
new file mode 100644
index 0000000..4865280
--- /dev/null
+++ b/res/values/dimens.xml
@@ -0,0 +1,173 @@
+<?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
+-->
+<resources>
+    <dimen name="button_horizontal_padding">16dp</dimen>
+    <dimen name="divider_line_thickness">1dp</dimen>
+
+    <!--
+          Drag to remove view (in dp because it is used in conjunction with a statically
+          sized icon
+    -->
+    <dimen name="remove_text_size">16dp</dimen>
+
+    <!-- Call Log -->
+    <dimen name="call_log_horizontal_margin">8dp</dimen>
+    <dimen name="call_log_call_action_size">32dp</dimen>
+    <dimen name="call_log_call_action_width">54dp</dimen>
+    <dimen name="call_log_icon_margin">4dp</dimen>
+    <dimen name="call_log_inner_margin">13dp</dimen>
+    <dimen name="call_log_outer_margin">8dp</dimen>
+    <dimen name="call_log_start_margin">8dp</dimen>
+    <dimen name="call_log_indent_margin">24dp</dimen>
+    <dimen name="call_log_name_margin_bottom">2dp</dimen>
+    <dimen name="call_log_vertical_padding">12dp</dimen>
+    <dimen name="call_log_list_item_height">56dp</dimen>
+    <dimen name="call_log_list_item_info_margin_start">16dp</dimen>
+    <dimen name="show_call_history_list_item_height">72dp</dimen>
+
+    <!-- Size of contact photos in the call log and call details. -->
+    <dimen name="contact_photo_size">40dp</dimen>
+    <dimen name="call_detail_button_spacing">2dip</dimen>
+    <dimen name="call_detail_horizontal_margin">20dp</dimen>
+    <dimen name="call_detail_top_margin">16dp</dimen>
+    <dimen name="call_detail_bottom_margin">16dp</dimen>
+    <dimen name="call_detail_header_top_margin">20dp</dimen>
+    <dimen name="call_detail_header_bottom_margin">9dp</dimen>
+    <dimen name="call_detail_elevation">0.5dp</dimen>
+    <dimen name="call_detail_action_item_padding_horizontal">28dp</dimen>
+    <dimen name="call_detail_action_item_padding_vertical">16dp</dimen>
+    <dimen name="call_detail_action_item_drawable_padding">28dp</dimen>
+    <dimen name="call_detail_action_item_text_size">16sp</dimen>
+    <dimen name="transcription_top_margin">18dp</dimen>
+    <dimen name="transcription_bottom_margin">18dp</dimen>
+
+    <!-- Size of call provider icon width and height -->
+    <dimen name="call_provider_small_icon_size">12dp</dimen>
+
+    <!-- Match call_button_height to Phone's dimens/in_call_end_button_height -->
+    <dimen name="call_button_height">74dp</dimen>
+
+    <!-- Dimensions for speed dial tiles -->
+    <dimen name="contact_tile_divider_width">1dp</dimen>
+    <dimen name="contact_tile_info_button_height_and_width">36dp</dimen>
+    <item name="contact_tile_height_to_width_ratio" type="dimen">76%</item>
+    <dimen name="contact_tile_text_side_padding">12dp</dimen>
+    <dimen name="contact_tile_text_bottom_padding">9dp</dimen>
+    <dimen name="favorites_row_top_padding">2dp</dimen>
+    <dimen name="favorites_row_bottom_padding">0dp</dimen>
+    <dimen name="favorites_row_start_padding">1dp</dimen>
+
+    <!-- Padding from the last contact tile will provide the end padding. -->
+    <dimen name="favorites_row_end_padding">0dp</dimen>
+    <dimen name="favorites_row_undo_text_side_padding">32dp</dimen>
+
+    <!-- Size of the star icon on the favorites tile. -->
+    <dimen name="favorites_star_icon_size">12dp</dimen>
+
+    <!-- Padding for the tooltip -->
+    <dimen name="dismiss_button_padding_start">20dip</dimen>
+    <dimen name="dismiss_button_padding_end">28dip</dimen>
+
+    <!-- Height of the actionBar - this is 8dps bigger than the platform standard to give more
+    room to the search box-->
+    <dimen name="action_bar_height">56dp</dimen>
+    <dimen name="action_bar_height_large">64dp</dimen>
+    <dimen name="action_bar_elevation">3dp</dimen>
+    <dimen name="tab_height">43dp</dimen>
+    <!-- actionbar height + tab height -->
+    <dimen name="actionbar_and_tab_height">107dp</dimen>
+    <dimen name="actionbar_contentInsetStart">72dp</dimen>
+
+    <!-- Margin to the left and right of the search box. -->
+    <dimen name="search_margin_horizontal">8dp</dimen>
+    <!-- Margin above the search box. -->
+    <dimen name="search_top_margin">8dp</dimen>
+    <!-- Margin below the search box. -->
+    <dimen name="search_bottom_margin">8dp</dimen>
+    <dimen name="search_collapsed_text_size">14sp</dimen>
+    <!-- Search box interior padding - left -->
+    <dimen name="search_box_left_padding">8dp</dimen>
+    <!-- Search box interior padding - right -->
+    <dimen name="search_box_right_padding">8dp</dimen>
+    <dimen name="search_box_search_icon_padding">2dp</dimen>
+    <dimen name="search_box_collapsed_text_margin_left">22dp</dimen>
+    <dimen name="search_list_padding_top">16dp</dimen>
+    <dimen name="search_box_elevation">3dp</dimen>
+
+    <dimen name="call_log_action_icon_margin_start">16dp</dimen>
+    <dimen name="call_log_action_icon_dimen">24dp</dimen>
+    <dimen name="call_log_action_horizontal_padding">24dp</dimen>
+
+    <dimen name="call_log_actions_left_padding">64dp</dimen>
+    <dimen name="call_log_actions_top_padding">8dp</dimen>
+    <dimen name="call_log_actions_bottom_padding">8dp</dimen>
+    <dimen name="call_log_primary_text_size">16sp</dimen>
+    <dimen name="call_log_detail_text_size">12sp</dimen>
+    <dimen name="call_log_day_group_heading_size">14sp</dimen>
+    <dimen name="call_log_voicemail_transcription_text_size">14sp</dimen>
+    <!-- Height of the call log actions section for each call log entry -->
+    <dimen name="call_log_action_height">48dp</dimen>
+    <dimen name="call_log_day_group_padding_top">15dp</dimen>
+    <dimen name="call_log_day_group_padding_bottom">9dp</dimen>
+
+    <!-- Padding for icons to increase their touch target. Icons are typically 24 dps in size
+         so this extra padding makes the entire touch target 40dp -->
+    <dimen name="icon_padding">8dp</dimen>
+
+    <!-- Length of dialpad's shadows in dialer. -->
+    <dimen name="shadow_length">10dp</dimen>
+
+    <dimen name="empty_list_message_top_padding">20dp</dimen>
+    <dimen name="empty_list_message_text_size">16sp</dimen>
+
+    <!-- Dimensions for individual preference cards -->
+    <dimen name="preference_padding_top">16dp</dimen>
+    <dimen name="preference_padding_bottom">16dp</dimen>
+    <dimen name="preference_side_margin">16dp</dimen>
+    <dimen name="preference_summary_line_spacing_extra">4dp</dimen>
+
+    <dimen name="call_log_list_item_primary_action_dimen">36dp</dimen>
+
+    <!-- Dimensions for promo cards -->
+    <dimen name="promo_card_icon_size">24dp</dimen>
+    <dimen name="promo_card_start_padding">16dp</dimen>
+    <dimen name="promo_card_top_padding">21dp</dimen>
+    <dimen name="promo_card_main_padding">24dp</dimen>
+    <dimen name="promo_card_title_padding">12dp</dimen>
+    <dimen name="promo_card_action_vertical_padding">4dp</dimen>
+    <dimen name="promo_card_action_end_padding">4dp</dimen>
+    <dimen name="promo_card_action_between_padding">11dp</dimen>
+    <dimen name="promo_card_line_spacing">4dp</dimen>
+
+    <dimen name="voicemail_playback_top_padding">12dp</dimen>
+
+    <!-- Size of entries in blocked numbers list -->
+    <dimen name="blocked_number_container_padding">16dp</dimen>
+    <dimen name="blocked_number_horizontal_margin">16dp</dimen>
+    <dimen name="blocked_number_top_margin">16dp</dimen>
+    <dimen name="blocked_number_bottom_margin">16dp</dimen>
+    <dimen name="blocked_number_add_top_margin">8dp</dimen>
+    <dimen name="blocked_number_add_bottom_margin">8dp</dimen>
+    <dimen name="blocked_number_primary_text_size">16sp</dimen>
+    <dimen name="blocked_number_secondary_text_size">12sp</dimen>
+    <dimen name="blocked_number_delete_icon_size">32dp</dimen>
+    <dimen name="blocked_number_search_text_size">14sp</dimen>
+    <dimen name="blocked_number_settings_description_text_size">14sp</dimen>
+    <dimen name="blocked_number_header_height">48dp</dimen>
+
+    <dimen name="call_type_icon_size">12dp</dimen>
+</resources>
diff --git a/res/values/donottranslate_config.xml b/res/values/donottranslate_config.xml
new file mode 100644
index 0000000..468e415
--- /dev/null
+++ b/res/values/donottranslate_config.xml
@@ -0,0 +1,37 @@
+<?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
+  -->
+
+<resources>
+
+    <!-- If true, enable vibration (haptic feedback) for dialer key presses.
+         The pattern is set on a per-platform basis using config_virtualKeyVibePattern.
+         TODO: If enough users are annoyed by this, we might eventually
+         need to make it a user preference rather than a per-platform
+          resource. -->
+    <bool name="config_enable_dialer_key_vibration">true</bool>
+
+    <!-- If true, show an onscreen "Dial" button in the dialer.
+         In practice this is used on all platforms even the ones with hard SEND/END
+         keys, but for maximum flexibility it's controlled by a flag here
+         (which can be overridden on a per-product basis.) -->
+    <bool name="config_show_onscreen_dial_button">true</bool>
+
+    <!-- Regular expression for prohibiting certain phone numbers in dialpad.
+         Ignored if empty. -->
+    <string name="config_prohibited_phone_number_regexp"></string>
+
+</resources>
diff --git a/res/values/ids.xml b/res/values/ids.xml
new file mode 100644
index 0000000..f850327
--- /dev/null
+++ b/res/values/ids.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+    <item type="id" name="call_detail_delete_menu_item" />
+    <item type="id" name="context_menu_copy_to_clipboard" />
+    <item type="id" name="context_menu_copy_transcript_to_clipboard" />
+    <item type="id" name="context_menu_edit_before_call" />
+    <item type="id" name="context_menu_block_number" />
+    <item type="id" name="settings_header_sounds_and_vibration" />
+    <item type="id" name="block_id" />
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
new file mode 100644
index 0000000..ed88b96
--- /dev/null
+++ b/res/values/strings.xml
@@ -0,0 +1,998 @@
+<?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
+  -->
+
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <!-- Application name used in Settings/Apps. Default label for activities
+         that don't specify a label. -->
+    <string name="applicationLabel">Phone</string>
+
+    <!-- Title for the activity that dials the phone.  This is the name
+         used in the Launcher icon. -->
+    <string name="launcherActivityLabel">Phone</string>
+
+
+    <!-- Title for the activity that dials the phone, when launched directly into the dialpad -->
+    <string name="launcherDialpadActivityLabel">Phone Dialpad</string>
+    <!-- The description text for the dialer tab.
+
+    Note: AccessibilityServices use this attribute to announce what the view represents.
+    This is especially valuable for views without textual representation like ImageView.
+
+    [CHAR LIMIT=NONE] -->
+    <string name="dialerIconLabel">Phone</string>
+
+    <!-- The description text for the call log tab.
+
+    Note: AccessibilityServices use this attribute to announce what the view represents.
+    This is especially valuable for views without textual representation like ImageView.
+
+    [CHAR LIMIT=NONE] -->
+    <string name="callHistoryIconLabel">Call history</string>
+
+    <!-- Text for a menu item to report a call as having been incorrectly identified. [CHAR LIMIT=48] -->
+    <string name="action_report_number">Report inaccurate number</string>
+
+    <!-- Option displayed in context menu to copy long pressed phone number. [CHAR LIMIT=48] -->
+    <string name="action_copy_number_text">Copy number</string>
+
+    <!-- Option displayed in context menu to copy long pressed voicemail transcription. [CHAR LIMIT=48] -->
+    <string name="copy_transcript_text">Copy transcription</string>
+
+    <!-- Label for action to block a number. [CHAR LIMIT=48] -->
+    <string name="action_block_number">Block number</string>
+
+    <!-- Text for snackbar to undo blocking a number. [CHAR LIMIT=64] -->
+    <string name="snackbar_number_blocked">
+        <xliff:g id="number" example="(555) 555-5555">%1$s</xliff:g> blocked</string>
+
+    <!-- Label for action to unblock a number [CHAR LIMIT=48]-->
+    <string name="action_unblock_number">Unblock number</string>
+
+    <!-- Text for snackbar to undo unblocking a number. [CHAR LIMIT=64] -->
+    <string name="snackbar_number_unblocked">
+        <xliff:g id="number" example="(555) 555-5555">%1$s</xliff:g>
+        unblocked</string>
+
+    <!-- Text for undo button in snackbar for blocking/unblocking number. [CHAR LIMIT=10] -->
+    <string name="block_number_undo">UNDO</string>
+
+    <!-- Menu item in call details used to remove a call or voicemail from the call log. -->
+    <string name="call_details_delete">Delete</string>
+
+    <!-- Label for action to edit a number before calling it. [CHAR LIMIT=48] -->
+    <string name="action_edit_number_before_call">Edit number before call</string>
+
+    <!-- Menu item used to remove all calls from the call log -->
+    <string name="call_log_delete_all">Clear call history</string>
+
+    <!-- Menu item used to delete a voicemail. [CHAR LIMIT=30] -->
+    <string name="call_log_trash_voicemail">Delete voicemail</string>
+
+    <!-- Text for snackbar to undo a voicemail delete. [CHAR LIMIT=30] -->
+    <string name="snackbar_voicemail_deleted">Voicemail deleted</string>
+
+    <!-- Text for undo button in snackbar for voicemail deletion. [CHAR LIMIT=10] -->
+    <string name="snackbar_voicemail_deleted_undo">UNDO</string>
+
+    <!-- Title of the confirmation dialog for clearing the call log. [CHAR LIMIT=37]  -->
+    <string name="clearCallLogConfirmation_title">Clear call history?</string>
+
+    <!-- Confirmation dialog for clearing the call log. [CHAR LIMIT=NONE]  -->
+    <string name="clearCallLogConfirmation">This will delete all calls from your history</string>
+
+    <!-- Title of the "Clearing call log" progress-dialog [CHAR LIMIT=35] -->
+    <string name="clearCallLogProgress_title">Clearing call history\u2026</string>
+
+    <!-- Title used for the activity for placing a call. This name appears
+         in activity disambig dialogs -->
+    <string name="userCallActivityLabel" product="default">Phone</string>
+
+    <!-- Notification strings -->
+    <!-- Missed call notification label, used when there's exactly one missed call -->
+    <string name="notification_missedCallTitle">Missed call</string>
+    <!-- Missed call notification label, used when there's exactly one missed call from work contact -->
+    <string name="notification_missedWorkCallTitle">Missed work call</string>
+    <!-- Missed call notification label, used when there are two or more missed calls -->
+    <string name="notification_missedCallsTitle">Missed calls</string>
+    <!-- Missed call notification message used when there are multiple missed calls -->
+    <string name="notification_missedCallsMsg"><xliff:g id="num_missed_calls">%s</xliff:g> missed calls</string>
+    <!-- Message for "call back" Action, which is displayed in the missed call notificaiton.
+         The user will be able to call back to the person or the phone number.
+         [CHAR LIMIT=18] -->
+    <string name="notification_missedCall_call_back">Call back</string>
+    <!-- Message for "reply via sms" action, which is displayed in the missed call notification.
+         The user will be able to send text messages using the phone number.
+         [CHAR LIMIT=18] -->
+    <string name="notification_missedCall_message">Message</string>
+        <!-- DO NOT TRANSLATE. Hardcoded number used for restricted incoming phone numbers. -->
+    <string name="handle_restricted">RESTRICTED</string>
+
+    <!-- Title of the notification of new voicemails. [CHAR LIMIT=30] -->
+    <plurals name="notification_voicemail_title">
+        <item quantity="one">Voicemail</item>
+        <item quantity="other">
+            <xliff:g id="count">%1$d</xliff:g>
+            Voicemails
+        </item>
+    </plurals>
+
+    <!-- Used in the notification of a new voicemail for the action to play the voicemail. -->
+    <string name="notification_action_voicemail_play">Play</string>
+
+    <!-- Used to build a list of names or phone numbers, to indicate the callers who left
+         voicemails.
+         The first argument may be one or more callers, the most recent ones.
+         The second argument is an additional callers.
+         This string is used to build a list of callers.
+
+         [CHAR LIMIT=10]
+     -->
+    <string name="notification_voicemail_callers_list"><xliff:g id="newer_callers">%1$s</xliff:g>,
+        <xliff:g id="older_caller">%2$s</xliff:g>
+    </string>
+
+    <!-- Text used in the ticker to notify the user of the latest voicemail. [CHAR LIMIT=30] -->
+    <string name="notification_new_voicemail_ticker">New voicemail from
+        <xliff:g id="caller">%1$s</xliff:g>
+    </string>
+
+    <!-- Message to show when there is an error playing back the voicemail. [CHAR LIMIT=40] -->
+    <string name="voicemail_playback_error">Couldn\'t play voicemail</string>
+
+    <!-- Message to display whilst we are waiting for the content to be fetched. [CHAR LIMIT=40] -->
+    <string name="voicemail_fetching_content">Loading voicemail\u2026</string>
+
+    <!-- Message to display if we fail to get content within a suitable time period. [CHAR LIMIT=40] -->
+    <string name="voicemail_fetching_timout">Couldn\'t load voicemail</string>
+
+    <!-- The header to show that call log is only showing voicemail calls. [CHAR LIMIT=40] -->
+    <string name="call_log_voicemail_header">Calls with voicemail only</string>
+
+    <!-- The header to show that call log is only showing incoming calls. [CHAR LIMIT=40] -->
+    <string name="call_log_incoming_header">Incoming calls only</string>
+
+    <!-- The header to show that call log is only showing outgoing calls. [CHAR LIMIT=40] -->
+    <string name="call_log_outgoing_header">Outgoing calls only</string>
+
+    <!-- The header to show that call log is only showing missed calls. [CHAR LIMIT=40] -->
+    <string name="call_log_missed_header">Missed calls only</string>
+
+    <!-- Title for promo card for visual voicemail. [CHAR LIMIT=40] -->
+    <string name="visual_voicemail_title">Visual voicemail</string>
+
+    <!-- Promo card text for visual voicemail. -->
+    <string name="visual_voicemail_text">
+        See and listen to your voicemail, without having to call a number. Data charges may apply.
+    </string>
+
+    <!-- Text for "Settings" link for visual voicemail promo card. [CHAR LIMIT=30] -->
+    <string name="visual_voicemail_settings">Settings</string>
+
+    <!--  Voicemail status message shown at the top of call log to notify the user that no new
+    voicemails are currently available. This can happen when both notification as well as data
+    connection to the voicemail server is lost. [CHAR LIMIT=64] -->
+    <string name="voicemail_status_voicemail_not_available">Voicemail updates not available</string>
+    <!--  Voicemail status message shown at the top of call log to notify the user that there is no
+      data connection to the voicemail server, but there are new voicemails waiting on the server.
+      [CHAR LIMIT=64] -->
+    <string name="voicemail_status_messages_waiting">New voicemail waiting. Can\'t load right now.</string>
+    <!--  Voicemail status message shown at the top of call log to invite the user to configure
+    visual voicemail. [CHAR LIMIT=64] -->
+    <string name="voicemail_status_configure_voicemail">Set up your voicemail</string>
+    <!--  Voicemail status message shown at the top of call details screen to notify the user that
+    the audio of this voicemail is not available. [CHAR LIMIT=64] -->
+    <string name="voicemail_status_audio_not_available">Audio not available</string>
+
+    <!--  User action prompt shown next to a voicemail status message to let the user configure
+    visual voicemail. [CHAR LIMIT=20] -->
+    <string name="voicemail_status_action_configure">Set up</string>
+    <!--  User action prompt shown next to a voicemail status message to let the user call voicemail
+    server directly to listen to the voicemails. [CHAR LIMIT=20] -->
+    <string name="voicemail_status_action_call_server">Call voicemail</string>
+
+    <!-- The counter for calls in a group and the date of the latest call as shown in the call log [CHAR LIMIT=15] -->
+    <string name="call_log_item_count_and_date">(<xliff:g id="count">%1$d</xliff:g>)
+        <xliff:g id="date">%2$s</xliff:g>
+    </string>
+
+    <!-- Title for the sms disambiguation dialog -->
+    <string name="sms_disambig_title">Choose number</string>
+
+    <!-- Title for the call disambiguation dialog -->
+    <string name="call_disambig_title">Choose number</string>
+
+    <!-- Message next to disamgiguation dialog check box -->
+    <string name="make_primary">Remember this choice</string>
+
+    <!-- String describing the Search ImageButton
+
+         Used by AccessibilityService to announce the purpose of the button.
+         [CHAR LIMIT=NONE]
+    -->
+    <string name="description_search_button">search</string>
+
+    <!-- String describing the Dial ImageButton
+
+         Used by AccessibilityService to announce the purpose of the button.
+    -->
+    <string name="description_dial_button">dial</string>
+
+    <!-- String describing the digits text box containing the number to dial.
+
+         Used by AccessibilityService to announce the purpose of the view.
+    -->
+    <string name="description_digits_edittext">number to dial</string>
+
+    <!-- String describing the button in the voicemail playback to start/stop playback.
+
+         Used by AccessibilityService to announce the purpose of the view.
+    -->
+    <string name="description_playback_start_stop">Play or stop playback</string>
+
+    <!-- String describing the button in the voicemail playback to switch on/off speakerphone.
+
+         Used by AccessibilityService to announce the purpose of the view.
+    -->
+    <string name="description_playback_speakerphone">Switch on or off speakerphone</string>
+
+    <!-- String describing the seekbar in the voicemail playback to seek playback position.
+
+         Used by AccessibilityService to announce the purpose of the view.
+    -->
+    <string name="description_playback_seek">Seek playback position</string>
+
+    <!-- String describing the button in the voicemail playback to decrease playback rate.
+
+         Used by AccessibilityService to announce the purpose of the view.
+    -->
+    <string name="description_rate_decrease">Decrease playback rate</string>
+
+    <!-- String describing the button in the voicemail playback to increase playback rate.
+
+         Used by AccessibilityService to announce the purpose of the view.
+    -->
+    <string name="description_rate_increase">Increase playback rate</string>
+
+    <!-- Content description for the fake action menu button that brings up the call history
+         activity -->
+    <string name="action_menu_call_history_description">Call History</string>
+
+    <!-- Content description for the fake action menu overflow button.
+         This should be same as the description for the real action menu
+         overflow button available in ActionBar.
+         [CHAR LIMIT=NONE] -->
+    <string name="action_menu_overflow_description" msgid="2295659037509008453">More options</string>
+
+    <!-- Content description for the button that displays the dialpad
+         [CHAR LIMIT=NONE] -->
+    <string name="action_menu_dialpad_button">dial pad</string>
+
+    <!-- Menu item used to show only outgoing in the call log. [CHAR LIMIT=30] -->
+    <string name="menu_show_outgoing_only">Show outgoing only</string>
+
+    <!-- Menu item used to show only incoming in the call log. [CHAR LIMIT=30] -->
+    <string name="menu_show_incoming_only">Show incoming only</string>
+
+    <!-- Menu item used to show only missed in the call log. [CHAR LIMIT=30] -->
+    <string name="menu_show_missed_only">Show missed only</string>
+
+    <!-- Menu item used to show only voicemails in the call log. [CHAR LIMIT=30] -->
+    <string name="menu_show_voicemails_only">Show voicemails only</string>
+
+    <!-- Menu item used to show all calls in the call log. [CHAR LIMIT=30] -->
+    <string name="menu_show_all_calls">Show all calls</string>
+
+    <!-- Menu items for dialpad options as part of Pause and Wait ftr [CHAR LIMIT=30] -->
+    <string name="add_2sec_pause">Add 2-sec pause</string>
+    <string name="add_wait">Add wait</string>
+
+    <!-- Label for the dialer app setting page [CHAR LIMIT=30]-->
+    <string name="dialer_settings_label">Settings</string>
+
+    <!-- Menu item to create a new contact [CHAR LIMIT=30] -->
+    <string name="menu_newContact">New contact</string>
+
+    <!-- Menu item to display all contacts [CHAR LIMIT=30] -->
+    <string name="menu_allContacts">All contacts</string>
+
+    <!-- Title bar for call detail screen -->
+    <string name="callDetailTitle">Call details</string>
+
+    <!-- Toast for call detail screen when couldn't read the requested details -->
+    <string name="toast_call_detail_error">Details not available</string>
+
+    <!-- Item label: jump to the in-call DTMF dialpad.
+         (Part of a list of options shown in the dialer when another call
+         is already in progress.) -->
+    <string name="dialer_useDtmfDialpad">Use touch tone keypad</string>
+
+    <!-- Item label: jump to the in-call UI.
+         (Part of a list of options shown in the dialer when another call
+         is already in progress.) -->
+    <string name="dialer_returnToInCallScreen">Return to call in progress</string>
+
+    <!-- Item label: use the Dialer's dialpad to add another call.
+         (Part of a list of options shown in the dialer when another call
+         is already in progress.) -->
+    <string name="dialer_addAnotherCall">Add call</string>
+
+    <!-- Title for incoming call type. [CHAR LIMIT=40] -->
+    <string name="type_incoming">Incoming call</string>
+
+    <!-- Title for outgoing call type. [CHAR LIMIT=40] -->
+    <string name="type_outgoing">Outgoing call</string>
+
+    <!-- Title for missed call type. [CHAR LIMIT=40] -->
+    <string name="type_missed">Missed call</string>
+
+    <!-- Title for incoming video call in call details screen [CHAR LIMIT=60] -->
+    <string name="type_incoming_video">Incoming video call</string>
+
+    <!-- Title for outgoing video call in call details screen [CHAR LIMIT=60] -->
+    <string name="type_outgoing_video">Outgoing video call</string>
+
+    <!-- Title for missed video call in call details screen [CHAR LIMIT=60] -->
+    <string name="type_missed_video">Missed video call</string>
+
+    <!-- Title for voicemail details screen -->
+    <string name="type_voicemail">Voicemail</string>
+
+    <!-- Title for rejected call type. [CHAR LIMIT=40] -->
+    <string name="type_rejected">Declined call</string>
+
+    <!-- Title for blocked call type. [CHAR LIMIT=40] -->
+    <string name="type_blocked">Blocked call</string>
+
+    <!-- Description for incoming calls going to voice mail vs. not -->
+    <string name="actionIncomingCall">Incoming calls</string>
+
+    <!-- String describing the icon in the call log used to play a voicemail.
+
+        Note: AccessibilityServices use this attribute to announce what the view represents.
+              This is especially valuable for views without textual representation like ImageView.
+    -->
+    <string name="description_call_log_play_button">Play voicemail</string>
+
+    <!-- String describing the button to view the contact for the current number.
+
+        Note: AccessibilityServices use this attribute to announce what the view represents.
+              This is especially valuable for views without textual representation like ImageView.
+    -->
+    <string name="description_view_contact">View contact <xliff:g id="name">%1$s</xliff:g></string>
+
+    <!-- String describing the button to call a number or contact.
+
+        Note: AccessibilityServices use this attribute to announce what the view represents.
+              This is especially valuable for views without textual representation like ImageView.
+    -->
+    <string name="description_call">Call <xliff:g id="name">%1$s</xliff:g></string>
+
+    <!-- String describing the button to access the contact details for a name or number.
+
+        Note: AccessibilityServices use this attribute to announce what the view represents.
+              This is especially valuable for views without textual representation like ImageView.
+    -->
+    <string name="description_contact_details">Contact details for <xliff:g id="nameOrNumber">%1$s</xliff:g></string>
+
+    <!-- String indicating the number of calls to/from a caller in the call log.
+
+    Note: AccessibilityServices use this attribute to announce what the view represents.
+          This is especially valuable for views without textual representation like ImageView.
+    -->
+    <string name="description_num_calls"><xliff:g id="numberOfCalls">%1$s</xliff:g> calls.</string>
+
+    <!-- String indicating a call log entry had video capabilities.
+
+    Note: AccessibilityServices use this attribute to announce what the view represents.
+          This is especially valuable for views without textual representation like ImageView.
+          [CHAR LIMIT=NONE]
+    -->
+    <string name="description_video_call">Video call.</string>
+
+    <!-- String describing the button to SMS a number or contact.
+
+        Note: AccessibilityServices use this attribute to announce what the view represents.
+              This is especially valuable for views without textual representation like ImageView.
+              [CHAR LIMIT=NONE]
+    -->
+    <string name="description_send_text_message">Send SMS to <xliff:g id="name">%1$s</xliff:g></string>
+
+    <!-- String describing the icon in the call log used to represent an unheard voicemail left to
+         the user.
+
+        Note: AccessibilityServices use this attribute to announce what the view represents.
+              This is especially valuable for views without textual representation like ImageView.
+              [CHAR LIMIT=NONE]
+    -->
+    <string name="description_call_log_unheard_voicemail">Unheard voicemail</string>
+
+    <!-- String describing the icon used to start a voice search -->
+    <string name="description_start_voice_search">Start voice search</string>
+
+    <!-- Menu item used to call a contact, containing the number of the contact to call -->
+    <string name="menu_callNumber">Call <xliff:g id="number">%s</xliff:g></string>
+
+    <!-- String used to display calls from unknown numbers in the call log -->
+    <string name="unknown">Unknown</string>
+
+    <!-- String used for displaying calls to the voicemail number in the call log -->
+    <string name="voicemail">Voicemail</string>
+
+    <!-- String used to display calls from private numbers in the call log -->
+    <string name="private_num">Private number</string>
+
+    <!-- String used to display calls from pay phone in the call log -->
+    <string name="payphone">Payphone</string>
+
+    <!-- A nicely formatted call duration displayed when viewing call details for duration less than 1 minute. For example "28 sec" -->
+    <string name="callDetailsShortDurationFormat"><xliff:g id="seconds" example="28">%s</xliff:g> sec</string>
+
+    <!-- A nicely formatted call duration displayed when viewing call details. For example "42 min 28 sec" -->
+    <string name="callDetailsDurationFormat"><xliff:g id="minutes" example="42">%s</xliff:g> min <xliff:g id="seconds" example="28">%s</xliff:g> sec</string>
+
+    <!-- The string 'Today'. This value is used in the voicemailCallLogDateTimeFormat rather than an
+         explicit date string, e.g. Jul 25, 2014, in the event that a voicemail was created on the
+         current day -->
+    <string name="voicemailCallLogToday">@string/call_log_header_today</string>
+
+    <!-- A format string used for displaying the date and time for a voicemail call log. For example: Jul 25, 2014 at 2:49 PM
+         The date will be replaced by 'Today' for voicemails created on the current day. For example: Today at 2:49 PM -->
+    <string name="voicemailCallLogDateTimeFormat"><xliff:g id="date" example="Jul 25, 2014">%1$s</xliff:g> at <xliff:g id="time" example="2:49 PM">%2$s</xliff:g></string>
+
+    <!-- Dialog message which is shown when the user tries to make a phone call
+         to prohibited phone numbers [CHAR LIMIT=NONE] -->
+    <string name="dialog_phone_call_prohibited_message" msgid="4313552620858880999">Can\'t call this number</string>
+
+    <!-- Dialog message which is shown when the user tries to check voicemail
+         while the system isn't ready for the access. [CHAR LIMIT=NONE] -->
+    <string name="dialog_voicemail_not_ready_message">To set up voicemail, go to Menu &gt; Settings.</string>
+
+    <!-- Dialog message which is shown when the user tries to check voicemail
+         while the system is in airplane mode. The user cannot access to
+         voicemail service in Airplane mode. [CHAR LIMI=NONE] -->
+    <string name="dialog_voicemail_airplane_mode_message">To call voicemail, first turn off Airplane mode.</string>
+
+    <!-- Message that appears in the favorites tab of the Phone app when the contact list has not fully loaded yet (below the favorite and frequent contacts) [CHAR LIMIT=20] -->
+    <string name="contact_list_loading">Loading\u2026</string>
+
+    <!-- The title of a dialog that displays the IMEI of the phone -->
+    <string name="imei">IMEI</string>
+
+    <!-- The title of a dialog that displays the MEID of the CDMA phone -->
+    <string name="meid">MEID</string>
+
+    <!-- Dialog text displayed when loading a phone number from the SIM card for speed dial -->
+    <string name="simContacts_emptyLoading">Loading from SIM card\u2026</string>
+
+    <!-- Dialog title displayed when loading a phone number from the SIM card for speed dial -->
+    <string name="simContacts_title">SIM card contacts</string>
+
+    <!-- Message displayed when there is no application available to handle the add contact menu option. [CHAR LIMIT=NONE] -->
+    <string name="add_contact_not_available">No contacts app available</string>
+
+    <!-- Message displayed when there is no application available to handle voice search. [CHAR LIMIT=NONE] -->
+    <string name="voice_search_not_available">Voice search not available</string>
+
+    <!-- Message displayed when the Phone application has been disabled and a phone call cannot
+         be made. [CHAR LIMIT=NONE] -->
+    <string name="call_not_available">Cannot make a phone call because the Phone application has been disabled.</string>
+
+    <!-- Message displayed when there is no application available to handle a particular action.
+         [CHAR LIMIT=NONE] -->
+    <string name="activity_not_available">No app for that on this device</string>
+
+    <!-- Hint displayed in dialer search box when there is no query that is currently typed.
+         [CHAR LIMIT=30] -->
+    <string name="dialer_hint_find_contact">Search contacts</string>
+
+    <!-- Hint displayed in add blocked number search box when there is no query typed.
+         [CHAR LIMIT=45] -->
+    <string name="block_number_search_hint">Add number or search contacts</string>
+
+    <!-- String resource for the font-family to use for the call log activity's title
+         Do not translate. -->
+    <string name="call_log_activity_title_font_family">sans-serif-light</string>
+
+    <!-- String resource for the font-family to use for the full call history footer
+         Do not translate. -->
+    <string name="view_full_call_history_font_family">sans-serif</string>
+
+    <!-- Text displayed when the call log is empty. -->
+    <string name="call_log_all_empty">Your call history is empty</string>
+
+    <!-- Label of the button displayed when the call history is empty. Allows the user to make a call. -->
+    <string name="call_log_all_empty_action">Make a call</string>
+
+    <!-- Text displayed when the list of missed calls is empty -->
+    <string name="call_log_missed_empty">You have no missed calls.</string>
+
+    <!-- Text displayed when the list of voicemails is empty -->
+    <string name="call_log_voicemail_empty">Your voicemail inbox is empty.</string>
+
+    <!--  Menu option to show favorite contacts only -->
+    <string name="show_favorites_only">Show favorites only</string>
+
+    <!--  Title of activity that displays a list of all calls -->
+    <string name="call_log_activity_title">Call History</string>
+
+    <!-- Title for the call log tab containing the list of all voicemails and calls
+         [CHAR LIMIT=30] -->
+    <string name="call_log_all_title">All</string>
+
+    <!-- Title for the call log tab containing the list of all missed calls only
+         [CHAR LIMIT=30] -->
+    <string name="call_log_missed_title">Missed</string>
+
+    <!-- Title for the call log tab containing the list of all voicemail calls only
+         [CHAR LIMIT=30] -->
+    <string name="call_log_voicemail_title">Voicemail</string>
+
+    <!-- Confirmation dialog title for blocking a number. [CHAR LIMIT=NONE] -->
+    <string name="block_number_confirmation_title">Block
+        <xliff:g id="number" example="(555) 555-5555">%1$s</xliff:g>?</string>
+
+    <!-- Confirmation dialog message for blocking a number with visual voicemail active.
+         [CHAR LIMIT=NONE] -->
+    <string name="block_number_confirmation_message_vvm">
+        Calls from this number will be blocked and voicemails will be automatically deleted.
+    </string>
+
+    <!-- Confirmation dialog message for blocking a number with no visual voicemail.
+         [CHAR LIMIT=NONE] -->
+    <string name="block_number_confirmation_message_no_vvm">
+        Calls from this number will be blocked, but the caller may still be able to leave you voicemails.
+    </string>
+
+    <!-- Block number alert dialog button [CHAR LIMIT=32] -->
+    <string name="block_number_ok">BLOCK</string>
+
+    <!-- Confirmation dialog for unblocking a number. [CHAR LIMIT=NONE] -->
+    <string name="unblock_number_confirmation_title">Unblock
+        <xliff:g id="number" example="(555) 555-5555">%1$s</xliff:g>?</string>
+
+    <!-- Confirmation dialog message for unblocking a number.
+         [CHAR LIMIT=NONE] -->
+    <string name="unblock_number_confirmation_message">
+         This number will no longer be blocked from calling you.
+    </string>
+
+    <!-- Unblock number alert dialog button [CHAR LIMIT=32] -->
+    <string name="unblock_number_ok">UNBLOCK</string>
+
+    <!-- Accessibility text for the tab showing recent and favorite contacts who can be called.
+         [CHAR LIMIT=40] -->
+    <string name="tab_speed_dial">Speed dial</string>
+
+    <!-- Accessibility text for the tab showing the call history. [CHAR LIMIT=40] -->
+    <string name="tab_history">Call History</string>
+
+    <!-- Accessibility text for the tab showing the user's contacts. [CHAR LIMIT=40] -->
+    <string name="tab_all_contacts">Contacts</string>
+
+    <!-- Accessibility text for the tab showing the user's voicemails. [CHAR LIMIT=40] -->
+    <string name="tab_voicemail">Voicemail</string>
+
+    <!--  Text displayed when user swipes out a favorite contact -->
+    <string name="favorite_hidden">Removed from favorites</string>
+    <!--  Text displayed for the undo button to undo removing a favorite contact -->
+    <string name="favorite_hidden_undo">Undo</string>
+
+    <!-- Shortcut item used to call a number directly from search -->
+    <string name="search_shortcut_call_number">Call
+        <xliff:g id="number">%s</xliff:g>
+    </string>
+
+    <!-- Shortcut item used to add a number directly to a new contact from search.
+         [CHAR LIMIT=25] -->
+    <string name="search_shortcut_create_new_contact">Create new contact</string>
+
+    <!-- Shortcut item used to add a number to an existing contact directly from search.
+         [CHAR LIMIT=25] -->
+    <string name="search_shortcut_add_to_contact">Add to a contact</string>
+
+    <!-- Shortcut item used to send a text message directly from search. [CHAR LIMIT=25] -->
+    <string name="search_shortcut_send_sms_message">Send SMS</string>
+
+    <!-- Shortcut item used to make a video call directly from search. [CHAR LIMIT=25] -->
+    <string name="search_shortcut_make_video_call">Make video call</string>
+
+    <!-- Shortcut item used to block a number directly from search. [CHAR LIMIT=25] -->
+    <string name="search_shortcut_block_number">Block number</string>
+
+    <!-- Number of missed calls shown on call card [CHAR LIMIT=40] -->
+    <string name="num_missed_calls"><xliff:g id="number">%s</xliff:g> new missed calls</string>
+
+    <!-- Shown when there are no speed dial favorites. -->
+    <string name="speed_dial_empty">No one is on your speed dial yet</string>
+
+    <!-- Shown as an action when there are no speed dial favorites -->
+    <string name="speed_dial_empty_add_favorite_action">Add a favorite</string>
+
+    <!-- Shown when there are no contacts in the all contacts list. -->
+    <string name="all_contacts_empty">You don\'t have any contacts yet</string>
+
+    <!-- Shown as an action when the all contacts list is empty -->
+    <string name="all_contacts_empty_add_contact_action">Add a contact</string>
+
+    <!-- Shows up as a tooltip to provide a hint to the user that the profile pic in a contact
+         card can be tapped to bring up a list of all numbers, or long pressed to start reordering
+         [CHAR LIMIT=NONE]
+    -->
+    <string name="contact_tooltip">Touch image to see all numbers or touch &amp; hold to reorder</string>
+
+    <!-- Remove button that shows up when contact is long-pressed. [CHAR LIMIT=NONE] -->
+    <string name="remove_contact">Remove</string>
+
+    <!-- Button text for the "video call" displayed underneath an entry in the call log.
+         Tapping causes a video call to be placed to the caller represented by the call log entry.
+         [CHAR LIMIT=30] -->
+    <string name="call_log_action_video_call">Video call</string>
+
+    <!-- Button text for a button displayed underneath an entry in the call log, which opens up a
+         messaging app to send a SMS to the number represented by the call log entry.
+         [CHAR LIMIT=30] -->
+    <string name="call_log_action_send_message">Send a message</string>
+
+    <!-- Button text for the button displayed underneath an entry in the call log.
+         Tapping navigates the user to the call details screen where the user can view details for
+         the call log entry. [CHAR LIMIT=30] -->
+    <string name="call_log_action_details">Call details</string>
+
+    <!-- Button text for the button displayed underneath an entry in the call log, which when
+         tapped triggers a return call to the named user. [CHAR LIMIT=30] -->
+    <string name="call_log_action_call">
+        Call <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- String describing an incoming missed call entry in the call log.
+         Note: AccessibilityServices uses this attribute to announce what the view represents.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_incoming_missed_call">Missed call from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>, <xliff:g id="typeOrLocation" example="Mobile">^2</xliff:g>, <xliff:g id="timeOfCall" example="2 min ago">^3</xliff:g>, <xliff:g id="phoneAccount" example="on SIM 1">^4</xliff:g>.</string>
+
+    <!-- String describing an incoming answered call entry in the call log.
+         Note: AccessibilityServices uses this attribute to announce what the view represents.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_incoming_answered_call">Answered call from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>, <xliff:g id="typeOrLocation" example="Mobile">^2</xliff:g>, <xliff:g id="timeOfCall" example="2 min ago">^3</xliff:g>, <xliff:g id="phoneAccount" example="on SIM 1">^4</xliff:g>.</string>
+
+    <!-- String describing an "unread" voicemail entry in the voicemails tab.
+         Note: AccessibilityServices use this attribute to announce what the view represents.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_unread_voicemail">Unread voicemail from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>, <xliff:g id="typeOrLocation" example="Mobile">^2</xliff:g>, <xliff:g id="timeOfCall" example="2 min ago">^3</xliff:g>, <xliff:g id="phoneAccount" example="on SIM 1">^4</xliff:g>.</string>
+
+    <!-- String describing a "read" voicemail entry in the voicemails tab.
+     Note: AccessibilityServices use this attribute to announce what the view represents.
+     [CHAR LIMIT=NONE] -->
+    <string name="description_read_voicemail">Voicemail from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>, <xliff:g id="typeOrLocation" example="Mobile">^2</xliff:g>, <xliff:g id="timeOfCall" example="2 min ago">^3</xliff:g>, <xliff:g id="phoneAccount" example="on SIM 1">^4</xliff:g>.</string>
+
+    <!-- String describing an outgoing call entry in the call log.
+         Note: AccessibilityServices uses this attribute to announce what the view represents.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_outgoing_call">Call to <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>, <xliff:g id="typeOrLocation" example="Mobile">^2</xliff:g>, <xliff:g id="timeOfCall" example="2 min ago">^3</xliff:g>, <xliff:g id="phoneAccount" example="on SIM 1">^4</xliff:g>.</string>
+
+    <!-- String describing the phone account the call was made on or to. This string will be used
+         in description_incoming_missed_call, description_incoming_answered_call, and
+         description_outgoing_call.
+         Note: AccessibilityServices uses this attribute to announce what the view represents.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_phone_account">on <xliff:g id="phoneAccount" example="SIM 1">^1</xliff:g></string>
+
+    <!-- String describing the phone icon on a call log list item. When tapped, it will place a
+         call to the number represented by that call log entry. [CHAR LIMIT=NONE]-->
+    <string name="description_call_log_call_action">Call</string>
+
+    <!-- String describing the "call" action for an entry in the call log.  The call back
+         action triggers a return call to the named user.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_call_action">
+        Call <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- String describing the "video call" action for an entry in the call log.  The video call
+         action triggers a return video call to the named person/number.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_video_call_action">
+        Video call <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>.
+    </string>
+
+    <!-- String describing the "listen" action for an entry in the call log.  The listen
+         action is shown for call log entries representing a voicemail message and this button
+         triggers playing back the voicemail.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_voicemail_action">
+        Listen to voicemail from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- String describing the "play voicemail" action for an entry in the call log.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_voicemail_play">
+        Play voicemail from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- String describing the "pause voicemail" action for an entry in the call log.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_voicemail_pause">
+        Pause voicemail from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+
+    <!-- String describing the "delete voicemail" action for an entry in the call log.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_voicemail_delete">
+        Delete voicemail from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- String describing the number of new voicemails, displayed as a number badge on a tab.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <plurals name="description_voicemail_unread">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> new voicemail</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> new voicemails</item>
+    </plurals>
+
+    <!-- Description for the "create new contact" action for an entry in the call log. This action
+         opens a screen for creating a new contact for this name or number. [CHAR LIMIT=NONE] -->
+    <string name="description_create_new_contact_action">
+        Create contact for <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- Description for the "add to existing contact" action for an entry in the call log. This
+         action opens a screen for adding this name or number to an existing contact.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_add_to_existing_contact_action">
+        Add <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g> to existing contact
+    </string>
+
+    <!-- String describing the "details" action for an entry in the call log.  The details action
+         displays the call details screen for an entry in the call log.  This shows the calls to
+         and from the specified number associated with the call log entry.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_details_action">
+        Call details for <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- Toast message which appears when a call log entry is deleted.
+         [CHAR LIMIT=NONE] -->
+    <string name="toast_entry_removed">Deleted from call history</string>
+
+    <!-- String used as a header in the call log above calls which occurred today.
+         [CHAR LIMIT=65] -->
+    <string name="call_log_header_today">Today</string>
+
+    <!-- String used as a header in the call log above calls which occurred yesterday.
+         [CHAR LIMIT=65] -->
+    <string name="call_log_header_yesterday">Yesterday</string>
+
+    <!-- String used as a header in the call log above calls which occurred two days or more ago.
+         [CHAR LIMIT=65] -->
+    <string name="call_log_header_other">Older</string>
+
+    <!-- String a header on the call details screen.  Appears above the list calls to or from a
+         particular number.
+         [CHAR LIMIT=65] -->
+    <string name="call_detail_list_header">Calls list</string>
+
+    <!-- String describing the "speaker on" button on the playback control used to listen to a
+         voicemail message.  When speaker is on, playback of the voicemail will occur through the
+         phone speaker.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="voicemail_speaker_on">Turn speaker on.</string>
+
+    <!-- String describing the "speaker off" button on the playback control used to listen to a
+         voicemail message.  When speaker is off, playback of the voicemail will occur through the
+         phone earpiece.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="voicemail_speaker_off">Turn speaker off.</string>
+
+    <!-- String describing the "play faster" button in the playback control used to listen to a
+         voicemail message.  Speeds up playback of the voicemail message.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="voicemail_play_faster">Play faster.</string>
+
+    <!-- String describing the "play slower" button in the playback control used to listen to a
+         voicemail message.  Slows down playback of the voicemail message.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="voicemail_play_slower">Play slower.</string>
+
+    <!-- String describing the "play/pause" button in the playback control used to listen to a
+         voicemail message.  Starts playback or pauses ongoing playback.
+         Note: AccessibilityServices uses this attribute to announce the purpose of the button.
+         [CHAR LIMIT=NONE] -->
+    <string name="voicemail_play_start_pause">Start or pause playback.</string>
+
+    <!-- Delimeter used between each item in a textual list; for example "Alpha, Beta".
+         [CHAR LIMIT=3] -->
+    <string name="list_delimeter">", "</string>
+
+    <!-- Dialer settings related strings-->
+
+    <!-- Title for "Display options" category, which controls how contacts are shown.
+         [CHAR LIMIT=40] -->
+    <string name="display_options_title">Display options</string>
+
+    <!-- Title for the "Sounds and vibration" settings control settings related to ringtones,
+         dialpad tones, and vibration for incoming calls. [CHAR LIMIT=40] -->
+    <string name="sounds_and_vibration_title">Sounds and vibration</string>
+
+    <!-- Title for "Accessibility" category, which controls settings such as TTY mode and hearing
+         aid compatability. [CHAR LIMIT=40] -->
+    <string name="accessibility_settings_title">Accessibility</string>
+
+    <!-- Setting option name to pick ringtone (a list dialog comes up). [CHAR LIMIT=30] -->
+    <string name="ringtone_title">Phone ringtone</string>
+
+    <!-- Setting option name to enable or disable vibration when ringing the phone.
+         [CHAR LIMIT=30] -->
+    <string name="vibrate_on_ring_title">"Also vibrate for calls</string>
+
+    <!-- Setting option name to enable or disable DTMF tone sound [CHAR LIMIT=30] -->
+    <string name="dtmf_tone_enable_title">Dialpad tones</string>
+    <!-- Label for setting to adjust the length of DTMF tone sounds. [CHAR LIMIT=40] -->
+    <string name="dtmf_tone_length_title">Dialpad tone length</string>
+    <!-- Options displayed for the length of DTMF tone sounds. [CHAR LIMIT=40] -->
+    <string-array name="dtmf_tone_length_entries">
+      <item>Normal</item>
+      <item>Long</item>
+    </string-array>
+    <!-- Do not translate. -->
+    <string-array name="dtmf_tone_length_entry_values" translatable="false">
+       <item>0</item>
+       <item>1</item>
+    </string-array>
+
+    <!-- Title of settings screen for managing the "Respond via SMS" feature. [CHAR LIMIT=30] -->
+    <string name="respond_via_sms_setting_title">Quick responses</string>
+
+    <!-- Label for the call settings section [CHAR LIMIT=30] -->
+    <string name="call_settings_label">Calls</string>
+
+    <!-- Label for the blocked numbers settings section [CHAR LIMIT=30] -->
+    <string name="manage_blocked_numbers_label">Call blocking</string>
+
+    <!-- Label for a section describing that call blocking is temporarily disabled because an
+         emergency call was made. [CHAR LIMIT=50] -->
+    <string name="blocked_numbers_disabled_emergency_header_label">
+        Call blocking temporarily off
+    </string>
+
+    <!-- Description that call blocking is temporarily disabled because the user called an
+         emergency number, and explains that call blocking will be re-enabled after a buffer
+         period has passed. [CHAR LIMIT=NONE] -->
+    <string name="blocked_numbers_disabled_emergency_desc">
+        Call blocking has been disabled because you contacted emergency services from this phone
+        within the last 48 hours. It will be automatically reenabled once the 48 hour period
+        expires.
+    </string>
+
+    <!-- Label for fragment to import numbers from contacts marked as send to voicemail.
+         [CHAR_LIMIT=30] -->
+    <string name="import_send_to_voicemail_numbers_label">Import numbers</string>
+
+    <!-- Text informing the user they have previously marked contacts to be sent to voicemail.
+         This will be followed by two buttons, 1) to view who is marked to be sent to voicemail
+         and 2) importing these settings to Dialer's block list. [CHAR LIMIT=NONE] -->
+    <string name="blocked_call_settings_import_description">
+        You previously marked some callers to be automatically sent to voicemail via other apps.
+    </string>
+
+    <!-- Label for button to view numbers of contacts previous marked to be sent to voicemail.
+         [CHAR_LIMIT=20] -->
+    <string name="blocked_call_settings_view_numbers_button">View Numbers</string>
+
+    <!-- Label for button to import settings for sending contacts to voicemail into Dialer's block
+         list. [CHAR_LIMIT=20] -->
+    <string name="blocked_call_settings_import_button">Import</string>
+
+    <!-- Error toast message for when send to voicemail import fails. [CHAR LIMIT=40] -->
+    <string name="send_to_voicemail_import_failed">Import failed</string>
+
+    <!-- String describing the delete icon on a blocked number list item.
+        When tapped, it will show a dialog confirming the unblocking of the number.
+        [CHAR LIMIT=NONE]-->
+    <string name="description_blocked_number_list_delete">Unblock number</string>
+
+    <!-- Button to bring up UI to add a number to the blocked call list. [CHAR LIMIT=40] -->
+    <string name="addBlockedNumber">Add number</string>
+
+    <!-- Footer message of number blocking screen with visual voicemail active.
+        [CHAR LIMIT=NONE] -->
+    <string name="block_number_footer_message_vvm">
+        Calls from these numbers will be blocked and voicemails will be automatically deleted.
+    </string>
+
+    <!-- Footer message of number blocking screen with no visual voicemail.
+         [CHAR LIMIT=NONE] -->
+    <string name="block_number_footer_message_no_vvm">
+         Calls from these numbers will be blocked, but they may still be able to leave you voicemails.
+    </string>
+
+    <!-- Heading for the block list in the "Spam and blocked cal)ls" settings. [CHAR LIMIT=64] -->
+    <string name="block_list">Blocked numbers</string>
+
+    <!-- Error message shown when user tries to add invalid number to the block list.
+        [CHAR LIMIT=64] -->
+    <string name="invalidNumber"><xliff:g id="number" example="(555) 555-5555">%1$s</xliff:g>
+        is invalid.</string>
+
+    <!-- Error message shown when user tries to add a number to the block list that was already
+        blocked. [CHAR LIMIT=64] -->
+    <string name="alreadyBlocked"><xliff:g id="number" example="(555) 555-5555">%1$s</xliff:g>
+        is already blocked.</string>
+
+    <!-- Title of notification telling the user that call blocking has been temporarily disabled.
+         [CHAR LIMIT=56] -->
+    <string name="call_blocking_disabled_notification_title">
+        Call blocking disabled for 48 hours
+    </string>
+
+    <!-- Text for notification which provides the reason that call blocking has been temporarily
+         disabled. Namely, we disable call blocking after an emergency call in case of return
+         phone calls made by emergency services. [CHAR LIMIT=64] -->
+    <string name="call_blocking_disabled_notification_text">
+        Disabled because an emergency call was made.
+    </string>
+
+    <!-- Label for the phone account settings [CHAR LIMIT=30] -->
+    <string name="phone_account_settings_label">Calling accounts</string>
+
+    <!-- DO NOT TRANSLATE. Internal key for ringtone preference. -->
+    <string name="ringtone_preference_key" translatable="false">button_ringtone_key</string>
+    <!-- DO NOT TRANSLATE. Internal key for vibrate when ringing preference. -->
+    <string name="vibrate_on_preference_key" translatable="false">button_vibrate_on_ring</string>
+    <!-- DO NOT TRANSLATE. Internal key for vibrate when ringing preference. -->
+    <string name="play_dtmf_preference_key" translatable="false">button_play_dtmf_tone</string>
+    <!-- DO NOT TRANSLATE. Internal key for DTMF tone length preference. -->
+    <string name="dtmf_tone_length_preference_key" translatable="false">button_dtmf_settings</string>
+
+    <!-- The label of the button used to turn on a single permission [CHAR LIMIT=30]-->
+    <string name="permission_single_turn_on">Turn on</string>
+
+    <!--  The label of the button used to turn on multiple permissions [CHAR LIMIT=30]-->
+    <string name="permission_multiple_turn_on">Set permissions</string>
+
+    <!-- Shown as a prompt to turn on the contacts permission to enable speed dial [CHAR LIMIT=NONE]-->
+    <string name="permission_no_speeddial">To enable speed dial, turn on the Contacts permission.</string>
+
+    <!-- Shown as a prompt to turn on the phone permission to enable the call log [CHAR LIMIT=NONE]-->
+    <string name="permission_no_calllog">To see your call log, turn on the Phone permission.</string>
+
+    <!-- Shown as a prompt to turn on the contacts permission to show all contacts [CHAR LIMIT=NONE]-->
+    <string name="permission_no_contacts">To see your contacts, turn on the Contacts permission.</string>
+
+    <!-- Shown as a prompt to turn on the phone permission to show voicemails [CHAR LIMIT=NONE]-->
+    <string name="permission_no_voicemail">To access your voicemail, turn on the Phone permission.</string>
+
+    <!-- Shown as a prompt to turn on contacts permissions to allow contact search [CHAR LIMIT=NONE]-->
+    <string name="permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
+
+    <!-- Shown as a prompt to turn on the phone permission to allow a call to be placed [CHAR LIMIT=NONE]-->
+    <string name="permission_place_call">To place a call, turn on the Phone permission.</string>
+
+    <!-- Shown as a message that notifies the user that the Phone app cannot write to system settings, which is why the system settings app is being launched directly instead. [CHAR LIMIT=NONE]-->
+    <string name="toast_cannot_write_system_settings">Phone app does not have permission to write to system settings.</string>
+</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
new file mode 100644
index 0000000..66a45f9
--- /dev/null
+++ b/res/values/styles.xml
@@ -0,0 +1,331 @@
+<?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
+  -->
+<resources>
+    <style name="DialtactsTheme" parent="Theme.AppCompat.Light">
+        <item name="android:textColorPrimary">@color/dialtacts_primary_text_color</item>
+        <item name="android:textColorSecondary">@color/dialtacts_secondary_text_color</item>
+
+        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
+        <item name="android:windowActionBarOverlay">true</item>
+        <item name="windowActionBarOverlay">true</item>
+        <item name="android:windowActionModeOverlay">true</item>
+        <item name="windowActionModeOverlay">true</item>
+        <item name="android:actionBarStyle">@style/DialtactsActionBarStyle</item>
+        <item name="actionBarStyle">@style/DialtactsActionBarStyle</item>
+        <!-- Style for the overflow button in the actionbar. -->
+        <item name="android:actionOverflowButtonStyle">@style/DialtactsActionBarOverflow</item>
+        <item name="actionOverflowButtonStyle">@style/DialtactsActionBarOverflow</item>
+
+        <!--  Drawable for the back button -->
+        <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:listViewStyle">@style/ListViewStyle</item>
+        <item name="android:overlapAnchor">true</item>
+        <item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
+        <item name="activated_background">@drawable/list_item_activated_background</item>
+        <item name="section_header_background">@drawable/list_title_holo</item>
+        <item name="list_section_header_height">32dip</item>
+        <item name="list_item_padding_top">12dp</item>
+        <item name="list_item_padding_right">24dp</item>
+        <item name="list_item_padding_bottom">12dp</item>
+        <item name="list_item_padding_left">16dp</item>
+        <item name="list_item_gap_between_image_and_text">
+            @dimen/contact_browser_list_item_gap_between_image_and_text
+        </item>
+        <item name="list_item_gap_between_label_and_data">8dip</item>
+        <item name="list_item_presence_icon_margin">4dip</item>
+        <item name="list_item_presence_icon_size">16dip</item>
+        <item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
+        <item name="list_item_profile_photo_size">70dip</item>
+        <item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
+        <item name="list_item_background_color">@color/background_dialer_light</item>
+        <item name="list_item_header_text_indent">8dip</item>
+        <item name="list_item_header_text_color">@color/dialtacts_secondary_text_color</item>
+        <item name="list_item_header_text_size">14sp</item>
+        <item name="list_item_header_height">30dip</item>
+        <item name="list_item_data_width_weight">5</item>
+        <item name="list_item_label_width_weight">3</item>
+        <item name="contact_browser_list_padding_left">0dp</item>
+        <item name="contact_browser_list_padding_right">0dp</item>
+        <item name="contact_browser_background">@color/background_dialer_results</item>
+        <item name="list_item_name_text_color">@color/contact_list_name_text_color</item>
+        <item name="list_item_name_text_size">16sp</item>
+        <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
+        <item name="list_item_text_offset_top">-2dp</item>
+        <!-- CallLog -->
+        <item name="call_log_primary_text_color">@color/dialtacts_primary_text_color</item>
+        <item name="call_log_primary_background_color">#000000</item>
+        <item name="call_log_secondary_text_color">@color/dialtacts_secondary_text_color</item>
+        <item name="call_log_secondary_background_color">#333333</item>
+        <item name="call_log_header_color">#33b5e5</item>
+        <!-- VoicemailStatus -->
+        <item name="call_log_voicemail_status_height">48dip</item>
+        <item name="call_log_voicemail_status_background_color">#262626</item>
+        <item name="call_log_voicemail_status_text_color">#888888</item>
+        <item name="call_log_voicemail_status_action_text_color">#33b5e5</item>
+            <!-- Favorites -->
+        <item name="favorites_padding_bottom">?android:attr/actionBarSize</item>
+        <item name="android:colorPrimary">@color/dialer_theme_color</item>
+        <item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item>
+        <item name="dialpad_key_button_touch_tint">@color/dialer_dialpad_touch_tint</item>
+        <item name="android:colorControlActivated">@color/dialer_theme_color</item>
+        <item name="android:colorButtonNormal">@color/dialer_theme_color</item>
+        <item name="android:textAppearanceButton">@style/DialerButtonTextStyle</item>
+
+        <!-- Video call icon -->
+        <item name="list_item_video_call_icon_size">32dip</item>
+        <item name="list_item_video_call_icon_margin">8dip</item>
+    </style>
+
+    <style name="DialerButtonTextStyle" parent="@android:style/TextAppearance.Material.Widget.Button">
+        <item name="android:textColor">#fff</item>
+    </style>
+
+    <!-- Action bar overflow menu icon. -->
+    <style name="DialtactsActionBarOverflow"
+           parent="@android:style/Widget.Material.Light.ActionButton.Overflow">
+        <item name="android:src">@drawable/ic_overflow_menu</item>
+    </style>
+
+    <!-- Action bar overflow menu icon.  White with no shadow. -->
+    <style name="DialtactsActionBarOverflowWhite"
+           parent="@android:style/Widget.Material.Light.ActionButton.Overflow">
+        <item name="android:src">@drawable/overflow_menu</item>
+    </style>
+
+    <style name="DialpadTheme" parent="DialtactsTheme">
+        <item name="android:textColorPrimary">#FFFFFF</item>
+    </style>
+
+    <style name="DialtactsThemeWithoutActionBarOverlay" parent="DialtactsTheme">
+        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
+        <item name="android:windowActionBarOverlay">false</item>
+        <item name="windowActionBarOverlay">false</item>
+        <item name="android:actionOverflowButtonStyle">@style/DialtactsActionBarOverflowWhite</item>
+        <item name="actionOverflowButtonStyle">@style/DialtactsActionBarOverflowWhite</item>
+    </style>
+
+    <!-- Hide the actionbar title during the activity preview -->
+    <style name="DialtactsActivityTheme" parent="DialtactsTheme">
+        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
+        <item name="android:actionBarStyle">@style/DialtactsActionBarWithoutTitleStyle</item>
+        <item name="actionBarStyle">@style/DialtactsActionBarWithoutTitleStyle</item>
+
+        <item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb</item>
+        <item name="android:fastScrollTrackDrawable">@null</item>
+    </style>
+
+    <style name="CallDetailActivityTheme" parent="DialtactsThemeWithoutActionBarOverlay">
+        <item name="android:windowBackground">@color/background_dialer_results</item>
+        <!-- CallLog -->
+        <item name="call_log_primary_background_color">#FFFFFF</item>
+        <item name="call_log_secondary_background_color">#FFFFFF</item>
+        <item name="call_log_header_color">#FFFFFF</item>
+        <!-- VoicemailStatus -->
+        <item name="call_log_voicemail_status_height">48dip</item>
+        <item name="call_log_voicemail_status_background_color">#262626</item>
+        <item name="call_log_voicemail_status_text_color">#888888</item>
+        <item name="call_log_voicemail_status_action_text_color">#33b5e5</item>
+        <item name="android:actionOverflowButtonStyle">@style/DialtactsActionBarOverflowWhite</item>
+    </style>
+
+    <style name="CallDetailActionItemStyle">
+        <item name="android:foreground">?android:attr/selectableItemBackground</item>
+        <item name="android:clickable">true</item>
+        <item name="android:drawablePadding">@dimen/call_detail_action_item_drawable_padding</item>
+        <item name="android:gravity">center_vertical</item>
+        <item name="android:paddingStart">@dimen/call_detail_action_item_padding_horizontal</item>
+        <item name="android:paddingEnd">@dimen/call_detail_action_item_padding_horizontal</item>
+        <item name="android:paddingTop">@dimen/call_detail_action_item_padding_vertical</item>
+        <item name="android:paddingBottom">@dimen/call_detail_action_item_padding_vertical</item>
+        <item name="android:textColor">@color/call_detail_footer_text_color</item>
+        <item name="android:textSize">@dimen/call_detail_action_item_text_size</item>
+    </style>
+
+    <style name="DialtactsActionBarStyle"
+           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
+        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
+        <item name="android:background">@color/actionbar_background_color</item>
+        <item name="background">@color/actionbar_background_color</item>
+        <item name="android:titleTextStyle">@style/DialtactsActionBarTitleText</item>
+        <item name="titleTextStyle">@style/DialtactsActionBarTitleText</item>
+        <item name="android:height">@dimen/action_bar_height</item>
+        <item name="height">@dimen/action_bar_height</item>
+        <item name="android:elevation">@dimen/action_bar_elevation</item>
+        <item name="elevation">@dimen/action_bar_elevation</item>
+        <!-- Empty icon -->
+        <item name="android:icon">@android:color/transparent</item>
+        <item name="icon">@android:color/transparent</item>
+        <!-- Shift the title text to the right -->
+        <item name="android:contentInsetStart">@dimen/actionbar_contentInsetStart</item>
+        <item name="contentInsetStart">@dimen/actionbar_contentInsetStart</item>
+    </style>
+
+    <style name="DialtactsActionBarWithoutTitleStyle" parent="DialtactsActionBarStyle">
+        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
+        <item name="android:displayOptions"></item>
+        <item name="displayOptions"></item>
+        <item name="android:height">@dimen/action_bar_height_large</item>
+        <item name="height">@dimen/action_bar_height_large</item>
+        <!-- Override ActionBar title offset to keep search box aligned left -->
+        <item name="android:contentInsetStart">0dp</item>
+        <item name="contentInsetStart">0dp</item>
+        <item name="android:contentInsetEnd">0dp</item>
+        <item name="contentInsetEnd">0dp</item>
+    </style>
+
+    <!-- Text in the action bar at the top of the screen -->
+    <style name="DialtactsActionBarTitleText"
+           parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title">
+        <item name="android:textColor">@color/actionbar_text_color</item>
+    </style>
+
+    <!-- Text style for tabs. -->
+    <style name="DialtactsActionBarTabTextStyle"
+           parent="android:style/Widget.Material.Light.ActionBar.TabText">
+        <item name="android:textColor">@color/tab_text_color</item>
+        <item name="android:textSize">@dimen/tab_text_size</item>
+        <item name="android:fontFamily">"sans-serif-medium"</item>
+    </style>
+
+    <style name="ListViewStyle" parent="@android:style/Widget.Material.Light.ListView">
+        <item name="android:overScrollMode">always</item>
+    </style>
+
+    <style name="CallLogActionStyle">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">@dimen/call_log_action_height</item>
+        <item name="android:background">?android:attr/selectableItemBackground</item>
+        <item name="android:orientation">horizontal</item>
+        <item name="android:gravity">center_vertical</item>
+    </style>
+
+    <style name="CallLogActionTextStyle">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:paddingStart">@dimen/call_log_action_horizontal_padding</item>
+        <item name="android:paddingEnd">@dimen/call_log_action_horizontal_padding</item>
+        <item name="android:textColor">@color/call_log_action_color</item>
+        <item name="android:textSize">@dimen/call_log_primary_text_size</item>
+        <item name="android:fontFamily">"sans-serif"</item>
+        <item name="android:focusable">true</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:importantForAccessibility">no</item>
+    </style>
+
+    <style name="CallLogActionSupportTextStyle" parent="@style/CallLogActionTextStyle">
+        <item name="android:textSize">@dimen/call_log_detail_text_size</item>
+        <item name="android:textColor">@color/call_log_detail_color</item>
+    </style>
+
+    <style name="CallLogActionIconStyle">
+        <item name="android:layout_width">@dimen/call_log_action_icon_dimen</item>
+        <item name="android:layout_height">@dimen/call_log_action_icon_dimen</item>
+        <item name="android:layout_marginStart">@dimen/call_log_action_icon_margin_start</item>
+        <item name="android:tint">?attr/call_log_secondary_text_color</item>
+        <item name="android:importantForAccessibility">no</item>
+    </style>
+
+    <style name="DismissButtonStyle">
+        <item name="android:paddingLeft">@dimen/dismiss_button_padding_start</item>
+        <item name="android:paddingRight">@dimen/dismiss_button_padding_end</item>
+    </style>
+
+    <!-- Style applied to the "Settings" screen.  Keep in sync with SettingsLight in Telephony. -->
+    <style name="SettingsStyle" parent="DialtactsThemeWithoutActionBarOverlay">
+        <!-- Setting text. -->
+        <item name="android:textColorPrimary">@color/settings_text_color_primary</item>
+        <!-- Setting description. -->
+        <item name="android:textColorSecondary">@color/settings_text_color_secondary</item>
+        <item name="android:windowBackground">@color/setting_background_color</item>
+        <item name="android:colorAccent">@color/dialtacts_theme_color</item>
+        <item name="android:textColorLink">@color/dialtacts_theme_color</item>
+    </style>
+
+    <style name="ManageBlockedNumbersStyle" parent="SettingsStyle">
+        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
+        <item name="android:windowActionBarOverlay">true</item>
+        <item name="windowActionBarOverlay">true</item>
+        <item name="android:actionBarStyle">@style/ManageBlockedNumbersActionBarStyle</item>
+        <item name="actionBarStyle">@style/ManageBlockedNumbersActionBarStyle</item>
+        <item name="android:fastScrollTrackDrawable">@null</item>
+    </style>
+
+    <style name="ManageBlockedNumbersActionBarStyle" parent="DialtactsActionBarWithoutTitleStyle">
+        <!-- Styles that require AppCompat compatibility, remember to update both sets -->
+        <item name="android:height">@dimen/action_bar_height</item>
+        <item name="height">@dimen/action_bar_height</item>
+    </style>
+
+    <!-- Inherit from Theme.Material.Light.Dialog instead of Theme.Material.Light.Dialog.Alert
+    since the Alert dialog is private. They are identical anyway. -->
+    <style name="AlertDialogTheme" parent="@android:style/Theme.Material.Light.Dialog">
+        <item name="android:colorAccent">@color/dialtacts_theme_color</item>
+    </style>
+
+    <style name="CallLogCardStyle" parent="CardView">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_margin">4dp</item>
+        <item name="android:baselineAligned">false</item>
+        <item name="cardCornerRadius">2dp</item>
+        <item name="cardBackgroundColor">@color/background_dialer_call_log_list_item</item>
+    </style>
+
+    <style name="TextActionStyle">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">@dimen/call_log_action_height</item>
+        <item name="android:gravity">end|center_vertical</item>
+        <item name="android:paddingStart">@dimen/call_log_action_horizontal_padding</item>
+        <item name="android:paddingEnd">@dimen/call_log_action_horizontal_padding</item>
+        <item name="android:textColor">@color/dialtacts_theme_color</item>
+        <item name="android:fontFamily">"sans-serif-medium"</item>
+        <item name="android:focusable">true</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:textAllCaps">true</item>
+    </style>
+
+    <style name="PromoCardActionStyle" parent="TextActionStyle">
+        <item name="android:textColor">@color/promo_card_text</item>
+        <item name="android:textSize">@dimen/call_log_primary_text_size</item>
+    </style>
+
+    <style name="VoicemailPlaybackLayoutTextStyle">
+        <item name="android:textSize">14sp</item>
+    </style>
+
+    <style name="VoicemailPlaybackLayoutButtonStyle">
+        <item name="android:layout_width">56dp</item>
+        <item name="android:layout_height">56dp</item>
+        <item name="android:background">@drawable/oval_ripple</item>
+        <item name="android:padding">8dp</item>
+    </style>
+
+    <style name="DialerFlatButtonStyle" parent="@android:style/Widget.Material.Button">
+        <item name="android:background">?android:attr/selectableItemBackground</item>
+        <item name="android:paddingEnd">@dimen/button_horizontal_padding</item>
+        <item name="android:paddingStart">@dimen/button_horizontal_padding</item>
+        <item name="android:textColor">@color/dialer_flat_button_text_color</item>
+    </style>
+
+    <style name="BlockedNumbersDescriptionTextStyle">
+        <item name="android:lineSpacingMultiplier">1.43</item>
+        <item name="android:paddingTop">8dp</item>
+        <item name="android:paddingBottom">8dp</item>
+        <item name="android:textSize">@dimen/blocked_number_settings_description_text_size</item>
+    </style>
+</resources>
diff --git a/res/xml/display_options_settings.xml b/res/xml/display_options_settings.xml
new file mode 100644
index 0000000..07aadf7
--- /dev/null
+++ b/res/xml/display_options_settings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2015 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
+  -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <com.android.contacts.common.preference.SortOrderPreference
+        android:key="sortOrder"
+        android:title="@string/display_options_sort_list_by"
+        android:dialogTitle="@string/display_options_sort_list_by" />
+
+    <com.android.contacts.common.preference.DisplayOrderPreference
+        android:key="displayOrder"
+        android:title="@string/display_options_view_names_as"
+        android:dialogTitle="@string/display_options_view_names_as" />
+
+</PreferenceScreen>
diff --git a/res/xml/searchable.xml b/res/xml/searchable.xml
new file mode 100644
index 0000000..0e8242d
--- /dev/null
+++ b/res/xml/searchable.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+<searchable xmlns:android="http://schemas.android.com/apk/res/android"
+    android:label="@string/applicationLabel"
+    android:hint="@string/dialer_hint_find_contact"
+    android:inputType="textNoSuggestions"
+    android:imeOptions="actionSearch"
+    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
+    />
\ No newline at end of file
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
new file mode 100644
index 0000000..80fad62
--- /dev/null
+++ b/res/xml/sound_settings.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <com.android.dialer.settings.DefaultRingtonePreference
+        android:key="@string/ringtone_preference_key"
+        android:title="@string/ringtone_title"
+        android:dialogTitle="@string/ringtone_title"
+        android:persistent="false"
+        android:ringtoneType="ringtone" />
+
+    <CheckBoxPreference
+        android:key="@string/vibrate_on_preference_key"
+        android:title="@string/vibrate_on_ring_title"
+        android:persistent="false"
+        android:defaultValue="false" />
+
+    <CheckBoxPreference
+        android:key="@string/play_dtmf_preference_key"
+        android:title="@string/dtmf_tone_enable_title"
+        android:persistent="false"
+        android:defaultValue="true" />
+
+    <ListPreference
+        android:key="@string/dtmf_tone_length_preference_key"
+        android:title="@string/dtmf_tone_length_title"
+        android:entries="@array/dtmf_tone_length_entries"
+        android:entryValues="@array/dtmf_tone_length_entry_values" />
+
+</PreferenceScreen>
diff --git a/src-N/com/android/dialer/SdkSelectionUtils.java b/src-N/com/android/dialer/SdkSelectionUtils.java
new file mode 100644
index 0000000..ae7a631
--- /dev/null
+++ b/src-N/com/android/dialer/SdkSelectionUtils.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2015 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.dialer;
+
+/**
+ * Provides information for the SDK the app is built against.
+ * Specifically, information that change when the TARGET_N_SDK build flag is set in the makefile.
+ * This is not related to the targetSdkVersion value in AndroidManifest.xml.
+ *
+ * Usage case will be branching test code in src/, instead of swapping between src-N and src-pre-N.
+ */
+public class SdkSelectionUtils {
+
+    /**
+     * Whether the app is build against N SDK.
+     *
+     * Since Build.VERSION.SDK_INT remains 23 on N SDK for now, this is currently the only way to
+     * check if we are building with N SDK or other.
+     */
+    public static final boolean TARGET_N_SDK = true;
+}
diff --git a/src-N/com/android/dialer/compat/UserManagerSdkCompat.java b/src-N/com/android/dialer/compat/UserManagerSdkCompat.java
new file mode 100644
index 0000000..9a08d4e
--- /dev/null
+++ b/src-N/com/android/dialer/compat/UserManagerSdkCompat.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 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.dialer.compat;
+
+import android.content.Context;
+
+/**
+ * UserManagerCompat respecting Sdk requirements
+ */
+public class UserManagerSdkCompat {
+
+    /**
+     * Return whether the calling user is running in an "unlocked" state. A user
+     * is unlocked only after they've entered their credentials (such as a lock
+     * pattern or PIN), and credential-encrypted private app data storage is
+     * available.
+     *
+     * @param context the current context
+     * @return {@code true} if the user is unlocked or context is null, {@code false} otherwise
+     * @throws NullPointerException if context is null
+     */
+    public static boolean isUserUnlocked(Context context) {
+        return android.support.v4.os.UserManagerCompat.isUserUnlocked(context);
+    }
+
+}
diff --git a/src-pre-N/com/android/dialer/SdkSelectionUtils.java b/src-pre-N/com/android/dialer/SdkSelectionUtils.java
new file mode 100644
index 0000000..7e36b33
--- /dev/null
+++ b/src-pre-N/com/android/dialer/SdkSelectionUtils.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2015 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.dialer;
+
+/**
+ * Provides information for the SDK the app is built against.
+ * Specifically, information that change when the TARGET_N_SDK build flag is set in the makefile.
+ * This is not related to the targetSdkVersion value in AndroidManifest.xml.
+ *
+ * Usage case will be branching test code in src/, instead of using src-N/ and src-pre-N/
+ */
+public class SdkSelectionUtils {
+
+    /**
+     * Whether the app is build against N SDK.
+     *
+     * Since Build.VERSION.SDK_INT remains 23 on N SDK for now, this is currently the only way to
+     * check if we are building with N SDK or other.
+     */
+    public static final boolean TARGET_N_SDK = false;
+}
diff --git a/src-pre-N/com/android/dialer/compat/UserManagerSdkCompat.java b/src-pre-N/com/android/dialer/compat/UserManagerSdkCompat.java
new file mode 100644
index 0000000..c79ac2f
--- /dev/null
+++ b/src-pre-N/com/android/dialer/compat/UserManagerSdkCompat.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2015 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.dialer.compat;
+
+import android.content.Context;
+import android.util.Log;
+
+/**
+ * UserManagerCompat respecting Sdk requirements
+ */
+public class UserManagerSdkCompat {
+
+    /**
+     * @return {@code true}
+     */
+    public static boolean isUserUnlocked(Context context) {
+        Log.wtf("UserManagerSdkCompat", "Not implemented");
+        return true;
+    }
+
+}
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
new file mode 100644
index 0000000..56e29a9
--- /dev/null
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -0,0 +1,495 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer;
+
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v7.app.AppCompatActivity;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ListView;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ClipboardUtils;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.interactions.TouchPointManager;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.contacts.common.util.UriUtils;
+import com.android.dialer.calllog.CallDetailHistoryAdapter;
+import com.android.dialer.calllog.CallLogAsyncTaskUtil;
+import com.android.dialer.calllog.CallLogAsyncTaskUtil.CallLogAsyncTaskListener;
+import com.android.dialer.calllog.CallTypeHelper;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.calllog.PhoneAccountUtils;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
+import com.android.dialer.filterednumber.BlockNumberDialogFragment;
+import com.android.dialer.filterednumber.FilteredNumbersUtil;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.IntentUtil.CallIntentBuilder;
+import com.android.dialer.util.PhoneNumberUtil;
+import com.android.dialer.util.TelecomUtil;
+import com.android.incallui.Call.LogState;
+
+/**
+ * Displays the details of a specific call log entry.
+ * <p>
+ * This activity can be either started with the URI of a single call log entry, or with the
+ * {@link #EXTRA_CALL_LOG_IDS} extra to specify a group of call log entries.
+ */
+public class CallDetailActivity extends AppCompatActivity
+        implements MenuItem.OnMenuItemClickListener, View.OnClickListener,
+                BlockNumberDialogFragment.Callback {
+    private static final String TAG = CallDetailActivity.class.getSimpleName();
+
+     /** A long array extra containing ids of call log entries to display. */
+    public static final String EXTRA_CALL_LOG_IDS = "EXTRA_CALL_LOG_IDS";
+    /** If we are started with a voicemail, we'll find the uri to play with this extra. */
+    public static final String EXTRA_VOICEMAIL_URI = "EXTRA_VOICEMAIL_URI";
+    /** If the activity was triggered from a notification. */
+    public static final String EXTRA_FROM_NOTIFICATION = "EXTRA_FROM_NOTIFICATION";
+
+    public static final String VOICEMAIL_FRAGMENT_TAG = "voicemail_fragment";
+
+    private CallLogAsyncTaskListener mCallLogAsyncTaskListener = new CallLogAsyncTaskListener() {
+        @Override
+        public void onDeleteCall() {
+            finish();
+        }
+
+        @Override
+        public void onDeleteVoicemail() {
+            finish();
+        }
+
+        @Override
+        public void onGetCallDetails(PhoneCallDetails[] details) {
+            if (details == null) {
+                // Somewhere went wrong: we're going to bail out and show error to users.
+                Toast.makeText(mContext, R.string.toast_call_detail_error,
+                        Toast.LENGTH_SHORT).show();
+                finish();
+                return;
+            }
+
+            // All calls are from the same number and same contact, so pick the first detail.
+            mDetails = details[0];
+            mNumber = TextUtils.isEmpty(mDetails.number) ? null : mDetails.number.toString();
+            mPostDialDigits = TextUtils.isEmpty(mDetails.postDialDigits)
+                    ? "" : mDetails.postDialDigits;
+            mDisplayNumber = mDetails.displayNumber;
+
+            final CharSequence callLocationOrType = getNumberTypeOrLocation(mDetails);
+
+            final CharSequence displayNumber;
+            if (!TextUtils.isEmpty(mDetails.postDialDigits)) {
+                displayNumber = mDetails.number + mDetails.postDialDigits;
+            } else {
+                displayNumber = mDetails.displayNumber;
+            }
+
+            final String displayNumberStr = mBidiFormatter.unicodeWrap(
+                    displayNumber.toString(), TextDirectionHeuristics.LTR);
+
+            mDetails.nameDisplayOrder = mContactsPreferences.getDisplayOrder();
+
+            if (!TextUtils.isEmpty(mDetails.getPreferredName())) {
+                mCallerName.setText(mDetails.getPreferredName());
+                mCallerNumber.setText(callLocationOrType + " " + displayNumberStr);
+            } else {
+                mCallerName.setText(displayNumberStr);
+                if (!TextUtils.isEmpty(callLocationOrType)) {
+                    mCallerNumber.setText(callLocationOrType);
+                    mCallerNumber.setVisibility(View.VISIBLE);
+                } else {
+                    mCallerNumber.setVisibility(View.GONE);
+                }
+            }
+
+            String accountLabel =
+                    PhoneAccountUtils.getAccountLabel(mContext, mDetails.accountHandle);
+            if (!TextUtils.isEmpty(accountLabel)) {
+                mAccountLabel.setText(accountLabel);
+                mAccountLabel.setVisibility(View.VISIBLE);
+            } else {
+                mAccountLabel.setVisibility(View.GONE);
+            }
+
+            final boolean canPlaceCallsTo =
+                    PhoneNumberUtil.canPlaceCallsTo(mNumber, mDetails.numberPresentation);
+            mCallButton.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE);
+            mCopyNumberActionItem.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE);
+            mBlockNumberActionItem.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE);
+
+            final boolean isSipNumber = PhoneNumberUtil.isSipNumber(mNumber);
+            final boolean isVoicemailNumber =
+                    PhoneNumberUtil.isVoicemailNumber(mContext, mDetails.accountHandle, mNumber);
+            final boolean showEditNumberBeforeCallAction =
+                    canPlaceCallsTo && !isSipNumber && !isVoicemailNumber;
+            mEditBeforeCallActionItem.setVisibility(
+                    showEditNumberBeforeCallAction ? View.VISIBLE : View.GONE);
+
+            final boolean showReportAction = mContactInfoHelper.canReportAsInvalid(
+                    mDetails.sourceType, mDetails.objectId);
+            mReportActionItem.setVisibility(
+                    showReportAction ? View.VISIBLE : View.GONE);
+
+            invalidateOptionsMenu();
+
+            mHistoryList.setAdapter(
+                    new CallDetailHistoryAdapter(mContext, mInflater, mCallTypeHelper, details));
+
+            updateFilteredNumberChanges();
+            updateContactPhoto();
+
+            findViewById(R.id.call_detail).setVisibility(View.VISIBLE);
+        }
+
+        /**
+         * Determines the location geocode text for a call, or the phone number type
+         * (if available).
+         *
+         * @param details The call details.
+         * @return The phone number type or location.
+         */
+        private CharSequence getNumberTypeOrLocation(PhoneCallDetails details) {
+            if (!TextUtils.isEmpty(details.namePrimary)) {
+                return Phone.getTypeLabel(mResources, details.numberType,
+                        details.numberLabel);
+            } else {
+                return details.geocode;
+            }
+        }
+    };
+
+    private Context mContext;
+    private ContactInfoHelper mContactInfoHelper;
+    private ContactsPreferences mContactsPreferences;
+    private CallTypeHelper mCallTypeHelper;
+    private ContactPhotoManager mContactPhotoManager;
+    private FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
+    private BidiFormatter mBidiFormatter = BidiFormatter.getInstance();
+    private LayoutInflater mInflater;
+    private Resources mResources;
+
+    private PhoneCallDetails mDetails;
+    protected String mNumber;
+    private Uri mVoicemailUri;
+    private String mPostDialDigits = "";
+    private String mDisplayNumber;
+
+    private ListView mHistoryList;
+    private QuickContactBadge mQuickContactBadge;
+    private TextView mCallerName;
+    private TextView mCallerNumber;
+    private TextView mAccountLabel;
+    private View mCallButton;
+
+    private TextView mBlockNumberActionItem;
+    private View mEditBeforeCallActionItem;
+    private View mReportActionItem;
+    private View mCopyNumberActionItem;
+
+    private Integer mBlockedNumberId;
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        mContext = this;
+        mResources = getResources();
+        mContactInfoHelper = new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this));
+        mContactsPreferences = new ContactsPreferences(mContext);
+        mCallTypeHelper = new CallTypeHelper(getResources());
+        mFilteredNumberAsyncQueryHandler =
+                new FilteredNumberAsyncQueryHandler(getContentResolver());
+
+        mVoicemailUri = getIntent().getParcelableExtra(EXTRA_VOICEMAIL_URI);
+
+        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+        setContentView(R.layout.call_detail);
+        mInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
+
+        mHistoryList = (ListView) findViewById(R.id.history);
+        mHistoryList.addHeaderView(mInflater.inflate(R.layout.call_detail_header, null));
+        mHistoryList.addFooterView(
+                mInflater.inflate(R.layout.call_detail_footer, null), null, false);
+
+        mQuickContactBadge = (QuickContactBadge) findViewById(R.id.quick_contact_photo);
+        mQuickContactBadge.setOverlay(null);
+        if (CompatUtils.hasPrioritizedMimeType()) {
+            mQuickContactBadge.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
+        }
+        mCallerName = (TextView) findViewById(R.id.caller_name);
+        mCallerNumber = (TextView) findViewById(R.id.caller_number);
+        mAccountLabel = (TextView) findViewById(R.id.phone_account_label);
+        mContactPhotoManager = ContactPhotoManager.getInstance(this);
+
+        mCallButton = findViewById(R.id.call_back_button);
+        mCallButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (TextUtils.isEmpty(mNumber)) {
+                    return;
+                }
+                mContext.startActivity(
+                        new CallIntentBuilder(getDialableNumber())
+                                .setCallInitiationType(LogState.INITIATION_CALL_DETAILS)
+                                .build());
+            }
+        });
+
+        mBlockNumberActionItem = (TextView) findViewById(R.id.call_detail_action_block);
+        mBlockNumberActionItem.setOnClickListener(this);
+        mEditBeforeCallActionItem = findViewById(R.id.call_detail_action_edit_before_call);
+        mEditBeforeCallActionItem.setOnClickListener(this);
+        mReportActionItem = findViewById(R.id.call_detail_action_report);
+        mReportActionItem.setOnClickListener(this);
+
+        mCopyNumberActionItem = findViewById(R.id.call_detail_action_copy);
+        mCopyNumberActionItem.setOnClickListener(this);
+
+        if (getIntent().getBooleanExtra(EXTRA_FROM_NOTIFICATION, false)) {
+            closeSystemDialogs();
+        }
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
+        getCallDetails();
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            TouchPointManager.getInstance().setPoint((int) ev.getRawX(), (int) ev.getRawY());
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+
+    public void getCallDetails() {
+        CallLogAsyncTaskUtil.getCallDetails(this, getCallLogEntryUris(), mCallLogAsyncTaskListener);
+    }
+
+    /**
+     * Returns the list of URIs to show.
+     * <p>
+     * There are two ways the URIs can be provided to the activity: as the data on the intent, or as
+     * a list of ids in the call log added as an extra on the URI.
+     * <p>
+     * If both are available, the data on the intent takes precedence.
+     */
+    private Uri[] getCallLogEntryUris() {
+        final Uri uri = getIntent().getData();
+        if (uri != null) {
+            // If there is a data on the intent, it takes precedence over the extra.
+            return new Uri[]{ uri };
+        }
+        final long[] ids = getIntent().getLongArrayExtra(EXTRA_CALL_LOG_IDS);
+        final int numIds = ids == null ? 0 : ids.length;
+        final Uri[] uris = new Uri[numIds];
+        for (int index = 0; index < numIds; ++index) {
+            uris[index] = ContentUris.withAppendedId(
+                    TelecomUtil.getCallLogUri(CallDetailActivity.this), ids[index]);
+        }
+        return uris;
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        final MenuItem deleteMenuItem = menu.add(
+                Menu.NONE,
+                R.id.call_detail_delete_menu_item,
+                Menu.NONE,
+                R.string.call_details_delete);
+        deleteMenuItem.setIcon(R.drawable.ic_delete_24dp);
+        deleteMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        deleteMenuItem.setOnMenuItemClickListener(this);
+
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onMenuItemClick(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.call_detail_delete_menu_item:
+                if (hasVoicemail()) {
+                    CallLogAsyncTaskUtil.deleteVoicemail(
+                            this, mVoicemailUri, mCallLogAsyncTaskListener);
+                } else {
+                    final StringBuilder callIds = new StringBuilder();
+                    for (Uri callUri : getCallLogEntryUris()) {
+                        if (callIds.length() != 0) {
+                            callIds.append(",");
+                        }
+                        callIds.append(ContentUris.parseId(callUri));
+                    }
+                    CallLogAsyncTaskUtil.deleteCalls(
+                            this, callIds.toString(), mCallLogAsyncTaskListener);
+                }
+                break;
+        }
+        return true;
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch(view.getId()) {
+            case R.id.call_detail_action_block:
+                BlockNumberDialogFragment.show(
+                        mBlockedNumberId,
+                        mNumber,
+                        mDetails.countryIso,
+                        mDisplayNumber,
+                        R.id.call_detail,
+                        getFragmentManager(),
+                        this);
+                break;
+            case R.id.call_detail_action_copy:
+                ClipboardUtils.copyText(mContext, null, mNumber, true);
+                break;
+            case R.id.call_detail_action_edit_before_call:
+                Intent dialIntent = new Intent(Intent.ACTION_DIAL,
+                        CallUtil.getCallUri(getDialableNumber()));
+                DialerUtils.startActivityWithErrorToast(mContext, dialIntent);
+                break;
+            default:
+                Log.wtf(TAG, "Unexpected onClick event from " + view);
+                break;
+        }
+    }
+
+    @Override
+    public void onFilterNumberSuccess() {
+        Logger.logInteraction(InteractionEvent.BLOCK_NUMBER_CALL_DETAIL);
+        updateFilteredNumberChanges();
+    }
+
+    @Override
+    public void onUnfilterNumberSuccess() {
+        Logger.logInteraction(InteractionEvent.UNBLOCK_NUMBER_CALL_DETAIL);
+        updateFilteredNumberChanges();
+    }
+
+    @Override
+    public void onChangeFilteredNumberUndo() {
+        updateFilteredNumberChanges();
+    }
+
+    private void updateFilteredNumberChanges() {
+        if (mDetails == null ||
+                !FilteredNumbersUtil.canBlockNumber(this, mNumber, mDetails.countryIso)) {
+            return;
+        }
+
+        final boolean success = mFilteredNumberAsyncQueryHandler.isBlockedNumber(
+                new OnCheckBlockedListener() {
+                    @Override
+                    public void onCheckComplete(Integer id) {
+                        mBlockedNumberId = id;
+                        updateBlockActionItem();
+                    }
+                }, mNumber, mDetails.countryIso);
+
+        if (!success) {
+            updateBlockActionItem();
+        }
+    }
+
+    // Loads and displays the contact photo.
+    private void updateContactPhoto() {
+        if (mDetails == null) {
+            return;
+        }
+
+        final boolean isVoicemailNumber =
+                PhoneNumberUtil.isVoicemailNumber(mContext, mDetails.accountHandle, mNumber);
+        final boolean isBusiness = mContactInfoHelper.isBusiness(mDetails.sourceType);
+        int contactType = ContactPhotoManager.TYPE_DEFAULT;
+        if (isVoicemailNumber) {
+            contactType = ContactPhotoManager.TYPE_VOICEMAIL;
+        } else if (isBusiness) {
+            contactType = ContactPhotoManager.TYPE_BUSINESS;
+        }
+
+        final String displayName = TextUtils.isEmpty(mDetails.namePrimary)
+                ? mDetails.displayNumber : mDetails.namePrimary.toString();
+        final String lookupKey = mDetails.contactUri == null
+                ? null : UriUtils.getLookupKeyFromUri(mDetails.contactUri);
+
+        final DefaultImageRequest request =
+                new DefaultImageRequest(displayName, lookupKey, contactType, true /* isCircular */);
+
+        mQuickContactBadge.assignContactUri(mDetails.contactUri);
+        mQuickContactBadge.setContentDescription(
+                mResources.getString(R.string.description_contact_details, displayName));
+
+        mContactPhotoManager.loadDirectoryPhoto(mQuickContactBadge, mDetails.photoUri,
+                false /* darkTheme */, true /* isCircular */, request);
+    }
+
+    private void updateBlockActionItem() {
+        if (mBlockedNumberId == null) {
+            mBlockNumberActionItem.setText(R.string.action_block_number);
+            mBlockNumberActionItem.setCompoundDrawablesRelativeWithIntrinsicBounds(
+                    R.drawable.ic_call_detail_block, 0, 0, 0);
+        } else {
+            mBlockNumberActionItem.setText(R.string.action_unblock_number);
+            mBlockNumberActionItem.setCompoundDrawablesRelativeWithIntrinsicBounds(
+                    R.drawable.ic_call_detail_unblock, 0, 0, 0);
+        }
+
+        mBlockNumberActionItem.setVisibility(View.VISIBLE);
+    }
+
+    private void closeSystemDialogs() {
+        sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
+    }
+
+    private String getDialableNumber() {
+        return mNumber + mPostDialDigits;
+    }
+
+    @NeededForTesting
+    public boolean hasVoicemail() {
+        return mVoicemailUri != null;
+    }
+}
diff --git a/src/com/android/dialer/DialerApplication.java b/src/com/android/dialer/DialerApplication.java
new file mode 100644
index 0000000..078b551
--- /dev/null
+++ b/src/com/android/dialer/DialerApplication.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2013 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.dialer;
+
+import android.app.Application;
+import android.os.Trace;
+
+import com.android.contacts.common.extensions.ExtensionsFactory;
+
+public class DialerApplication extends Application {
+
+    private static final String TAG = "DialerApplication";
+
+    @Override
+    public void onCreate() {
+        Trace.beginSection(TAG + " onCreate");
+        super.onCreate();
+        Trace.beginSection(TAG + " ExtensionsFactory initialization");
+        ExtensionsFactory.init(getApplicationContext());
+        Trace.endSection();
+        Trace.endSection();
+    }
+}
diff --git a/src/com/android/dialer/DialerBackupAgent.java b/src/com/android/dialer/DialerBackupAgent.java
new file mode 100644
index 0000000..928be02
--- /dev/null
+++ b/src/com/android/dialer/DialerBackupAgent.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2013 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.dialer;
+
+import android.app.backup.BackupAgentHelper;
+import android.app.backup.BackupDataInput;
+import android.app.backup.SharedPreferencesBackupHelper;
+import android.content.Context;
+
+/**
+ * The Dialer backup agent backs up the shared preferences settings of the
+ * Dialer App. Right now it backs up the whole shared preference file. This
+ * can be modified in the future to accommodate partical backup.
+ */
+public class DialerBackupAgent extends BackupAgentHelper
+{
+    private static final String SHARED_KEY = "shared_pref";
+
+    @Override
+    public void onCreate() {
+        addHelper(SHARED_KEY, new SharedPreferencesBackupHelper(this,
+                DialtactsActivity.SHARED_PREFS_NAME));
+    }
+}
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
new file mode 100644
index 0000000..72753be
--- /dev/null
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -0,0 +1,1401 @@
+/*
+ * Copyright (C) 2013 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.dialer;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import android.app.Fragment;
+import android.app.FragmentTransaction;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Trace;
+import android.provider.CallLog.Calls;
+import android.speech.RecognizerIntent;
+import android.support.design.widget.CoordinatorLayout;
+import android.support.v4.view.ViewPager;
+import android.support.v7.app.ActionBar;
+import android.telecom.PhoneAccount;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
+import android.view.DragEvent;
+import android.view.Gravity;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnDragListener;
+import android.view.ViewTreeObserver;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.AbsListView.OnScrollListener;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.PopupMenu;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.contacts.common.dialog.ClearFrequentsDialog;
+import com.android.contacts.common.interactions.ImportExportDialogFragment;
+import com.android.contacts.common.interactions.TouchPointManager;
+import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.common.widget.FloatingActionButtonController;
+import com.android.contacts.commonbind.analytics.AnalyticsUtil;
+import com.android.dialer.calllog.CallLogActivity;
+import com.android.dialer.calllog.CallLogFragment;
+import com.android.dialer.database.DialerDatabaseHelper;
+import com.android.dialer.dialpad.DialpadFragment;
+import com.android.dialer.dialpad.SmartDialNameMatcher;
+import com.android.dialer.dialpad.SmartDialPrefix;
+import com.android.dialer.interactions.PhoneNumberInteraction;
+import com.android.dialer.list.DragDropController;
+import com.android.dialer.list.ListsFragment;
+import com.android.dialer.list.OnDragDropListener;
+import com.android.dialer.list.OnListFragmentScrolledListener;
+import com.android.dialer.list.PhoneFavoriteSquareTileView;
+import com.android.dialer.list.RegularSearchFragment;
+import com.android.dialer.list.SearchFragment;
+import com.android.dialer.list.SmartDialSearchFragment;
+import com.android.dialer.list.SpeedDialFragment;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.ScreenEvent;
+import com.android.dialer.settings.DialerSettingsActivity;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.IntentUtil;
+import com.android.dialer.util.IntentUtil.CallIntentBuilder;
+import com.android.dialer.util.TelecomUtil;
+import com.android.dialer.widget.ActionBarController;
+import com.android.dialer.widget.SearchEditTextLayout;
+import com.android.dialerbind.DatabaseHelperManager;
+import com.android.dialerbind.ObjectFactory;
+import com.android.phone.common.animation.AnimUtils;
+import com.android.phone.common.animation.AnimationListenerAdapter;
+
+import junit.framework.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The dialer tab's title is 'phone', a more common name (see strings.xml).
+ */
+public class DialtactsActivity extends TransactionSafeActivity implements View.OnClickListener,
+        DialpadFragment.OnDialpadQueryChangedListener,
+        OnListFragmentScrolledListener,
+        CallLogFragment.HostInterface,
+        DialpadFragment.HostInterface,
+        ListsFragment.HostInterface,
+        SpeedDialFragment.HostInterface,
+        SearchFragment.HostInterface,
+        OnDragDropListener,
+        OnPhoneNumberPickerActionListener,
+        PopupMenu.OnMenuItemClickListener,
+        ViewPager.OnPageChangeListener,
+        ActionBarController.ActivityUi {
+    private static final String TAG = "DialtactsActivity";
+
+    public static final boolean DEBUG = false;
+
+    public static final String SHARED_PREFS_NAME = "com.android.dialer_preferences";
+
+    private static final String KEY_IN_REGULAR_SEARCH_UI = "in_regular_search_ui";
+    private static final String KEY_IN_DIALPAD_SEARCH_UI = "in_dialpad_search_ui";
+    private static final String KEY_SEARCH_QUERY = "search_query";
+    private static final String KEY_FIRST_LAUNCH = "first_launch";
+    private static final String KEY_IS_DIALPAD_SHOWN = "is_dialpad_shown";
+
+    @VisibleForTesting
+    public static final String TAG_DIALPAD_FRAGMENT = "dialpad";
+    private static final String TAG_REGULAR_SEARCH_FRAGMENT = "search";
+    private static final String TAG_SMARTDIAL_SEARCH_FRAGMENT = "smartdial";
+    private static final String TAG_FAVORITES_FRAGMENT = "favorites";
+
+    /**
+     * Just for backward compatibility. Should behave as same as {@link Intent#ACTION_DIAL}.
+     */
+    private static final String ACTION_TOUCH_DIALER = "com.android.phone.action.TOUCH_DIALER";
+    public static final String EXTRA_SHOW_TAB = "EXTRA_SHOW_TAB";
+
+    private static final int ACTIVITY_REQUEST_CODE_VOICE_SEARCH = 1;
+
+    private static final int FAB_SCALE_IN_DELAY_MS = 300;
+
+    private CoordinatorLayout mParentLayout;
+
+    /**
+     * Fragment containing the dialpad that slides into view
+     */
+    protected DialpadFragment mDialpadFragment;
+
+    /**
+     * Fragment for searching phone numbers using the alphanumeric keyboard.
+     */
+    private RegularSearchFragment mRegularSearchFragment;
+
+    /**
+     * Fragment for searching phone numbers using the dialpad.
+     */
+    private SmartDialSearchFragment mSmartDialSearchFragment;
+
+    /**
+     * Animation that slides in.
+     */
+    private Animation mSlideIn;
+
+    /**
+     * Animation that slides out.
+     */
+    private Animation mSlideOut;
+
+    AnimationListenerAdapter mSlideInListener = new AnimationListenerAdapter() {
+        @Override
+        public void onAnimationEnd(Animation animation) {
+            maybeEnterSearchUi();
+        }
+    };
+
+    /**
+     * Listener for after slide out animation completes on dialer fragment.
+     */
+    AnimationListenerAdapter mSlideOutListener = new AnimationListenerAdapter() {
+        @Override
+        public void onAnimationEnd(Animation animation) {
+            commitDialpadFragmentHide();
+        }
+    };
+
+    /**
+     * Fragment containing the speed dial list, call history list, and all contacts list.
+     */
+    private ListsFragment mListsFragment;
+
+    /**
+     * Tracks whether onSaveInstanceState has been called. If true, no fragment transactions can
+     * be commited.
+     */
+    private boolean mStateSaved;
+    private boolean mIsRestarting;
+    private boolean mInDialpadSearch;
+    private boolean mInRegularSearch;
+    private boolean mClearSearchOnPause;
+    private boolean mIsDialpadShown;
+    private boolean mShowDialpadOnResume;
+
+    /**
+     * Whether or not the device is in landscape orientation.
+     */
+    private boolean mIsLandscape;
+
+    /**
+     * True if the dialpad is only temporarily showing due to being in call
+     */
+    private boolean mInCallDialpadUp;
+
+    /**
+     * True when this activity has been launched for the first time.
+     */
+    private boolean mFirstLaunch;
+
+    /**
+     * Search query to be applied to the SearchView in the ActionBar once
+     * onCreateOptionsMenu has been called.
+     */
+    private String mPendingSearchViewQuery;
+
+    private PopupMenu mOverflowMenu;
+    private EditText mSearchView;
+    private View mVoiceSearchButton;
+
+    private String mSearchQuery;
+    private String mDialpadQuery;
+
+    private DialerDatabaseHelper mDialerDatabaseHelper;
+    private DragDropController mDragDropController;
+    private ActionBarController mActionBarController;
+
+    private FloatingActionButtonController mFloatingActionButtonController;
+
+    private int mActionBarHeight;
+
+    /**
+     * The text returned from a voice search query.  Set in {@link #onActivityResult} and used in
+     * {@link #onResume()} to populate the search box.
+     */
+    private String mVoiceSearchQuery;
+
+    protected class OptionsPopupMenu extends PopupMenu {
+        public OptionsPopupMenu(Context context, View anchor) {
+            super(context, anchor, Gravity.END);
+        }
+
+        @Override
+        public void show() {
+            final boolean hasContactsPermission =
+                    PermissionsUtil.hasContactsPermissions(DialtactsActivity.this);
+            final Menu menu = getMenu();
+            final MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
+            clearFrequents.setVisible(mListsFragment != null &&
+                    mListsFragment.getSpeedDialFragment() != null &&
+                    mListsFragment.getSpeedDialFragment().hasFrequents() && hasContactsPermission);
+
+            menu.findItem(R.id.menu_import_export).setVisible(hasContactsPermission);
+            menu.findItem(R.id.menu_add_contact).setVisible(hasContactsPermission);
+
+            menu.findItem(R.id.menu_history).setVisible(
+                    PermissionsUtil.hasPhonePermissions(DialtactsActivity.this));
+            super.show();
+        }
+    }
+
+    /**
+     * Listener that listens to drag events and sends their x and y coordinates to a
+     * {@link DragDropController}.
+     */
+    private class LayoutOnDragListener implements OnDragListener {
+        @Override
+        public boolean onDrag(View v, DragEvent event) {
+            if (event.getAction() == DragEvent.ACTION_DRAG_LOCATION) {
+                mDragDropController.handleDragHovered(v, (int) event.getX(), (int) event.getY());
+            }
+            return true;
+        }
+    }
+
+    /**
+     * Listener used to send search queries to the phone search fragment.
+     */
+    private final TextWatcher mPhoneSearchQueryTextListener = new TextWatcher() {
+        @Override
+        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+        }
+
+        @Override
+        public void onTextChanged(CharSequence s, int start, int before, int count) {
+            final String newText = s.toString();
+            if (newText.equals(mSearchQuery)) {
+                // If the query hasn't changed (perhaps due to activity being destroyed
+                // and restored, or user launching the same DIAL intent twice), then there is
+                // no need to do anything here.
+                return;
+            }
+            if (DEBUG) {
+                Log.d(TAG, "onTextChange for mSearchView called with new query: " + newText);
+                Log.d(TAG, "Previous Query: " + mSearchQuery);
+            }
+            mSearchQuery = newText;
+
+            // Show search fragment only when the query string is changed to non-empty text.
+            if (!TextUtils.isEmpty(newText)) {
+                // Call enterSearchUi only if we are switching search modes, or showing a search
+                // fragment for the first time.
+                final boolean sameSearchMode = (mIsDialpadShown && mInDialpadSearch) ||
+                        (!mIsDialpadShown && mInRegularSearch);
+                if (!sameSearchMode) {
+                    enterSearchUi(mIsDialpadShown, mSearchQuery, true /* animate */);
+                }
+            }
+
+            if (mSmartDialSearchFragment != null && mSmartDialSearchFragment.isVisible()) {
+                mSmartDialSearchFragment.setQueryString(mSearchQuery, false /* delaySelection */);
+            } else if (mRegularSearchFragment != null && mRegularSearchFragment.isVisible()) {
+                mRegularSearchFragment.setQueryString(mSearchQuery, false /* delaySelection */);
+            }
+        }
+
+        @Override
+        public void afterTextChanged(Editable s) {
+        }
+    };
+
+
+    /**
+     * Open the search UI when the user clicks on the search box.
+     */
+    private final View.OnClickListener mSearchViewOnClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            if (!isInSearchUi()) {
+                mActionBarController.onSearchBoxTapped();
+                enterSearchUi(false /* smartDialSearch */, mSearchView.getText().toString(),
+                        true /* animate */);
+            }
+        }
+    };
+
+    /**
+     * Handles the user closing the soft keyboard.
+     */
+    private final View.OnKeyListener mSearchEditTextLayoutListener = new View.OnKeyListener() {
+        @Override
+        public boolean onKey(View v, int keyCode, KeyEvent event) {
+            if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
+                if (TextUtils.isEmpty(mSearchView.getText().toString())) {
+                    // If the search term is empty, close the search UI.
+                    maybeExitSearchUi();
+                } else {
+                    // If the search term is not empty, show the dialpad fab.
+                    showFabInSearchUi();
+                }
+            }
+            return false;
+        }
+    };
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            TouchPointManager.getInstance().setPoint((int) ev.getRawX(), (int) ev.getRawY());
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        Trace.beginSection(TAG + " onCreate");
+        super.onCreate(savedInstanceState);
+
+        mFirstLaunch = true;
+
+        final Resources resources = getResources();
+        mActionBarHeight = resources.getDimensionPixelSize(R.dimen.action_bar_height_large);
+
+        Trace.beginSection(TAG + " setContentView");
+        setContentView(R.layout.dialtacts_activity);
+        Trace.endSection();
+        getWindow().setBackgroundDrawable(null);
+
+        Trace.beginSection(TAG + " setup Views");
+        final ActionBar actionBar = getSupportActionBar();
+        actionBar.setCustomView(R.layout.search_edittext);
+        actionBar.setDisplayShowCustomEnabled(true);
+        actionBar.setBackgroundDrawable(null);
+
+        SearchEditTextLayout searchEditTextLayout = (SearchEditTextLayout) actionBar
+                .getCustomView().findViewById(R.id.search_view_container);
+        searchEditTextLayout.setPreImeKeyListener(mSearchEditTextLayoutListener);
+
+        mActionBarController = new ActionBarController(this, searchEditTextLayout);
+
+        mSearchView = (EditText) searchEditTextLayout.findViewById(R.id.search_view);
+        mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener);
+        mVoiceSearchButton = searchEditTextLayout.findViewById(R.id.voice_search_button);
+        searchEditTextLayout.findViewById(R.id.search_magnifying_glass)
+                .setOnClickListener(mSearchViewOnClickListener);
+        searchEditTextLayout.findViewById(R.id.search_box_start_search)
+                .setOnClickListener(mSearchViewOnClickListener);
+        searchEditTextLayout.setOnClickListener(mSearchViewOnClickListener);
+        searchEditTextLayout.setCallback(new SearchEditTextLayout.Callback() {
+            @Override
+            public void onBackButtonClicked() {
+                onBackPressed();
+            }
+
+            @Override
+            public void onSearchViewClicked() {
+                // Hide FAB, as the keyboard is shown.
+                mFloatingActionButtonController.scaleOut();
+            }
+        });
+
+        mIsLandscape = getResources().getConfiguration().orientation
+                == Configuration.ORIENTATION_LANDSCAPE;
+
+        final View floatingActionButtonContainer = findViewById(
+                R.id.floating_action_button_container);
+        ImageButton floatingActionButton = (ImageButton) findViewById(R.id.floating_action_button);
+        floatingActionButton.setOnClickListener(this);
+        mFloatingActionButtonController = new FloatingActionButtonController(this,
+                floatingActionButtonContainer, floatingActionButton);
+
+        ImageButton optionsMenuButton =
+                (ImageButton) searchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button);
+        optionsMenuButton.setOnClickListener(this);
+        mOverflowMenu = buildOptionsMenu(searchEditTextLayout);
+        optionsMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener());
+
+        // Add the favorites fragment but only if savedInstanceState is null. Otherwise the
+        // fragment manager is responsible for recreating it.
+        if (savedInstanceState == null) {
+            getFragmentManager().beginTransaction()
+                    .add(R.id.dialtacts_frame, new ListsFragment(), TAG_FAVORITES_FRAGMENT)
+                    .commit();
+        } else {
+            mSearchQuery = savedInstanceState.getString(KEY_SEARCH_QUERY);
+            mInRegularSearch = savedInstanceState.getBoolean(KEY_IN_REGULAR_SEARCH_UI);
+            mInDialpadSearch = savedInstanceState.getBoolean(KEY_IN_DIALPAD_SEARCH_UI);
+            mFirstLaunch = savedInstanceState.getBoolean(KEY_FIRST_LAUNCH);
+            mShowDialpadOnResume = savedInstanceState.getBoolean(KEY_IS_DIALPAD_SHOWN);
+            mActionBarController.restoreInstanceState(savedInstanceState);
+        }
+
+        final boolean isLayoutRtl = DialerUtils.isRtl();
+        if (mIsLandscape) {
+            mSlideIn = AnimationUtils.loadAnimation(this,
+                    isLayoutRtl ? R.anim.dialpad_slide_in_left : R.anim.dialpad_slide_in_right);
+            mSlideOut = AnimationUtils.loadAnimation(this,
+                    isLayoutRtl ? R.anim.dialpad_slide_out_left : R.anim.dialpad_slide_out_right);
+        } else {
+            mSlideIn = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_in_bottom);
+            mSlideOut = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_out_bottom);
+        }
+
+        mSlideIn.setInterpolator(AnimUtils.EASE_IN);
+        mSlideOut.setInterpolator(AnimUtils.EASE_OUT);
+
+        mSlideIn.setAnimationListener(mSlideInListener);
+        mSlideOut.setAnimationListener(mSlideOutListener);
+
+        mParentLayout = (CoordinatorLayout) findViewById(R.id.dialtacts_mainlayout);
+        mParentLayout.setOnDragListener(new LayoutOnDragListener());
+        floatingActionButtonContainer.getViewTreeObserver().addOnGlobalLayoutListener(
+                new ViewTreeObserver.OnGlobalLayoutListener() {
+                    @Override
+                    public void onGlobalLayout() {
+                        final ViewTreeObserver observer =
+                                floatingActionButtonContainer.getViewTreeObserver();
+                        if (!observer.isAlive()) {
+                            return;
+                        }
+                        observer.removeOnGlobalLayoutListener(this);
+                        int screenWidth = mParentLayout.getWidth();
+                        mFloatingActionButtonController.setScreenWidth(screenWidth);
+                        mFloatingActionButtonController.align(
+                                getFabAlignment(), false /* animate */);
+                    }
+                });
+
+        Trace.endSection();
+
+        Trace.beginSection(TAG + " initialize smart dialing");
+        mDialerDatabaseHelper = DatabaseHelperManager.getDatabaseHelper(this);
+        SmartDialPrefix.initializeNanpSettings(this);
+        Trace.endSection();
+        Trace.endSection();
+    }
+
+    @Override
+    protected void onResume() {
+        Trace.beginSection(TAG + " onResume");
+        super.onResume();
+
+        mStateSaved = false;
+        if (mFirstLaunch) {
+            displayFragment(getIntent());
+        } else if (!phoneIsInUse() && mInCallDialpadUp) {
+            hideDialpadFragment(false, true);
+            mInCallDialpadUp = false;
+        } else if (mShowDialpadOnResume) {
+            showDialpadFragment(false);
+            mShowDialpadOnResume = false;
+        }
+
+        // If there was a voice query result returned in the {@link #onActivityResult} callback, it
+        // will have been stashed in mVoiceSearchQuery since the search results fragment cannot be
+        // shown until onResume has completed.  Active the search UI and set the search term now.
+        if (!TextUtils.isEmpty(mVoiceSearchQuery)) {
+            mActionBarController.onSearchBoxTapped();
+            mSearchView.setText(mVoiceSearchQuery);
+            mVoiceSearchQuery = null;
+        }
+
+        mFirstLaunch = false;
+
+        if (mIsRestarting) {
+            // This is only called when the activity goes from resumed -> paused -> resumed, so it
+            // will not cause an extra view to be sent out on rotation
+            if (mIsDialpadShown) {
+                Logger.logScreenView(ScreenEvent.DIALPAD, this);
+            }
+            mIsRestarting = false;
+        }
+
+        prepareVoiceSearchButton();
+        mDialerDatabaseHelper.startSmartDialUpdateThread();
+        mFloatingActionButtonController.align(getFabAlignment(), false /* animate */);
+
+        if (Calls.CONTENT_TYPE.equals(getIntent().getType())) {
+            // Externally specified extras take precedence to EXTRA_SHOW_TAB, which is only
+            // used internally.
+            final Bundle extras = getIntent().getExtras();
+            if (extras != null
+                    && extras.getInt(Calls.EXTRA_CALL_TYPE_FILTER) == Calls.VOICEMAIL_TYPE) {
+                mListsFragment.showTab(ListsFragment.TAB_INDEX_VOICEMAIL);
+            } else {
+                mListsFragment.showTab(ListsFragment.TAB_INDEX_HISTORY);
+            }
+        } else if (getIntent().hasExtra(EXTRA_SHOW_TAB)) {
+            int index = getIntent().getIntExtra(EXTRA_SHOW_TAB, ListsFragment.TAB_INDEX_SPEED_DIAL);
+            if (index < mListsFragment.getTabCount()) {
+                mListsFragment.showTab(index);
+            }
+        }
+
+        setSearchBoxHint();
+
+        Trace.endSection();
+    }
+
+    @Override
+    protected void onRestart() {
+        super.onRestart();
+        mIsRestarting = true;
+    }
+
+    @Override
+    protected void onPause() {
+        if (mClearSearchOnPause) {
+            hideDialpadAndSearchUi();
+            mClearSearchOnPause = false;
+        }
+        if (mSlideOut.hasStarted() && !mSlideOut.hasEnded()) {
+            commitDialpadFragmentHide();
+        }
+        super.onPause();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putString(KEY_SEARCH_QUERY, mSearchQuery);
+        outState.putBoolean(KEY_IN_REGULAR_SEARCH_UI, mInRegularSearch);
+        outState.putBoolean(KEY_IN_DIALPAD_SEARCH_UI, mInDialpadSearch);
+        outState.putBoolean(KEY_FIRST_LAUNCH, mFirstLaunch);
+        outState.putBoolean(KEY_IS_DIALPAD_SHOWN, mIsDialpadShown);
+        mActionBarController.saveInstanceState(outState);
+        mStateSaved = true;
+    }
+
+    @Override
+    public void onAttachFragment(Fragment fragment) {
+        if (fragment instanceof DialpadFragment) {
+            mDialpadFragment = (DialpadFragment) fragment;
+            if (!mIsDialpadShown && !mShowDialpadOnResume) {
+                final FragmentTransaction transaction = getFragmentManager().beginTransaction();
+                transaction.hide(mDialpadFragment);
+                transaction.commit();
+            }
+        } else if (fragment instanceof SmartDialSearchFragment) {
+            mSmartDialSearchFragment = (SmartDialSearchFragment) fragment;
+            mSmartDialSearchFragment.setOnPhoneNumberPickerActionListener(this);
+            if (!TextUtils.isEmpty(mDialpadQuery)) {
+                mSmartDialSearchFragment.setAddToContactNumber(mDialpadQuery);
+            }
+        } else if (fragment instanceof SearchFragment) {
+            mRegularSearchFragment = (RegularSearchFragment) fragment;
+            mRegularSearchFragment.setOnPhoneNumberPickerActionListener(this);
+        } else if (fragment instanceof ListsFragment) {
+            mListsFragment = (ListsFragment) fragment;
+            mListsFragment.addOnPageChangeListener(this);
+        }
+    }
+
+    protected void handleMenuSettings() {
+        final Intent intent = new Intent(this, DialerSettingsActivity.class);
+        startActivity(intent);
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.floating_action_button:
+                if (mListsFragment.getCurrentTabIndex()
+                        == ListsFragment.TAB_INDEX_ALL_CONTACTS && !mInRegularSearch) {
+                    DialerUtils.startActivityWithErrorToast(
+                            this,
+                            IntentUtil.getNewContactIntent(),
+                            R.string.add_contact_not_available);
+                } else if (!mIsDialpadShown) {
+                    mInCallDialpadUp = false;
+                    showDialpadFragment(true);
+                }
+                break;
+            case R.id.voice_search_button:
+                try {
+                    startActivityForResult(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH),
+                            ACTIVITY_REQUEST_CODE_VOICE_SEARCH);
+                } catch (ActivityNotFoundException e) {
+                    Toast.makeText(DialtactsActivity.this, R.string.voice_search_not_available,
+                            Toast.LENGTH_SHORT).show();
+                }
+                break;
+            case R.id.dialtacts_options_menu_button:
+                mOverflowMenu.show();
+                break;
+            default: {
+                Log.wtf(TAG, "Unexpected onClick event from " + view);
+                break;
+            }
+        }
+    }
+
+    @Override
+    public boolean onMenuItemClick(MenuItem item) {
+        if (!isSafeToCommitTransactions()) {
+            return true;
+        }
+
+        switch (item.getItemId()) {
+            case R.id.menu_history:
+                // Use explicit CallLogActivity intent instead of ACTION_VIEW +
+                // CONTENT_TYPE, so that we always open our call log from our dialer
+                final Intent intent = new Intent(this, CallLogActivity.class);
+                startActivity(intent);
+                break;
+            case R.id.menu_add_contact:
+                DialerUtils.startActivityWithErrorToast(
+                        this,
+                        IntentUtil.getNewContactIntent(),
+                        R.string.add_contact_not_available);
+                break;
+            case R.id.menu_import_export:
+                // We hard-code the "contactsAreAvailable" argument because doing it properly would
+                // involve querying a {@link ProviderStatusLoader}, which we don't want to do right
+                // now in Dialtacts for (potential) performance reasons. Compare with how it is
+                // done in {@link PeopleActivity}.
+                if (mListsFragment.getCurrentTabIndex() == ListsFragment.TAB_INDEX_SPEED_DIAL) {
+                    ImportExportDialogFragment.show(getFragmentManager(), true,
+                            DialtactsActivity.class, ImportExportDialogFragment.EXPORT_MODE_FAVORITES);
+                } else {
+                    ImportExportDialogFragment.show(getFragmentManager(), true,
+                            DialtactsActivity.class, ImportExportDialogFragment.EXPORT_MODE_DEFAULT);
+                }
+                Logger.logScreenView(ScreenEvent.IMPORT_EXPORT_CONTACTS, this);
+                return true;
+            case R.id.menu_clear_frequents:
+                ClearFrequentsDialog.show(getFragmentManager());
+                Logger.logScreenView(ScreenEvent.CLEAR_FREQUENTS, this);
+                return true;
+            case R.id.menu_call_settings:
+                handleMenuSettings();
+                Logger.logScreenView(ScreenEvent.SETTINGS, this);
+                return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == ACTIVITY_REQUEST_CODE_VOICE_SEARCH) {
+            if (resultCode == RESULT_OK) {
+                final ArrayList<String> matches = data.getStringArrayListExtra(
+                        RecognizerIntent.EXTRA_RESULTS);
+                if (matches.size() > 0) {
+                    final String match = matches.get(0);
+                    mVoiceSearchQuery = match;
+                } else {
+                    Log.e(TAG, "Voice search - nothing heard");
+                }
+            } else {
+                Log.e(TAG, "Voice search failed");
+            }
+        }
+        super.onActivityResult(requestCode, resultCode, data);
+    }
+
+    /**
+     * Update the number of unread voicemails (potentially other tabs) displayed next to the tab
+     * icon.
+     */
+    public void updateTabUnreadCounts() {
+        mListsFragment.updateTabUnreadCounts();
+    }
+
+    /**
+     * Initiates a fragment transaction to show the dialpad fragment. Animations and other visual
+     * updates are handled by a callback which is invoked after the dialpad fragment is shown.
+     * @see #onDialpadShown
+     */
+    private void showDialpadFragment(boolean animate) {
+        if (mIsDialpadShown || mStateSaved) {
+            return;
+        }
+        mIsDialpadShown = true;
+
+        mListsFragment.setUserVisibleHint(false);
+
+        final FragmentTransaction ft = getFragmentManager().beginTransaction();
+        if (mDialpadFragment == null) {
+            mDialpadFragment = new DialpadFragment();
+            ft.add(R.id.dialtacts_container, mDialpadFragment, TAG_DIALPAD_FRAGMENT);
+        } else {
+            ft.show(mDialpadFragment);
+        }
+
+        mDialpadFragment.setAnimate(animate);
+        Logger.logScreenView(ScreenEvent.DIALPAD, this);
+        ft.commit();
+
+        if (animate) {
+            mFloatingActionButtonController.scaleOut();
+        } else {
+            mFloatingActionButtonController.setVisible(false);
+            maybeEnterSearchUi();
+        }
+        mActionBarController.onDialpadUp();
+
+        mListsFragment.getView().animate().alpha(0).withLayer();
+
+        //adjust the title, so the user will know where we're at when the activity start/resumes.
+        setTitle(R.string.launcherDialpadActivityLabel);
+    }
+
+    /**
+     * Callback from child DialpadFragment when the dialpad is shown.
+     */
+    public void onDialpadShown() {
+        Assert.assertNotNull(mDialpadFragment);
+        if (mDialpadFragment.getAnimate()) {
+            mDialpadFragment.getView().startAnimation(mSlideIn);
+        } else {
+            mDialpadFragment.setYFraction(0);
+        }
+
+        updateSearchFragmentPosition();
+    }
+
+    /**
+     * Initiates animations and other visual updates to hide the dialpad. The fragment is hidden in
+     * a callback after the hide animation ends.
+     * @see #commitDialpadFragmentHide
+     */
+    public void hideDialpadFragment(boolean animate, boolean clearDialpad) {
+        if (mDialpadFragment == null || mDialpadFragment.getView() == null) {
+            return;
+        }
+        if (clearDialpad) {
+            // Temporarily disable accessibility when we clear the dialpad, since it should be
+            // invisible and should not announce anything.
+            mDialpadFragment.getDigitsWidget().setImportantForAccessibility(
+                    View.IMPORTANT_FOR_ACCESSIBILITY_NO);
+            mDialpadFragment.clearDialpad();
+            mDialpadFragment.getDigitsWidget().setImportantForAccessibility(
+                    View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
+        }
+        if (!mIsDialpadShown) {
+            return;
+        }
+        mIsDialpadShown = false;
+        mDialpadFragment.setAnimate(animate);
+        mListsFragment.setUserVisibleHint(true);
+        mListsFragment.sendScreenViewForCurrentPosition();
+
+        updateSearchFragmentPosition();
+
+        mFloatingActionButtonController.align(getFabAlignment(), animate);
+        if (animate) {
+            mDialpadFragment.getView().startAnimation(mSlideOut);
+        } else {
+            commitDialpadFragmentHide();
+        }
+
+        mActionBarController.onDialpadDown();
+
+        if (isInSearchUi()) {
+            if (TextUtils.isEmpty(mSearchQuery)) {
+                exitSearchUi();
+            }
+        }
+        //reset the title to normal.
+        setTitle(R.string.launcherActivityLabel);
+    }
+
+    /**
+     * Finishes hiding the dialpad fragment after any animations are completed.
+     */
+    private void commitDialpadFragmentHide() {
+        if (!mStateSaved && mDialpadFragment != null && !mDialpadFragment.isHidden()) {
+            final FragmentTransaction ft = getFragmentManager().beginTransaction();
+            ft.hide(mDialpadFragment);
+            ft.commit();
+        }
+        mFloatingActionButtonController.scaleIn(AnimUtils.NO_DELAY);
+    }
+
+    private void updateSearchFragmentPosition() {
+        SearchFragment fragment = null;
+        if (mSmartDialSearchFragment != null && mSmartDialSearchFragment.isVisible()) {
+            fragment = mSmartDialSearchFragment;
+        } else if (mRegularSearchFragment != null && mRegularSearchFragment.isVisible()) {
+            fragment = mRegularSearchFragment;
+        }
+        if (fragment != null && fragment.isVisible()) {
+            fragment.updatePosition(true /* animate */);
+        }
+    }
+
+    @Override
+    public boolean isInSearchUi() {
+        return mInDialpadSearch || mInRegularSearch;
+    }
+
+    @Override
+    public boolean hasSearchQuery() {
+        return !TextUtils.isEmpty(mSearchQuery);
+    }
+
+    @Override
+    public boolean shouldShowActionBar() {
+        return mListsFragment.shouldShowActionBar();
+    }
+
+    private void setNotInSearchUi() {
+        mInDialpadSearch = false;
+        mInRegularSearch = false;
+    }
+
+    private void hideDialpadAndSearchUi() {
+        if (mIsDialpadShown) {
+            hideDialpadFragment(false, true);
+        } else {
+            exitSearchUi();
+        }
+    }
+
+    private void prepareVoiceSearchButton() {
+        final Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
+        if (canIntentBeHandled(voiceIntent)) {
+            mVoiceSearchButton.setVisibility(View.VISIBLE);
+            mVoiceSearchButton.setOnClickListener(this);
+        } else {
+            mVoiceSearchButton.setVisibility(View.GONE);
+        }
+    }
+
+    public boolean isNearbyPlacesSearchEnabled() {
+        return false;
+    }
+
+    protected int getSearchBoxHint () {
+        return R.string.dialer_hint_find_contact;
+    }
+
+    /**
+     * Sets the hint text for the contacts search box
+     */
+    private void setSearchBoxHint() {
+        SearchEditTextLayout searchEditTextLayout = (SearchEditTextLayout) getSupportActionBar()
+                .getCustomView().findViewById(R.id.search_view_container);
+        ((TextView) searchEditTextLayout.findViewById(R.id.search_box_start_search))
+                .setHint(getSearchBoxHint());
+    }
+
+    protected OptionsPopupMenu buildOptionsMenu(View invoker) {
+        final OptionsPopupMenu popupMenu = new OptionsPopupMenu(this, invoker);
+        popupMenu.inflate(R.menu.dialtacts_options);
+        popupMenu.setOnMenuItemClickListener(this);
+        return popupMenu;
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        if (mPendingSearchViewQuery != null) {
+            mSearchView.setText(mPendingSearchViewQuery);
+            mPendingSearchViewQuery = null;
+        }
+        if (mActionBarController != null) {
+            mActionBarController.restoreActionBarOffset();
+        }
+        return false;
+    }
+
+    /**
+     * Returns true if the intent is due to hitting the green send key (hardware call button:
+     * KEYCODE_CALL) while in a call.
+     *
+     * @param intent the intent that launched this activity
+     * @return true if the intent is due to hitting the green send key while in a call
+     */
+    private boolean isSendKeyWhileInCall(Intent intent) {
+        // If there is a call in progress and the user launched the dialer by hitting the call
+        // button, go straight to the in-call screen.
+        final boolean callKey = Intent.ACTION_CALL_BUTTON.equals(intent.getAction());
+
+        if (callKey) {
+            TelecomUtil.showInCallScreen(this, false);
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Sets the current tab based on the intent's request type
+     *
+     * @param intent Intent that contains information about which tab should be selected
+     */
+    private void displayFragment(Intent intent) {
+        // If we got here by hitting send and we're in call forward along to the in-call activity
+        if (isSendKeyWhileInCall(intent)) {
+            finish();
+            return;
+        }
+
+        final boolean showDialpadChooser = phoneIsInUse() && !DialpadFragment.isAddCallMode(intent);
+        if (showDialpadChooser || (intent.getData() != null && isDialIntent(intent))) {
+            showDialpadFragment(false);
+            mDialpadFragment.setStartedFromNewIntent(true);
+            if (showDialpadChooser && !mDialpadFragment.isVisible()) {
+                mInCallDialpadUp = true;
+            }
+        }
+    }
+
+    @Override
+    public void onNewIntent(Intent newIntent) {
+        setIntent(newIntent);
+
+        mStateSaved = false;
+        displayFragment(newIntent);
+
+        invalidateOptionsMenu();
+    }
+
+    /** Returns true if the given intent contains a phone number to populate the dialer with */
+    private boolean isDialIntent(Intent intent) {
+        final String action = intent.getAction();
+        if (Intent.ACTION_DIAL.equals(action) || ACTION_TOUCH_DIALER.equals(action)) {
+            return true;
+        }
+        if (Intent.ACTION_VIEW.equals(action)) {
+            final Uri data = intent.getData();
+            if (data != null && PhoneAccount.SCHEME_TEL.equals(data.getScheme())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Shows the search fragment
+     */
+    private void enterSearchUi(boolean smartDialSearch, String query, boolean animate) {
+        if (mStateSaved || getFragmentManager().isDestroyed()) {
+            // Weird race condition where fragment is doing work after the activity is destroyed
+            // due to talkback being on (b/10209937). Just return since we can't do any
+            // constructive here.
+            return;
+        }
+
+        if (DEBUG) {
+            Log.d(TAG, "Entering search UI - smart dial " + smartDialSearch);
+        }
+
+        final FragmentTransaction transaction = getFragmentManager().beginTransaction();
+        if (mInDialpadSearch && mSmartDialSearchFragment != null) {
+            transaction.remove(mSmartDialSearchFragment);
+        } else if (mInRegularSearch && mRegularSearchFragment != null) {
+            transaction.remove(mRegularSearchFragment);
+        }
+
+        final String tag;
+        if (smartDialSearch) {
+            tag = TAG_SMARTDIAL_SEARCH_FRAGMENT;
+        } else {
+            tag = TAG_REGULAR_SEARCH_FRAGMENT;
+        }
+        mInDialpadSearch = smartDialSearch;
+        mInRegularSearch = !smartDialSearch;
+
+        mFloatingActionButtonController.scaleOut();
+
+        SearchFragment fragment = (SearchFragment) getFragmentManager().findFragmentByTag(tag);
+        if (animate) {
+            transaction.setCustomAnimations(android.R.animator.fade_in, 0);
+        } else {
+            transaction.setTransition(FragmentTransaction.TRANSIT_NONE);
+        }
+        if (fragment == null) {
+            if (smartDialSearch) {
+                fragment = new SmartDialSearchFragment();
+            } else {
+                fragment = ObjectFactory.newRegularSearchFragment();
+                fragment.setOnTouchListener(new View.OnTouchListener() {
+                    @Override
+                    public boolean onTouch(View v, MotionEvent event) {
+                        // Show the FAB when the user touches the lists fragment and the soft
+                        // keyboard is hidden.
+                        hideDialpadFragment(true, false);
+                        showFabInSearchUi();
+                        return false;
+                    }
+                });
+            }
+            transaction.add(R.id.dialtacts_frame, fragment, tag);
+        } else {
+            transaction.show(fragment);
+        }
+        // DialtactsActivity will provide the options menu
+        fragment.setHasOptionsMenu(false);
+        fragment.setShowEmptyListForNullQuery(true);
+        if (!smartDialSearch) {
+            fragment.setQueryString(query, false /* delaySelection */);
+        }
+        transaction.commit();
+
+        if (animate) {
+            mListsFragment.getView().animate().alpha(0).withLayer();
+        }
+        mListsFragment.setUserVisibleHint(false);
+
+        if (smartDialSearch) {
+            Logger.logScreenView(ScreenEvent.SMART_DIAL_SEARCH, this);
+        } else {
+            Logger.logScreenView(ScreenEvent.REGULAR_SEARCH, this);
+        }
+    }
+
+    /**
+     * Hides the search fragment
+     */
+    private void exitSearchUi() {
+        // See related bug in enterSearchUI();
+        if (getFragmentManager().isDestroyed() || mStateSaved) {
+            return;
+        }
+
+        mSearchView.setText(null);
+
+        if (mDialpadFragment != null) {
+            mDialpadFragment.clearDialpad();
+        }
+
+        setNotInSearchUi();
+
+        // Restore the FAB for the lists fragment.
+        if (getFabAlignment() != FloatingActionButtonController.ALIGN_END) {
+            mFloatingActionButtonController.setVisible(false);
+        }
+        mFloatingActionButtonController.scaleIn(FAB_SCALE_IN_DELAY_MS);
+        onPageScrolled(mListsFragment.getCurrentTabIndex(), 0 /* offset */, 0 /* pixelOffset */);
+        onPageSelected(mListsFragment.getCurrentTabIndex());
+
+        final FragmentTransaction transaction = getFragmentManager().beginTransaction();
+        if (mSmartDialSearchFragment != null) {
+            transaction.remove(mSmartDialSearchFragment);
+        }
+        if (mRegularSearchFragment != null) {
+            transaction.remove(mRegularSearchFragment);
+        }
+        transaction.commit();
+
+        mListsFragment.getView().animate().alpha(1).withLayer();
+
+        if (mDialpadFragment == null || !mDialpadFragment.isVisible()) {
+            // If the dialpad fragment wasn't previously visible, then send a screen view because
+            // we are exiting regular search. Otherwise, the screen view will be sent by
+            // {@link #hideDialpadFragment}.
+            mListsFragment.sendScreenViewForCurrentPosition();
+            mListsFragment.setUserVisibleHint(true);
+        }
+
+        mActionBarController.onSearchUiExited();
+    }
+
+    @Override
+    public void onBackPressed() {
+        if (mStateSaved) {
+            return;
+        }
+        if (mIsDialpadShown) {
+            if (TextUtils.isEmpty(mSearchQuery) ||
+                    (mSmartDialSearchFragment != null && mSmartDialSearchFragment.isVisible()
+                            && mSmartDialSearchFragment.getAdapter().getCount() == 0)) {
+                exitSearchUi();
+            }
+            hideDialpadFragment(true, false);
+        } else if (isInSearchUi()) {
+            exitSearchUi();
+            DialerUtils.hideInputMethod(mParentLayout);
+        } else {
+            super.onBackPressed();
+        }
+    }
+
+    private void maybeEnterSearchUi() {
+        if (!isInSearchUi()) {
+            enterSearchUi(true /* isSmartDial */, mSearchQuery, false);
+        }
+    }
+
+    /**
+     * @return True if the search UI was exited, false otherwise
+     */
+    private boolean maybeExitSearchUi() {
+        if (isInSearchUi() && TextUtils.isEmpty(mSearchQuery)) {
+            exitSearchUi();
+            DialerUtils.hideInputMethod(mParentLayout);
+            return true;
+        }
+        return false;
+    }
+
+    private void showFabInSearchUi() {
+        mFloatingActionButtonController.changeIcon(
+                getResources().getDrawable(R.drawable.fab_ic_dial),
+                getResources().getString(R.string.action_menu_dialpad_button));
+        mFloatingActionButtonController.align(getFabAlignment(), false /* animate */);
+        mFloatingActionButtonController.scaleIn(FAB_SCALE_IN_DELAY_MS);
+    }
+
+    @Override
+    public void onDialpadQueryChanged(String query) {
+        mDialpadQuery = query;
+        if (mSmartDialSearchFragment != null) {
+            mSmartDialSearchFragment.setAddToContactNumber(query);
+        }
+        final String normalizedQuery = SmartDialNameMatcher.normalizeNumber(query,
+                SmartDialNameMatcher.LATIN_SMART_DIAL_MAP);
+
+        if (!TextUtils.equals(mSearchView.getText(), normalizedQuery)) {
+            if (DEBUG) {
+                Log.d(TAG, "onDialpadQueryChanged - new query: " + query);
+            }
+            if (mDialpadFragment == null || !mDialpadFragment.isVisible()) {
+                // This callback can happen if the dialpad fragment is recreated because of
+                // activity destruction. In that case, don't update the search view because
+                // that would bring the user back to the search fragment regardless of the
+                // previous state of the application. Instead, just return here and let the
+                // fragment manager correctly figure out whatever fragment was last displayed.
+                if (!TextUtils.isEmpty(normalizedQuery)) {
+                    mPendingSearchViewQuery = normalizedQuery;
+                }
+                return;
+            }
+            mSearchView.setText(normalizedQuery);
+        }
+
+        try {
+            if (mDialpadFragment != null && mDialpadFragment.isVisible()) {
+                mDialpadFragment.process_quote_emergency_unquote(normalizedQuery);
+            }
+        } catch (Exception ignored) {
+            // Skip any exceptions for this piece of code
+        }
+    }
+
+    @Override
+    public boolean onDialpadSpacerTouchWithEmptyQuery() {
+        if (mInDialpadSearch && mSmartDialSearchFragment != null
+                && !mSmartDialSearchFragment.isShowingPermissionRequest()) {
+            hideDialpadFragment(true /* animate */, true /* clearDialpad */);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public void onListFragmentScrollStateChange(int scrollState) {
+        if (scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
+            hideDialpadFragment(true, false);
+            DialerUtils.hideInputMethod(mParentLayout);
+        }
+    }
+
+    @Override
+    public void onListFragmentScroll(int firstVisibleItem, int visibleItemCount,
+                                     int totalItemCount) {
+        // TODO: No-op for now. This should eventually show/hide the actionBar based on
+        // interactions with the ListsFragments.
+    }
+
+    private boolean phoneIsInUse() {
+        return TelecomUtil.isInCall(this);
+    }
+
+    private boolean canIntentBeHandled(Intent intent) {
+        final PackageManager packageManager = getPackageManager();
+        final List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,
+                PackageManager.MATCH_DEFAULT_ONLY);
+        return resolveInfo != null && resolveInfo.size() > 0;
+    }
+
+    /**
+     * Called when the user has long-pressed a contact tile to start a drag operation.
+     */
+    @Override
+    public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
+        mListsFragment.showRemoveView(true);
+    }
+
+    @Override
+    public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {
+    }
+
+    /**
+     * Called when the user has released a contact tile after long-pressing it.
+     */
+    @Override
+    public void onDragFinished(int x, int y) {
+        mListsFragment.showRemoveView(false);
+    }
+
+    @Override
+    public void onDroppedOnRemove() {}
+
+    /**
+     * Allows the SpeedDialFragment to attach the drag controller to mRemoveViewContainer
+     * once it has been attached to the activity.
+     */
+    @Override
+    public void setDragDropController(DragDropController dragController) {
+        mDragDropController = dragController;
+        mListsFragment.getRemoveView().setDragDropController(dragController);
+    }
+
+    /**
+     * Implemented to satisfy {@link SpeedDialFragment.HostInterface}
+     */
+    @Override
+    public void showAllContactsTab() {
+        if (mListsFragment != null) {
+            mListsFragment.showTab(ListsFragment.TAB_INDEX_ALL_CONTACTS);
+        }
+    }
+
+    /**
+     * Implemented to satisfy {@link CallLogFragment.HostInterface}
+     */
+    @Override
+    public void showDialpad() {
+        showDialpadFragment(true);
+    }
+
+    @Override
+    public void onPickDataUri(Uri dataUri, boolean isVideoCall, int callInitiationType) {
+        mClearSearchOnPause = true;
+        PhoneNumberInteraction.startInteractionForPhoneCall(
+                DialtactsActivity.this, dataUri, isVideoCall, callInitiationType);
+    }
+
+    @Override
+    public void onPickPhoneNumber(String phoneNumber, boolean isVideoCall, int callInitiationType) {
+        if (phoneNumber == null) {
+            // Invalid phone number, but let the call go through so that InCallUI can show
+            // an error message.
+            phoneNumber = "";
+        }
+
+        final Intent intent = new CallIntentBuilder(phoneNumber)
+                .setIsVideoCall(isVideoCall)
+                .setCallInitiationType(callInitiationType)
+                .build();
+
+        DialerUtils.startActivityWithErrorToast(this, intent);
+        mClearSearchOnPause = true;
+    }
+
+    @Override
+    public void onShortcutIntentCreated(Intent intent) {
+        Log.w(TAG, "Unsupported intent has come (" + intent + "). Ignoring.");
+    }
+
+    @Override
+    public void onHomeInActionBarSelected() {
+        exitSearchUi();
+    }
+
+    @Override
+    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+        int tabIndex = mListsFragment.getCurrentTabIndex();
+
+        // Scroll the button from center to end when moving from the Speed Dial to Call History tab.
+        // In RTL, scroll when the current tab is Call History instead, since the order of the tabs
+        // is reversed and the ViewPager returns the left tab position during scroll.
+        boolean isRtl = DialerUtils.isRtl();
+        if (!isRtl && tabIndex == ListsFragment.TAB_INDEX_SPEED_DIAL && !mIsLandscape) {
+            mFloatingActionButtonController.onPageScrolled(positionOffset);
+        } else if (isRtl && tabIndex == ListsFragment.TAB_INDEX_HISTORY && !mIsLandscape) {
+            mFloatingActionButtonController.onPageScrolled(1 - positionOffset);
+        } else if (tabIndex != ListsFragment.TAB_INDEX_SPEED_DIAL) {
+            mFloatingActionButtonController.onPageScrolled(1);
+        }
+    }
+
+    @Override
+    public void onPageSelected(int position) {
+        int tabIndex = mListsFragment.getCurrentTabIndex();
+        if (tabIndex == ListsFragment.TAB_INDEX_ALL_CONTACTS) {
+            mFloatingActionButtonController.changeIcon(
+                    getResources().getDrawable(R.drawable.ic_person_add_24dp),
+                    getResources().getString(R.string.search_shortcut_create_new_contact));
+        } else {
+            mFloatingActionButtonController.changeIcon(
+                    getResources().getDrawable(R.drawable.fab_ic_dial),
+                    getResources().getString(R.string.action_menu_dialpad_button));
+        }
+    }
+
+    @Override
+    public void onPageScrollStateChanged(int state) {
+    }
+
+    @Override
+    public boolean isActionBarShowing() {
+        return mActionBarController.isActionBarShowing();
+    }
+
+    @Override
+    public ActionBarController getActionBarController() {
+        return mActionBarController;
+    }
+
+    @Override
+    public boolean isDialpadShown() {
+        return mIsDialpadShown;
+    }
+
+    @Override
+    public int getDialpadHeight() {
+        if (mDialpadFragment != null) {
+            return mDialpadFragment.getDialpadHeight();
+        }
+        return 0;
+    }
+
+    @Override
+    public int getActionBarHideOffset() {
+        return getSupportActionBar().getHideOffset();
+    }
+
+    @Override
+    public void setActionBarHideOffset(int offset) {
+        getSupportActionBar().setHideOffset(offset);
+    }
+
+    @Override
+    public int getActionBarHeight() {
+        return mActionBarHeight;
+    }
+
+    private int getFabAlignment() {
+        if (!mIsLandscape && !isInSearchUi() &&
+                mListsFragment.getCurrentTabIndex() == ListsFragment.TAB_INDEX_SPEED_DIAL) {
+            return FloatingActionButtonController.ALIGN_MIDDLE;
+        }
+        return FloatingActionButtonController.ALIGN_END;
+    }
+}
diff --git a/src/com/android/dialer/FloatingActionButtonBehavior.java b/src/com/android/dialer/FloatingActionButtonBehavior.java
new file mode 100644
index 0000000..679c9a7
--- /dev/null
+++ b/src/com/android/dialer/FloatingActionButtonBehavior.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2015 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.dialer;
+
+import android.content.Context;
+import android.support.design.widget.CoordinatorLayout;
+import android.support.design.widget.Snackbar.SnackbarLayout;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.FrameLayout;
+
+/**
+ * Implements custom behavior for the movement of the FAB in response to the Snackbar.
+ * Because we are not using the design framework FloatingActionButton widget, we need to manually
+ * implement the Material Design behavior of having the FAB translate upward and downward with
+ * the appearance and disappearance of a Snackbar.
+ */
+public class FloatingActionButtonBehavior extends CoordinatorLayout.Behavior<FrameLayout> {
+    public FloatingActionButtonBehavior(Context context, AttributeSet attrs) {
+    }
+
+    @Override
+    public boolean layoutDependsOn(CoordinatorLayout parent, FrameLayout child, View dependency) {
+        return dependency instanceof SnackbarLayout;
+    }
+
+    @Override
+    public boolean onDependentViewChanged(CoordinatorLayout parent, FrameLayout child,
+            View dependency) {
+        float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());
+        child.setTranslationY(translationY);
+        return true;
+    }
+}
diff --git a/src/com/android/dialer/NeededForReflection.java b/src/com/android/dialer/NeededForReflection.java
new file mode 100644
index 0000000..e836908
--- /dev/null
+++ b/src/com/android/dialer/NeededForReflection.java
@@ -0,0 +1,30 @@
+/*
+ * 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.dialer;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Denotes that the class, constructor, method or field is used for reflection and therefore cannot
+ * be removed by tools like ProGuard.
+ */
+@Retention(RetentionPolicy.CLASS)
+@Target({ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.FIELD})
+public @interface NeededForReflection{}
diff --git a/src/com/android/dialer/PhoneCallDetails.java b/src/com/android/dialer/PhoneCallDetails.java
new file mode 100644
index 0000000..b332b43
--- /dev/null
+++ b/src/com/android/dialer/PhoneCallDetails.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer;
+
+import com.android.contacts.common.ContactsUtils.UserType;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.dialer.calllog.PhoneNumberDisplayUtil;
+
+import android.content.Context;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
+
+/**
+ * The details of a phone call to be shown in the UI.
+ */
+public class PhoneCallDetails {
+    // The number of the other party involved in the call.
+    public CharSequence number;
+    // Post-dial digits associated with the outgoing call.
+    public String postDialDigits;
+    // The number presenting rules set by the network, e.g., {@link Calls#PRESENTATION_ALLOWED}
+    public int numberPresentation;
+    // The formatted version of {@link #number}.
+    public CharSequence formattedNumber;
+    // The country corresponding with the phone number.
+    public String countryIso;
+    // The geocoded location for the phone number.
+    public String geocode;
+
+    /**
+     * The type of calls, as defined in the call log table, e.g., {@link Calls#INCOMING_TYPE}.
+     * <p>
+     * There might be multiple types if this represents a set of entries grouped together.
+     */
+    public int[] callTypes;
+
+    // The date of the call, in milliseconds since the epoch.
+    public long date;
+    // The duration of the call in milliseconds, or 0 for missed calls.
+    public long duration;
+    // The name of the contact, or the empty string.
+    public CharSequence namePrimary;
+    // The alternative name of the contact, e.g. last name first, or the empty string
+    public CharSequence nameAlternative;
+    /**
+     * The user's preference on name display order, last name first or first time first.
+     * {@see ContactsPreferences}
+     */
+    public int nameDisplayOrder;
+    // The type of phone, e.g., {@link Phone#TYPE_HOME}, 0 if not available.
+    public int numberType;
+    // The custom label associated with the phone number in the contact, or the empty string.
+    public CharSequence numberLabel;
+    // The URI of the contact associated with this phone call.
+    public Uri contactUri;
+
+    /**
+     * The photo URI of the picture of the contact that is associated with this phone call or
+     * null if there is none.
+     * <p>
+     * This is meant to store the high-res photo only.
+     */
+    public Uri photoUri;
+
+    // The source type of the contact associated with this call.
+    public int sourceType;
+
+    // The object id type of the contact associated with this call.
+    public String objectId;
+
+    // The unique identifier for the account associated with the call.
+    public PhoneAccountHandle accountHandle;
+
+    // Features applicable to this call.
+    public int features;
+
+    // Total data usage for this call.
+    public Long dataUsage;
+
+    // Voicemail transcription
+    public String transcription;
+
+    // The display string for the number.
+    public String displayNumber;
+
+    // Whether the contact number is a voicemail number.
+    public boolean isVoicemail;
+
+    /** The {@link UserType} of the contact */
+    public @UserType long contactUserType;
+
+    /**
+     * If this is a voicemail, whether the message is read. For other types of calls, this defaults
+     * to {@code true}.
+     */
+    public boolean isRead = true;
+
+    /**
+     * Constructor with required fields for the details of a call with a number associated with a
+     * contact.
+     */
+    public PhoneCallDetails(
+            Context context,
+            CharSequence number,
+            int numberPresentation,
+            CharSequence formattedNumber,
+            CharSequence postDialDigits,
+            boolean isVoicemail) {
+        this.number = number;
+        this.numberPresentation = numberPresentation;
+        this.formattedNumber = formattedNumber;
+        this.isVoicemail = isVoicemail;
+        this.postDialDigits = postDialDigits.toString();
+        this.displayNumber = PhoneNumberDisplayUtil.getDisplayNumber(
+                context,
+                this.number,
+                this.numberPresentation,
+                this.formattedNumber,
+                this.postDialDigits,
+                this.isVoicemail).toString();
+    }
+
+    /**
+     * Returns the preferred name for the call details as specified by the
+     * {@link #nameDisplayOrder}
+     *
+     * @return the preferred name
+     */
+    public CharSequence getPreferredName() {
+        if (nameDisplayOrder == ContactsPreferences.DISPLAY_ORDER_PRIMARY
+                || TextUtils.isEmpty(nameAlternative)) {
+            return namePrimary;
+        }
+        return nameAlternative;
+    }
+}
diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java
new file mode 100644
index 0000000..4303f3e
--- /dev/null
+++ b/src/com/android/dialer/SpecialCharSequenceMgr.java
@@ -0,0 +1,499 @@
+/*
+ * Copyright (C) 2006 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.dialer;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.DialogFragment;
+import android.app.KeyguardManager;
+import android.app.ProgressDialog;
+import android.content.ActivityNotFoundException;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Looper;
+import android.provider.Settings;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import com.android.common.io.MoreCloseables;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.TelephonyManagerCompat;
+import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler;
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
+import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener;
+import com.android.dialer.calllog.PhoneAccountUtils;
+import com.android.dialer.util.TelecomUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Helper class to listen for some magic character sequences
+ * that are handled specially by the dialer.
+ *
+ * Note the Phone app also handles these sequences too (in a couple of
+ * relatively obscure places in the UI), so there's a separate version of
+ * this class under apps/Phone.
+ *
+ * TODO: there's lots of duplicated code between this class and the
+ * corresponding class under apps/Phone.  Let's figure out a way to
+ * unify these two classes (in the framework? in a common shared library?)
+ */
+public class SpecialCharSequenceMgr {
+    private static final String TAG = "SpecialCharSequenceMgr";
+
+    private static final String TAG_SELECT_ACCT_FRAGMENT = "tag_select_acct_fragment";
+
+    private static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
+    private static final String MMI_IMEI_DISPLAY = "*#06#";
+    private static final String MMI_REGULATORY_INFO_DISPLAY = "*#07#";
+
+    /**
+     * Remembers the previous {@link QueryHandler} and cancel the operation when needed, to
+     * prevent possible crash.
+     *
+     * QueryHandler may call {@link ProgressDialog#dismiss()} when the screen is already gone,
+     * which will cause the app crash. This variable enables the class to prevent the crash
+     * on {@link #cleanup()}.
+     *
+     * TODO: Remove this and replace it (and {@link #cleanup()}) with better implementation.
+     * One complication is that we have SpecialCharSequenceMgr in Phone package too, which has
+     * *slightly* different implementation. Note that Phone package doesn't have this problem,
+     * so the class on Phone side doesn't have this functionality.
+     * Fundamental fix would be to have one shared implementation and resolve this corner case more
+     * gracefully.
+     */
+    private static QueryHandler sPreviousAdnQueryHandler;
+
+    public static class HandleAdnEntryAccountSelectedCallback extends SelectPhoneAccountListener{
+        final private Context mContext;
+        final private QueryHandler mQueryHandler;
+        final private SimContactQueryCookie mCookie;
+
+        public HandleAdnEntryAccountSelectedCallback(Context context,
+                QueryHandler queryHandler, SimContactQueryCookie cookie) {
+            mContext = context;
+            mQueryHandler = queryHandler;
+            mCookie = cookie;
+        }
+
+        @Override
+        public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle,
+                boolean setDefault) {
+            Uri uri = TelecomUtil.getAdnUriForPhoneAccount(mContext, selectedAccountHandle);
+            handleAdnQuery(mQueryHandler, mCookie, uri);
+            // TODO: Show error dialog if result isn't valid.
+        }
+
+    }
+
+    public static class HandleMmiAccountSelectedCallback extends SelectPhoneAccountListener{
+        final private Context mContext;
+        final private String mInput;
+        public HandleMmiAccountSelectedCallback(Context context, String input) {
+            mContext = context.getApplicationContext();
+            mInput = input;
+        }
+
+        @Override
+        public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle,
+                boolean setDefault) {
+            TelecomUtil.handleMmi(mContext, mInput, selectedAccountHandle);
+        }
+    }
+
+    /** This class is never instantiated. */
+    private SpecialCharSequenceMgr() {
+    }
+
+    public static boolean handleChars(Context context, String input, EditText textField) {
+        //get rid of the separators so that the string gets parsed correctly
+        String dialString = PhoneNumberUtils.stripSeparators(input);
+
+        if (handleDeviceIdDisplay(context, dialString)
+                || handleRegulatoryInfoDisplay(context, dialString)
+                || handlePinEntry(context, dialString)
+                || handleAdnEntry(context, dialString, textField)
+                || handleSecretCode(context, dialString)) {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Cleanup everything around this class. Must be run inside the main thread.
+     *
+     * This should be called when the screen becomes background.
+     */
+    public static void cleanup() {
+        if (Looper.myLooper() != Looper.getMainLooper()) {
+            Log.wtf(TAG, "cleanup() is called outside the main thread");
+            return;
+        }
+
+        if (sPreviousAdnQueryHandler != null) {
+            sPreviousAdnQueryHandler.cancel();
+            sPreviousAdnQueryHandler = null;
+        }
+    }
+
+    /**
+     * Handles secret codes to launch arbitrary activities in the form of *#*#<code>#*#*.
+     * If a secret code is encountered an Intent is started with the android_secret_code://<code>
+     * URI.
+     *
+     * @param context the context to use
+     * @param input the text to check for a secret code in
+     * @return true if a secret code was encountered
+     */
+    static boolean handleSecretCode(Context context, String input) {
+        // Secret codes are in the form *#*#<code>#*#*
+        int len = input.length();
+        if (len > 8 && input.startsWith("*#*#") && input.endsWith("#*#*")) {
+            final Intent intent = new Intent(SECRET_CODE_ACTION,
+                    Uri.parse("android_secret_code://" + input.substring(4, len - 4)));
+            context.sendBroadcast(intent);
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Handle ADN requests by filling in the SIM contact number into the requested
+     * EditText.
+     *
+     * This code works alongside the Asynchronous query handler {@link QueryHandler}
+     * and query cancel handler implemented in {@link SimContactQueryCookie}.
+     */
+    static boolean handleAdnEntry(Context context, String input, EditText textField) {
+        /* ADN entries are of the form "N(N)(N)#" */
+        TelephonyManager telephonyManager =
+                (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+        if (telephonyManager == null
+                || telephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_GSM) {
+            return false;
+        }
+
+        // if the phone is keyguard-restricted, then just ignore this
+        // input.  We want to make sure that sim card contacts are NOT
+        // exposed unless the phone is unlocked, and this code can be
+        // accessed from the emergency dialer.
+        KeyguardManager keyguardManager =
+                (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
+        if (keyguardManager.inKeyguardRestrictedInputMode()) {
+            return false;
+        }
+
+        int len = input.length();
+        if ((len > 1) && (len < 5) && (input.endsWith("#"))) {
+            try {
+                // get the ordinal number of the sim contact
+                final int index = Integer.parseInt(input.substring(0, len-1));
+
+                // The original code that navigated to a SIM Contacts list view did not
+                // highlight the requested contact correctly, a requirement for PTCRB
+                // certification.  This behaviour is consistent with the UI paradigm
+                // for touch-enabled lists, so it does not make sense to try to work
+                // around it.  Instead we fill in the the requested phone number into
+                // the dialer text field.
+
+                // create the async query handler
+                final QueryHandler handler = new QueryHandler(context.getContentResolver());
+
+                // create the cookie object
+                final SimContactQueryCookie sc = new SimContactQueryCookie(index - 1, handler,
+                        ADN_QUERY_TOKEN);
+
+                // setup the cookie fields
+                sc.contactNum = index - 1;
+                sc.setTextField(textField);
+
+                // create the progress dialog
+                sc.progressDialog = new ProgressDialog(context);
+                sc.progressDialog.setTitle(R.string.simContacts_title);
+                sc.progressDialog.setMessage(context.getText(R.string.simContacts_emptyLoading));
+                sc.progressDialog.setIndeterminate(true);
+                sc.progressDialog.setCancelable(true);
+                sc.progressDialog.setOnCancelListener(sc);
+                sc.progressDialog.getWindow().addFlags(
+                        WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
+
+                List<PhoneAccountHandle> subscriptionAccountHandles =
+                        PhoneAccountUtils.getSubscriptionPhoneAccounts(context);
+                Context applicationContext = context.getApplicationContext();
+                boolean hasUserSelectedDefault = subscriptionAccountHandles.contains(
+                        TelecomUtil.getDefaultOutgoingPhoneAccount(applicationContext,
+                                PhoneAccount.SCHEME_TEL));
+
+                if (subscriptionAccountHandles.size() <= 1 || hasUserSelectedDefault) {
+                    Uri uri = TelecomUtil.getAdnUriForPhoneAccount(applicationContext, null);
+                    handleAdnQuery(handler, sc, uri);
+                } else {
+                    SelectPhoneAccountListener callback = new HandleAdnEntryAccountSelectedCallback(
+                            applicationContext, handler, sc);
+
+                    DialogFragment dialogFragment = SelectPhoneAccountDialogFragment.newInstance(
+                            subscriptionAccountHandles, callback);
+                    dialogFragment.show(((Activity) context).getFragmentManager(),
+                            TAG_SELECT_ACCT_FRAGMENT);
+                }
+
+                return true;
+            } catch (NumberFormatException ex) {
+                // Ignore
+            }
+        }
+        return false;
+    }
+
+    private static void handleAdnQuery(QueryHandler handler, SimContactQueryCookie cookie,
+            Uri uri) {
+        if (handler == null || cookie == null || uri == null) {
+            Log.w(TAG, "queryAdn parameters incorrect");
+            return;
+        }
+
+        // display the progress dialog
+        cookie.progressDialog.show();
+
+        // run the query.
+        handler.startQuery(ADN_QUERY_TOKEN, cookie, uri, new String[]{ADN_PHONE_NUMBER_COLUMN_NAME},
+                null, null, null);
+
+        if (sPreviousAdnQueryHandler != null) {
+            // It is harmless to call cancel() even after the handler's gone.
+            sPreviousAdnQueryHandler.cancel();
+        }
+        sPreviousAdnQueryHandler = handler;
+    }
+
+    static boolean handlePinEntry(final Context context, final String input) {
+        if ((input.startsWith("**04") || input.startsWith("**05")) && input.endsWith("#")) {
+            List<PhoneAccountHandle> subscriptionAccountHandles =
+                    PhoneAccountUtils.getSubscriptionPhoneAccounts(context);
+            boolean hasUserSelectedDefault = subscriptionAccountHandles.contains(
+                    TelecomUtil.getDefaultOutgoingPhoneAccount(context, PhoneAccount.SCHEME_TEL));
+
+            if (subscriptionAccountHandles.size() <= 1 || hasUserSelectedDefault) {
+                // Don't bring up the dialog for single-SIM or if the default outgoing account is
+                // a subscription account.
+                return TelecomUtil.handleMmi(context, input, null);
+            } else {
+                SelectPhoneAccountListener listener =
+                        new HandleMmiAccountSelectedCallback(context, input);
+
+                DialogFragment dialogFragment = SelectPhoneAccountDialogFragment.newInstance(
+                        subscriptionAccountHandles, listener);
+                dialogFragment.show(((Activity) context).getFragmentManager(),
+                        TAG_SELECT_ACCT_FRAGMENT);
+            }
+            return true;
+        }
+        return false;
+    }
+
+    // TODO: Use TelephonyCapabilities.getDeviceIdLabel() to get the device id label instead of a
+    // hard-coded string.
+    static boolean handleDeviceIdDisplay(Context context, String input) {
+        TelephonyManager telephonyManager =
+                (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+
+        if (telephonyManager != null && input.equals(MMI_IMEI_DISPLAY)) {
+            int labelResId = (telephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) ?
+                    R.string.imei : R.string.meid;
+
+            List<String> deviceIds = new ArrayList<String>();
+            if (TelephonyManagerCompat.getPhoneCount(telephonyManager) > 1 &&
+                    CompatUtils.isMethodAvailable(TelephonyManagerCompat.TELEPHONY_MANAGER_CLASS,
+                            "getDeviceId", Integer.TYPE)) {
+                for (int slot = 0; slot < telephonyManager.getPhoneCount(); slot++) {
+                    String deviceId = telephonyManager.getDeviceId(slot);
+                    if (!TextUtils.isEmpty(deviceId)) {
+                        deviceIds.add(deviceId);
+                    }
+                }
+            } else {
+                deviceIds.add(telephonyManager.getDeviceId());
+            }
+
+            AlertDialog alert = new AlertDialog.Builder(context)
+                    .setTitle(labelResId)
+                    .setItems(deviceIds.toArray(new String[deviceIds.size()]), null)
+                    .setPositiveButton(android.R.string.ok, null)
+                    .setCancelable(false)
+                    .show();
+            return true;
+        }
+        return false;
+    }
+
+    private static boolean handleRegulatoryInfoDisplay(Context context, String input) {
+        if (input.equals(MMI_REGULATORY_INFO_DISPLAY)) {
+            Log.d(TAG, "handleRegulatoryInfoDisplay() sending intent to settings app");
+            Intent showRegInfoIntent = new Intent(Settings.ACTION_SHOW_REGULATORY_INFO);
+            try {
+                context.startActivity(showRegInfoIntent);
+            } catch (ActivityNotFoundException e) {
+                Log.e(TAG, "startActivity() failed: " + e);
+            }
+            return true;
+        }
+        return false;
+    }
+
+    /*******
+     * This code is used to handle SIM Contact queries
+     *******/
+    private static final String ADN_PHONE_NUMBER_COLUMN_NAME = "number";
+    private static final String ADN_NAME_COLUMN_NAME = "name";
+    private static final int ADN_QUERY_TOKEN = -1;
+
+    /**
+     * Cookie object that contains everything we need to communicate to the
+     * handler's onQuery Complete, as well as what we need in order to cancel
+     * the query (if requested).
+     *
+     * Note, access to the textField field is going to be synchronized, because
+     * the user can request a cancel at any time through the UI.
+     */
+    private static class SimContactQueryCookie implements DialogInterface.OnCancelListener{
+        public ProgressDialog progressDialog;
+        public int contactNum;
+
+        // Used to identify the query request.
+        private int mToken;
+        private QueryHandler mHandler;
+
+        // The text field we're going to update
+        private EditText textField;
+
+        public SimContactQueryCookie(int number, QueryHandler handler, int token) {
+            contactNum = number;
+            mHandler = handler;
+            mToken = token;
+        }
+
+        /**
+         * Synchronized getter for the EditText.
+         */
+        public synchronized EditText getTextField() {
+            return textField;
+        }
+
+        /**
+         * Synchronized setter for the EditText.
+         */
+        public synchronized void setTextField(EditText text) {
+            textField = text;
+        }
+
+        /**
+         * Cancel the ADN query by stopping the operation and signaling
+         * the cookie that a cancel request is made.
+         */
+        public synchronized void onCancel(DialogInterface dialog) {
+            // close the progress dialog
+            if (progressDialog != null) {
+                progressDialog.dismiss();
+            }
+
+            // setting the textfield to null ensures that the UI does NOT get
+            // updated.
+            textField = null;
+
+            // Cancel the operation if possible.
+            mHandler.cancelOperation(mToken);
+        }
+    }
+
+    /**
+     * Asynchronous query handler that services requests to look up ADNs
+     *
+     * Queries originate from {@link #handleAdnEntry}.
+     */
+    private static class QueryHandler extends NoNullCursorAsyncQueryHandler {
+
+        private boolean mCanceled;
+
+        public QueryHandler(ContentResolver cr) {
+            super(cr);
+        }
+
+        /**
+         * Override basic onQueryComplete to fill in the textfield when
+         * we're handed the ADN cursor.
+         */
+        @Override
+        protected void onNotNullableQueryComplete(int token, Object cookie, Cursor c) {
+            try {
+                sPreviousAdnQueryHandler = null;
+                if (mCanceled) {
+                    return;
+                }
+
+                SimContactQueryCookie sc = (SimContactQueryCookie) cookie;
+
+                // close the progress dialog.
+                sc.progressDialog.dismiss();
+
+                // get the EditText to update or see if the request was cancelled.
+                EditText text = sc.getTextField();
+
+                // if the TextView is valid, and the cursor is valid and positionable on the
+                // Nth number, then we update the text field and display a toast indicating the
+                // caller name.
+                if ((c != null) && (text != null) && (c.moveToPosition(sc.contactNum))) {
+                    String name = c.getString(c.getColumnIndexOrThrow(ADN_NAME_COLUMN_NAME));
+                    String number =
+                            c.getString(c.getColumnIndexOrThrow(ADN_PHONE_NUMBER_COLUMN_NAME));
+
+                    // fill the text in.
+                    text.getText().replace(0, 0, number);
+
+                    // display the name as a toast
+                    Context context = sc.progressDialog.getContext();
+                    CharSequence msg = ContactDisplayUtils.getTtsSpannedPhoneNumber(
+                            context.getResources(), R.string.menu_callNumber, name);
+                    Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
+                }
+            } finally {
+                MoreCloseables.closeQuietly(c);
+            }
+        }
+
+        public void cancel() {
+            mCanceled = true;
+            // Ask AsyncQueryHandler to cancel the whole request. This will fail when the query is
+            // already started.
+            cancelOperation(ADN_QUERY_TOKEN);
+        }
+    }
+}
diff --git a/src/com/android/dialer/TransactionSafeActivity.java b/src/com/android/dialer/TransactionSafeActivity.java
new file mode 100644
index 0000000..81e5012
--- /dev/null
+++ b/src/com/android/dialer/TransactionSafeActivity.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+
+/**
+ * A common superclass that keeps track of whether an {@link Activity} has saved its state yet or
+ * not.
+ */
+public abstract class TransactionSafeActivity extends AppCompatActivity {
+
+    private boolean mIsSafeToCommitTransactions;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mIsSafeToCommitTransactions = true;
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        mIsSafeToCommitTransactions = true;
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mIsSafeToCommitTransactions = true;
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        mIsSafeToCommitTransactions = false;
+    }
+
+    /**
+     * Returns true if it is safe to commit {@link FragmentTransaction}s at this time, based on
+     * whether {@link Activity#onSaveInstanceState} has been called or not.
+     *
+     * Make sure that the current activity calls into
+     * {@link super.onSaveInstanceState(Bundle outState)} (if that method is overridden),
+     * so the flag is properly set.
+     */
+    public boolean isSafeToCommitTransactions() {
+        return mIsSafeToCommitTransactions;
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
new file mode 100644
index 0000000..ac56332
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.Context;
+import android.provider.CallLog.Calls;
+import android.text.format.DateUtils;
+import android.text.format.Formatter;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.android.contacts.common.CallUtil;
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.R;
+import com.android.dialer.util.DialerUtils;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+
+/**
+ * Adapter for a ListView containing history items from the details of a call.
+ */
+public class CallDetailHistoryAdapter extends BaseAdapter {
+    /** Each history item shows the detail of a call. */
+    private static final int VIEW_TYPE_HISTORY_ITEM = 1;
+
+    private final Context mContext;
+    private final LayoutInflater mLayoutInflater;
+    private final CallTypeHelper mCallTypeHelper;
+    private final PhoneCallDetails[] mPhoneCallDetails;
+
+    /**
+     * List of items to be concatenated together for duration strings.
+     */
+    private ArrayList<CharSequence> mDurationItems = Lists.newArrayList();
+
+    public CallDetailHistoryAdapter(Context context, LayoutInflater layoutInflater,
+            CallTypeHelper callTypeHelper, PhoneCallDetails[] phoneCallDetails) {
+        mContext = context;
+        mLayoutInflater = layoutInflater;
+        mCallTypeHelper = callTypeHelper;
+        mPhoneCallDetails = phoneCallDetails;
+    }
+
+    @Override
+    public boolean isEnabled(int position) {
+        // None of history will be clickable.
+        return false;
+    }
+
+    @Override
+    public int getCount() {
+        return mPhoneCallDetails.length;
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return mPhoneCallDetails[position];
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public int getViewTypeCount() {
+        return 1;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return VIEW_TYPE_HISTORY_ITEM;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        // Make sure we have a valid convertView to start with
+        final View result  = convertView == null
+                ? mLayoutInflater.inflate(R.layout.call_detail_history_item, parent, false)
+                : convertView;
+
+        PhoneCallDetails details = mPhoneCallDetails[position];
+        CallTypeIconsView callTypeIconView =
+                (CallTypeIconsView) result.findViewById(R.id.call_type_icon);
+        TextView callTypeTextView = (TextView) result.findViewById(R.id.call_type_text);
+        TextView dateView = (TextView) result.findViewById(R.id.date);
+        TextView durationView = (TextView) result.findViewById(R.id.duration);
+
+        int callType = details.callTypes[0];
+        boolean isVideoCall = (details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO
+                && CallUtil.isVideoEnabled(mContext);
+
+        callTypeIconView.clear();
+        callTypeIconView.add(callType);
+        callTypeIconView.setShowVideo(isVideoCall);
+        callTypeTextView.setText(mCallTypeHelper.getCallTypeText(callType, isVideoCall));
+        // Set the date.
+        CharSequence dateValue = DateUtils.formatDateRange(mContext, details.date, details.date,
+                DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE |
+                DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_YEAR);
+        dateView.setText(dateValue);
+        // Set the duration
+        if (Calls.VOICEMAIL_TYPE == callType || CallTypeHelper.isMissedCallType(callType)) {
+            durationView.setVisibility(View.GONE);
+        } else {
+            durationView.setVisibility(View.VISIBLE);
+            durationView.setText(formatDurationAndDataUsage(details.duration, details.dataUsage));
+        }
+
+        return result;
+    }
+
+    private CharSequence formatDuration(long elapsedSeconds) {
+        long minutes = 0;
+        long seconds = 0;
+
+        if (elapsedSeconds >= 60) {
+            minutes = elapsedSeconds / 60;
+            elapsedSeconds -= minutes * 60;
+            seconds = elapsedSeconds;
+            return mContext.getString(R.string.callDetailsDurationFormat, minutes, seconds);
+        } else {
+            seconds = elapsedSeconds;
+            return mContext.getString(R.string.callDetailsShortDurationFormat, seconds);
+        }
+    }
+
+    /**
+     * Formats a string containing the call duration and the data usage (if specified).
+     *
+     * @param elapsedSeconds Total elapsed seconds.
+     * @param dataUsage Data usage in bytes, or null if not specified.
+     * @return String containing call duration and data usage.
+     */
+    private CharSequence formatDurationAndDataUsage(long elapsedSeconds, Long dataUsage) {
+        CharSequence duration = formatDuration(elapsedSeconds);
+
+        if (dataUsage != null) {
+            mDurationItems.clear();
+            mDurationItems.add(duration);
+            mDurationItems.add(Formatter.formatShortFileSize(mContext, dataUsage));
+
+            return DialerUtils.join(mContext.getResources(), mDurationItems);
+        } else {
+            return duration;
+        }
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogActivity.java b/src/com/android/dialer/calllog/CallLogActivity.java
new file mode 100644
index 0000000..243eda9
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogActivity.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2013 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.dialer.calllog;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.Intent;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.os.Handler;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
+import android.support.v13.app.FragmentPagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.support.v7.app.ActionBar;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.ViewGroup;
+
+import com.android.contacts.common.interactions.TouchPointManager;
+import com.android.contacts.common.list.ViewPagerTabs;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.commonbind.analytics.AnalyticsUtil;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.R;
+import com.android.dialer.TransactionSafeActivity;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.ScreenEvent;
+import com.android.dialer.util.DialerUtils;
+
+public class CallLogActivity extends TransactionSafeActivity implements ViewPager.OnPageChangeListener {
+    private ViewPager mViewPager;
+    private ViewPagerTabs mViewPagerTabs;
+    private ViewPagerAdapter mViewPagerAdapter;
+    private CallLogFragment mAllCallsFragment;
+    private CallLogFragment mMissedCallsFragment;
+
+    private String[] mTabTitles;
+
+    private static final int TAB_INDEX_ALL = 0;
+    private static final int TAB_INDEX_MISSED = 1;
+
+    private static final int TAB_INDEX_COUNT = 2;
+
+    private boolean mIsResumed;
+
+    public class ViewPagerAdapter extends FragmentPagerAdapter {
+        public ViewPagerAdapter(FragmentManager fm) {
+            super(fm);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return getRtlPosition(position);
+        }
+
+        @Override
+        public Fragment getItem(int position) {
+            switch (getRtlPosition(position)) {
+                case TAB_INDEX_ALL:
+                    return new CallLogFragment(
+                            CallLogQueryHandler.CALL_TYPE_ALL, true /* isCallLogActivity */);
+                case TAB_INDEX_MISSED:
+                    return new CallLogFragment(Calls.MISSED_TYPE, true /* isCallLogActivity */);
+            }
+            throw new IllegalStateException("No fragment at position " + position);
+        }
+
+        @Override
+        public Object instantiateItem(ViewGroup container, int position) {
+            final CallLogFragment fragment =
+                    (CallLogFragment) super.instantiateItem(container, position);
+            switch (position) {
+                case TAB_INDEX_ALL:
+                    mAllCallsFragment = fragment;
+                    break;
+                case TAB_INDEX_MISSED:
+                    mMissedCallsFragment = fragment;
+                    break;
+            }
+            return fragment;
+        }
+
+        @Override
+        public CharSequence getPageTitle(int position) {
+            return mTabTitles[position];
+        }
+
+        @Override
+        public int getCount() {
+            return TAB_INDEX_COUNT;
+        }
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            TouchPointManager.getInstance().setPoint((int) ev.getRawX(), (int) ev.getRawY());
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(R.layout.call_log_activity);
+        getWindow().setBackgroundDrawable(null);
+
+        final ActionBar actionBar = getSupportActionBar();
+        actionBar.setDisplayShowHomeEnabled(true);
+        actionBar.setDisplayHomeAsUpEnabled(true);
+        actionBar.setDisplayShowTitleEnabled(true);
+        actionBar.setElevation(0);
+
+        int startingTab = TAB_INDEX_ALL;
+        final Intent intent = getIntent();
+        if (intent != null) {
+            final int callType = intent.getIntExtra(CallLog.Calls.EXTRA_CALL_TYPE_FILTER, -1);
+            if (callType == CallLog.Calls.MISSED_TYPE) {
+                startingTab = TAB_INDEX_MISSED;
+            }
+        }
+
+        mTabTitles = new String[TAB_INDEX_COUNT];
+        mTabTitles[0] = getString(R.string.call_log_all_title);
+        mTabTitles[1] = getString(R.string.call_log_missed_title);
+
+        mViewPager = (ViewPager) findViewById(R.id.call_log_pager);
+
+        mViewPagerAdapter = new ViewPagerAdapter(getFragmentManager());
+        mViewPager.setAdapter(mViewPagerAdapter);
+        mViewPager.setOffscreenPageLimit(1);
+        mViewPager.setOnPageChangeListener(this);
+
+        mViewPagerTabs = (ViewPagerTabs) findViewById(R.id.viewpager_header);
+
+        mViewPagerTabs.setViewPager(mViewPager);
+        mViewPager.setCurrentItem(startingTab);
+    }
+
+    @Override
+    protected void onResume() {
+        mIsResumed = true;
+        super.onResume();
+        sendScreenViewForChildFragment(mViewPager.getCurrentItem());
+    }
+
+    @Override
+    protected void onPause() {
+        mIsResumed = false;
+        super.onPause();
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        final MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.call_log_options, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        final MenuItem itemDeleteAll = menu.findItem(R.id.delete_all);
+        if (mAllCallsFragment != null && itemDeleteAll != null) {
+            // If onPrepareOptionsMenu is called before fragments are loaded, don't do anything.
+            final CallLogAdapter adapter = mAllCallsFragment.getAdapter();
+            itemDeleteAll.setVisible(adapter != null && !adapter.isEmpty());
+        }
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (!isSafeToCommitTransactions()) {
+            return true;
+        }
+
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                final Intent intent = new Intent(this, DialtactsActivity.class);
+                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                startActivity(intent);
+                return true;
+            case R.id.delete_all:
+                ClearCallLogDialog.show(getFragmentManager());
+                return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
+    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+        mViewPagerTabs.onPageScrolled(position, positionOffset, positionOffsetPixels);
+    }
+
+    @Override
+    public void onPageSelected(int position) {
+        if (mIsResumed) {
+            sendScreenViewForChildFragment(position);
+        }
+        mViewPagerTabs.onPageSelected(position);
+    }
+
+    @Override
+    public void onPageScrollStateChanged(int state) {
+        mViewPagerTabs.onPageScrollStateChanged(state);
+    }
+
+    private void sendScreenViewForChildFragment(int position) {
+        Logger.logScreenView(ScreenEvent.CALL_LOG_FILTER, this);
+    }
+
+    private int getRtlPosition(int position) {
+        if (DialerUtils.isRtl()) {
+            return mViewPagerAdapter.getCount() - 1 - position;
+        }
+        return position;
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
new file mode 100644
index 0000000..af77d86
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -0,0 +1,847 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Trace;
+import android.preference.PreferenceManager;
+import android.provider.CallLog;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.RecyclerView.ViewHolder;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.AccessibilityDelegate;
+import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityEvent;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.R;
+import com.android.dialer.calllog.calllogcache.CallLogCache;
+import com.android.dialer.contactinfo.ContactInfoCache;
+import com.android.dialer.contactinfo.ContactInfoCache.OnContactInfoChangedListener;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.filterednumber.BlockNumberDialogFragment.Callback;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.util.PhoneNumberUtil;
+import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
+import com.android.incallui.CallerInfo;
+
+import java.util.HashMap;
+
+/**
+ * Adapter class to fill in data for the Call Log.
+ */
+public class CallLogAdapter extends GroupingListAdapter
+        implements CallLogGroupBuilder.GroupCreator,
+                VoicemailPlaybackPresenter.OnVoicemailDeletedListener {
+
+    /** Interface used to initiate a refresh of the content. */
+    public interface CallFetcher {
+        public void fetchCalls();
+    }
+
+    private static final int NO_EXPANDED_LIST_ITEM = -1;
+    // ConcurrentHashMap doesn't store null values. Use this value for numbers which aren't blocked.
+    private static final int NOT_BLOCKED = -1;
+
+    private static final int VOICEMAIL_PROMO_CARD_POSITION = 0;
+
+    protected static final int VIEW_TYPE_NORMAL = 0;
+    private static final int VIEW_TYPE_VOICEMAIL_PROMO_CARD = 1;
+
+    /**
+     * The key for the show voicemail promo card preference which will determine whether the promo
+     * card was permanently dismissed or not.
+     */
+    private static final String SHOW_VOICEMAIL_PROMO_CARD = "show_voicemail_promo_card";
+    private static final boolean SHOW_VOICEMAIL_PROMO_CARD_DEFAULT = true;
+
+    protected final Context mContext;
+    private final ContactInfoHelper mContactInfoHelper;
+    protected final VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
+    private final CallFetcher mCallFetcher;
+    private final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
+
+    protected ContactInfoCache mContactInfoCache;
+
+    private boolean mIsCallLogActivity;
+
+    private static final String KEY_EXPANDED_POSITION = "expanded_position";
+    private static final String KEY_EXPANDED_ROW_ID = "expanded_row_id";
+
+    // Tracks the position of the currently expanded list item.
+    private int mCurrentlyExpandedPosition = RecyclerView.NO_POSITION;
+    // Tracks the rowId of the currently expanded list item, so the position can be updated if there
+    // are any changes to the call log entries, such as additions or removals.
+    private long mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM;
+    private int mHiddenPosition = RecyclerView.NO_POSITION;
+    private Uri mHiddenItemUri = null;
+    private boolean mPendingHide = false;
+
+    /**
+     *  Hashmap, keyed by call Id, used to track the day group for a call.  As call log entries are
+     *  put into the primary call groups in {@link com.android.dialer.calllog.CallLogGroupBuilder},
+     *  they are also assigned a secondary "day group".  This hashmap tracks the day group assigned
+     *  to all calls in the call log.  This information is used to trigger the display of a day
+     *  group header above the call log entry at the start of a day group.
+     *  Note: Multiple calls are grouped into a single primary "call group" in the call log, and
+     *  the cursor used to bind rows includes all of these calls.  When determining if a day group
+     *  change has occurred it is necessary to look at the last entry in the call log to determine
+     *  its day group.  This hashmap provides a means of determining the previous day group without
+     *  having to reverse the cursor to the start of the previous day call log entry.
+     */
+    private HashMap<Long, Integer> mDayGroups = new HashMap<>();
+
+    private boolean mLoading = true;
+
+    private SharedPreferences mPrefs;
+
+    private ContactsPreferences mContactsPreferences;
+
+    protected boolean mShowVoicemailPromoCard = false;
+
+    /** Instance of helper class for managing views. */
+    private final CallLogListItemHelper mCallLogListItemHelper;
+
+    /** Cache for repeated requests to Telecom/Telephony. */
+    protected final CallLogCache mCallLogCache;
+
+    /** Helper to group call log entries. */
+    private final CallLogGroupBuilder mCallLogGroupBuilder;
+
+    /**
+     * The OnClickListener used to expand or collapse the action buttons of a call log entry.
+     */
+    private final View.OnClickListener mExpandCollapseListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) v.getTag();
+            if (viewHolder == null) {
+                return;
+            }
+
+            if (mVoicemailPlaybackPresenter != null) {
+                // Always reset the voicemail playback state on expand or collapse.
+                mVoicemailPlaybackPresenter.resetAll();
+            }
+
+            if (viewHolder.getAdapterPosition() == mCurrentlyExpandedPosition) {
+                // Hide actions, if the clicked item is the expanded item.
+                viewHolder.showActions(false);
+
+                mCurrentlyExpandedPosition = RecyclerView.NO_POSITION;
+                mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM;
+            } else {
+                expandViewHolderActions(viewHolder);
+            }
+
+        }
+    };
+
+    /**
+     * Click handler used to dismiss the promo card when the user taps the "ok" button.
+     */
+    private final View.OnClickListener mOkActionListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View view) {
+            dismissVoicemailPromoCard();
+        }
+    };
+
+    /**
+     * Click handler used to send the user to the voicemail settings screen and then dismiss the
+     * promo card.
+     */
+    private final View.OnClickListener mVoicemailSettingsActionListener =
+            new View.OnClickListener() {
+        @Override
+        public void onClick(View view) {
+            Intent intent = new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
+            mContext.startActivity(intent);
+            dismissVoicemailPromoCard();
+        }
+    };
+
+    private void expandViewHolderActions(CallLogListItemViewHolder viewHolder) {
+        // If another item is expanded, notify it that it has changed. Its actions will be
+        // hidden when it is re-binded because we change mCurrentlyExpandedPosition below.
+        if (mCurrentlyExpandedPosition != RecyclerView.NO_POSITION) {
+            notifyItemChanged(mCurrentlyExpandedPosition);
+        }
+        // Show the actions for the clicked list item.
+        viewHolder.showActions(true);
+        mCurrentlyExpandedPosition = viewHolder.getAdapterPosition();
+        mCurrentlyExpandedRowId = viewHolder.rowId;
+    }
+
+    /**
+     * Expand the actions on a list item when focused in Talkback mode, to aid discoverability.
+     */
+    private AccessibilityDelegate mAccessibilityDelegate = new AccessibilityDelegate() {
+        @Override
+        public boolean onRequestSendAccessibilityEvent(
+                ViewGroup host, View child, AccessibilityEvent event) {
+            if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
+                // Only expand if actions are not already expanded, because triggering the expand
+                // function on clicks causes the action views to lose the focus indicator.
+                CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) host.getTag();
+                if (mCurrentlyExpandedPosition != viewHolder.getAdapterPosition()) {
+                    if (mVoicemailPlaybackPresenter != null) {
+                        // Always reset the voicemail playback state on expand.
+                        mVoicemailPlaybackPresenter.resetAll();
+                    }
+
+                    expandViewHolderActions((CallLogListItemViewHolder) host.getTag());
+                }
+            }
+            return super.onRequestSendAccessibilityEvent(host, child, event);
+        }
+    };
+
+    protected final OnContactInfoChangedListener mOnContactInfoChangedListener =
+            new OnContactInfoChangedListener() {
+                @Override
+                public void onContactInfoChanged() {
+                    notifyDataSetChanged();
+                }
+            };
+
+    public CallLogAdapter(
+            Context context,
+            CallFetcher callFetcher,
+            ContactInfoHelper contactInfoHelper,
+            VoicemailPlaybackPresenter voicemailPlaybackPresenter,
+            boolean isCallLogActivity) {
+        super(context);
+
+        mContext = context;
+        mCallFetcher = callFetcher;
+        mContactInfoHelper = contactInfoHelper;
+        mVoicemailPlaybackPresenter = voicemailPlaybackPresenter;
+        if (mVoicemailPlaybackPresenter != null) {
+            mVoicemailPlaybackPresenter.setOnVoicemailDeletedListener(this);
+        }
+        mIsCallLogActivity = isCallLogActivity;
+
+        mContactInfoCache = new ContactInfoCache(
+                mContactInfoHelper, mOnContactInfoChangedListener);
+        if (!PermissionsUtil.hasContactsPermissions(context)) {
+            mContactInfoCache.disableRequestProcessing();
+        }
+
+        Resources resources = mContext.getResources();
+        CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
+
+        mCallLogCache = CallLogCache.getCallLogCache(mContext);
+
+        PhoneCallDetailsHelper phoneCallDetailsHelper =
+                new PhoneCallDetailsHelper(mContext, resources, mCallLogCache);
+        mCallLogListItemHelper =
+                new CallLogListItemHelper(phoneCallDetailsHelper, resources, mCallLogCache);
+        mCallLogGroupBuilder = new CallLogGroupBuilder(this);
+        mFilteredNumberAsyncQueryHandler =
+                new FilteredNumberAsyncQueryHandler(mContext.getContentResolver());
+
+        mPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+        mContactsPreferences = new ContactsPreferences(mContext);
+        maybeShowVoicemailPromoCard();
+    }
+
+    public void onSaveInstanceState(Bundle outState) {
+        outState.putInt(KEY_EXPANDED_POSITION, mCurrentlyExpandedPosition);
+        outState.putLong(KEY_EXPANDED_ROW_ID, mCurrentlyExpandedRowId);
+    }
+
+    public void onRestoreInstanceState(Bundle savedInstanceState) {
+        if (savedInstanceState != null) {
+            mCurrentlyExpandedPosition =
+                    savedInstanceState.getInt(KEY_EXPANDED_POSITION, RecyclerView.NO_POSITION);
+            mCurrentlyExpandedRowId =
+                    savedInstanceState.getLong(KEY_EXPANDED_ROW_ID, NO_EXPANDED_LIST_ITEM);
+        }
+    }
+
+    /**
+     * Requery on background thread when {@link Cursor} changes.
+     */
+    @Override
+    protected void onContentChanged() {
+        mCallFetcher.fetchCalls();
+    }
+
+    public void setLoading(boolean loading) {
+        mLoading = loading;
+    }
+
+    public boolean isEmpty() {
+        if (mLoading) {
+            // We don't want the empty state to show when loading.
+            return false;
+        } else {
+            return getItemCount() == 0;
+        }
+    }
+
+    public void invalidateCache() {
+        mContactInfoCache.invalidate();
+    }
+
+    public void onResume() {
+        if (PermissionsUtil.hasPermission(mContext, android.Manifest.permission.READ_CONTACTS)) {
+            mContactInfoCache.start();
+        }
+        mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
+    }
+
+    public void onPause() {
+        pauseCache();
+
+        if (mHiddenItemUri != null) {
+            CallLogAsyncTaskUtil.deleteVoicemail(mContext, mHiddenItemUri, null);
+        }
+    }
+
+    @VisibleForTesting
+    /* package */ void pauseCache() {
+        mContactInfoCache.stop();
+        mCallLogCache.reset();
+    }
+
+    @Override
+    protected void addGroups(Cursor cursor) {
+        mCallLogGroupBuilder.addGroups(cursor);
+    }
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        if (viewType == VIEW_TYPE_VOICEMAIL_PROMO_CARD) {
+            return createVoicemailPromoCardViewHolder(parent);
+        }
+        return createCallLogEntryViewHolder(parent);
+    }
+
+    /**
+     * Creates a new call log entry {@link ViewHolder}.
+     *
+     * @param parent the parent view.
+     * @return The {@link ViewHolder}.
+     */
+    private ViewHolder createCallLogEntryViewHolder(ViewGroup parent) {
+        LayoutInflater inflater = LayoutInflater.from(mContext);
+        View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
+        CallLogListItemViewHolder viewHolder = CallLogListItemViewHolder.create(
+                view,
+                mContext,
+                mExpandCollapseListener,
+                mCallLogCache,
+                mCallLogListItemHelper,
+                mVoicemailPlaybackPresenter,
+                mFilteredNumberAsyncQueryHandler,
+                new Callback() {
+                    @Override
+                    public void onFilterNumberSuccess() {
+                        Logger.logInteraction(
+                                InteractionEvent.BLOCK_NUMBER_CALL_LOG);
+                    }
+
+                    @Override
+                    public void onUnfilterNumberSuccess() {
+                        Logger.logInteraction(
+                                InteractionEvent.UNBLOCK_NUMBER_CALL_LOG);
+                    }
+
+                    @Override
+                    public void onChangeFilteredNumberUndo() {}
+                });
+
+        viewHolder.callLogEntryView.setTag(viewHolder);
+        viewHolder.callLogEntryView.setAccessibilityDelegate(mAccessibilityDelegate);
+
+        viewHolder.primaryActionView.setTag(viewHolder);
+
+        return viewHolder;
+    }
+
+    /**
+     * Binds the views in the entry to the data in the call log.
+     * TODO: This gets called 20-30 times when Dialer starts up for a single call log entry and
+     * should not. It invokes cross-process methods and the repeat execution can get costly.
+     *
+     * @param viewHolder The view corresponding to this entry.
+     * @param position The position of the entry.
+     */
+    @Override
+    public void onBindViewHolder(ViewHolder viewHolder, int position) {
+        Trace.beginSection("onBindViewHolder: " + position);
+
+        switch (getItemViewType(position)) {
+            case VIEW_TYPE_VOICEMAIL_PROMO_CARD:
+                bindVoicemailPromoCardViewHolder(viewHolder);
+                break;
+            default:
+                bindCallLogListViewHolder(viewHolder, position);
+                break;
+        }
+
+        Trace.endSection();
+    }
+
+    /**
+     * Binds the promo card view holder.
+     *
+     * @param viewHolder The promo card view holder.
+     */
+    protected void bindVoicemailPromoCardViewHolder(ViewHolder viewHolder) {
+        PromoCardViewHolder promoCardViewHolder = (PromoCardViewHolder) viewHolder;
+
+        promoCardViewHolder.getSecondaryActionView()
+                .setOnClickListener(mVoicemailSettingsActionListener);
+        promoCardViewHolder.getPrimaryActionView().setOnClickListener(mOkActionListener);
+    }
+
+    /**
+     * Binds the view holder for the call log list item view.
+     *
+     * @param viewHolder The call log list item view holder.
+     * @param position The position of the list item.
+     */
+
+    private void bindCallLogListViewHolder(ViewHolder viewHolder, int position) {
+        Cursor c = (Cursor) getItem(position);
+        if (c == null) {
+            return;
+        }
+
+        int count = getGroupSize(position);
+
+        final String number = c.getString(CallLogQuery.NUMBER);
+        final String postDialDigits = PhoneNumberDisplayUtil.canShowPostDial()
+                ? c.getString(CallLogQuery.POST_DIAL_DIGITS) : "";
+
+        final int numberPresentation = c.getInt(CallLogQuery.NUMBER_PRESENTATION);
+        final PhoneAccountHandle accountHandle = PhoneAccountUtils.getAccount(
+                c.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME),
+                c.getString(CallLogQuery.ACCOUNT_ID));
+        final String countryIso = c.getString(CallLogQuery.COUNTRY_ISO);
+        final ContactInfo cachedContactInfo = ContactInfoHelper.getContactInfo(c);
+        final boolean isVoicemailNumber =
+                mCallLogCache.isVoicemailNumber(accountHandle, number);
+
+        // Note: Binding of the action buttons is done as required in configureActionViews when the
+        // user expands the actions ViewStub.
+
+        ContactInfo info = ContactInfo.EMPTY;
+        if (PhoneNumberUtil.canPlaceCallsTo(number, numberPresentation) && !isVoicemailNumber) {
+            // Lookup contacts with this number
+            info = mContactInfoCache.getValue(number + postDialDigits,
+                    countryIso, cachedContactInfo);
+        }
+        CharSequence formattedNumber = info.formattedNumber == null
+                ? null : PhoneNumberUtilsCompat.createTtsSpannable(info.formattedNumber);
+
+        final PhoneCallDetails details = new PhoneCallDetails(
+                mContext, number, numberPresentation, formattedNumber,
+                postDialDigits, isVoicemailNumber);
+        details.accountHandle = accountHandle;
+        details.callTypes = getCallTypes(c, count);
+        details.countryIso = countryIso;
+        details.date = c.getLong(CallLogQuery.DATE);
+        details.duration = c.getLong(CallLogQuery.DURATION);
+        details.features = getCallFeatures(c, count);
+        details.geocode = c.getString(CallLogQuery.GEOCODED_LOCATION);
+        details.transcription = c.getString(CallLogQuery.TRANSCRIPTION);
+        if (details.callTypes[0] == CallLog.Calls.VOICEMAIL_TYPE) {
+            details.isRead = c.getInt(CallLogQuery.IS_READ) == 1;
+        }
+
+        if (!c.isNull(CallLogQuery.DATA_USAGE)) {
+            details.dataUsage = c.getLong(CallLogQuery.DATA_USAGE);
+        }
+
+        if (!TextUtils.isEmpty(info.name) || !TextUtils.isEmpty(info.nameAlternative)) {
+            details.contactUri = info.lookupUri;
+            details.namePrimary = info.name;
+            details.nameAlternative = info.nameAlternative;
+            details.nameDisplayOrder = mContactsPreferences.getDisplayOrder();
+            details.numberType = info.type;
+            details.numberLabel = info.label;
+            details.photoUri = info.photoUri;
+            details.sourceType = info.sourceType;
+            details.objectId = info.objectId;
+            details.contactUserType = info.userType;
+        }
+
+        final CallLogListItemViewHolder views = (CallLogListItemViewHolder) viewHolder;
+        views.info = info;
+        views.rowId = c.getLong(CallLogQuery.ID);
+        // Store values used when the actions ViewStub is inflated on expansion.
+        views.number = number;
+        views.postDialDigits = details.postDialDigits;
+        views.displayNumber = details.displayNumber;
+        views.numberPresentation = numberPresentation;
+        views.callType = c.getInt(CallLogQuery.CALL_TYPE);
+        views.accountHandle = accountHandle;
+        views.voicemailUri = c.getString(CallLogQuery.VOICEMAIL_URI);
+        // Stash away the Ids of the calls so that we can support deleting a row in the call log.
+        views.callIds = getCallIds(c, count);
+        views.isBusiness = mContactInfoHelper.isBusiness(info.sourceType);
+        views.numberType = (String) Phone.getTypeLabel(mContext.getResources(), details.numberType,
+                details.numberLabel);
+        // Default case: an item in the call log.
+        views.primaryActionView.setVisibility(View.VISIBLE);
+        views.workIconView.setVisibility(
+                details.contactUserType == ContactsUtils.USER_TYPE_WORK ? View.VISIBLE : View.GONE);
+
+        // Check if the day group has changed and display a header if necessary.
+        int currentGroup = getDayGroupForCall(views.rowId);
+        int previousGroup = getPreviousDayGroup(c);
+        if (currentGroup != previousGroup) {
+            views.dayGroupHeader.setVisibility(View.VISIBLE);
+            views.dayGroupHeader.setText(getGroupDescription(currentGroup));
+        } else {
+            views.dayGroupHeader.setVisibility(View.GONE);
+        }
+
+        mCallLogListItemHelper.setPhoneCallDetails(views, details);
+
+        if (mCurrentlyExpandedRowId == views.rowId) {
+            // In case ViewHolders were added/removed, update the expanded position if the rowIds
+            // match so that we can restore the correct expanded state on rebind.
+            mCurrentlyExpandedPosition = position;
+        }
+
+        views.showActions(mCurrentlyExpandedPosition == position);
+        views.updatePhoto();
+
+        mCallLogListItemHelper.setPhoneCallDetails(views, details);
+    }
+
+    private String getPreferredDisplayName(ContactInfo contactInfo) {
+        if (mContactsPreferences.getDisplayOrder() == ContactsPreferences.DISPLAY_ORDER_PRIMARY ||
+                TextUtils.isEmpty(contactInfo.nameAlternative)) {
+            return contactInfo.name;
+        }
+        return contactInfo.nameAlternative;
+    }
+
+    @Override
+    public int getItemCount() {
+        return super.getItemCount() + (mShowVoicemailPromoCard ? 1 : 0)
+                - (mHiddenPosition != RecyclerView.NO_POSITION ? 1 : 0);
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        if (position == VOICEMAIL_PROMO_CARD_POSITION && mShowVoicemailPromoCard) {
+            return VIEW_TYPE_VOICEMAIL_PROMO_CARD;
+        }
+        return super.getItemViewType(position);
+    }
+
+    /**
+     * Retrieves an item at the specified position, taking into account the presence of a promo
+     * card.
+     *
+     * @param position The position to retrieve.
+     * @return The item at that position.
+     */
+    @Override
+    public Object getItem(int position) {
+        return super.getItem(position - (mShowVoicemailPromoCard ? 1 : 0)
+                + ((mHiddenPosition != RecyclerView.NO_POSITION && position >= mHiddenPosition)
+                        ? 1 : 0));
+    }
+
+    @Override
+    public int getGroupSize(int position) {
+        return super.getGroupSize(position - (mShowVoicemailPromoCard ? 1 : 0));
+    }
+
+    protected boolean isCallLogActivity() {
+        return mIsCallLogActivity;
+    }
+
+    /**
+     * In order to implement the "undo" function, when a voicemail is "deleted" i.e. when the user
+     * clicks the delete button, the deleted item is temporarily hidden from the list. If a user
+     * clicks delete on a second item before the first item's undo option has expired, the first
+     * item is immediately deleted so that only one item can be "undoed" at a time.
+     */
+    @Override
+    public void onVoicemailDeleted(Uri uri) {
+        if (mHiddenItemUri == null) {
+            // Immediately hide the currently expanded card.
+            mHiddenPosition = mCurrentlyExpandedPosition;
+            notifyDataSetChanged();
+        } else {
+            // This means that there was a previous item that was hidden in the UI but not
+            // yet deleted from the database (call it a "pending delete"). Delete this previous item
+            // now since it is only possible to do one "undo" at a time.
+            CallLogAsyncTaskUtil.deleteVoicemail(mContext, mHiddenItemUri, null);
+
+            // Set pending hide action so that the current item is hidden only after the previous
+            // item is permanently deleted.
+            mPendingHide = true;
+        }
+
+        collapseExpandedCard();
+
+        // Save the new hidden item uri in case it needs to be deleted from the database when
+        // a user attempts to delete another item.
+        mHiddenItemUri = uri;
+    }
+
+    private void collapseExpandedCard() {
+        mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM;
+        mCurrentlyExpandedPosition = RecyclerView.NO_POSITION;
+    }
+
+    /**
+     * When the user clicks "undo", the hidden item is unhidden.
+     */
+    @Override
+    public void onVoicemailDeleteUndo() {
+        mHiddenPosition = RecyclerView.NO_POSITION;
+        mHiddenItemUri = null;
+
+        mPendingHide = false;
+        notifyDataSetChanged();
+    }
+
+    /**
+     * This callback signifies that a database deletion has completed. This means that if there is
+     * an item pending deletion, it will be hidden because the previous item that was in "undo" mode
+     * has been removed from the database. Otherwise it simply resets the hidden state because there
+     * are no pending deletes and thus no hidden items.
+     */
+    @Override
+    public void onVoicemailDeletedInDatabase() {
+        if (mPendingHide) {
+            mHiddenPosition = mCurrentlyExpandedPosition;
+            mPendingHide = false;
+        } else {
+            // There should no longer be any hidden item because it has been deleted from the
+            // database.
+            mHiddenPosition = RecyclerView.NO_POSITION;
+            mHiddenItemUri = null;
+        }
+    }
+
+    /**
+     * Retrieves the day group of the previous call in the call log.  Used to determine if the day
+     * group has changed and to trigger display of the day group text.
+     *
+     * @param cursor The call log cursor.
+     * @return The previous day group, or DAY_GROUP_NONE if this is the first call.
+     */
+    private int getPreviousDayGroup(Cursor cursor) {
+        // We want to restore the position in the cursor at the end.
+        int startingPosition = cursor.getPosition();
+        int dayGroup = CallLogGroupBuilder.DAY_GROUP_NONE;
+        if (cursor.moveToPrevious()) {
+            // If the previous entry is hidden (deleted in the UI but not in the database), skip it
+            // and check the card above it. A list with the voicemail promo card at the top will be
+            // 1-indexed because the 0th index is the promo card iteself.
+            int previousViewPosition = mShowVoicemailPromoCard ? startingPosition :
+                startingPosition - 1;
+            if (previousViewPosition != mHiddenPosition ||
+                    (previousViewPosition == mHiddenPosition && cursor.moveToPrevious())) {
+                long previousRowId = cursor.getLong(CallLogQuery.ID);
+                dayGroup = getDayGroupForCall(previousRowId);
+            }
+        }
+        cursor.moveToPosition(startingPosition);
+        return dayGroup;
+    }
+
+    /**
+     * Given a call Id, look up the day group that the call belongs to.  The day group data is
+     * populated in {@link com.android.dialer.calllog.CallLogGroupBuilder}.
+     *
+     * @param callId The call to retrieve the day group for.
+     * @return The day group for the call.
+     */
+    private int getDayGroupForCall(long callId) {
+        if (mDayGroups.containsKey(callId)) {
+            return mDayGroups.get(callId);
+        }
+        return CallLogGroupBuilder.DAY_GROUP_NONE;
+    }
+
+    /**
+     * Returns the call types for the given number of items in the cursor.
+     * <p>
+     * It uses the next {@code count} rows in the cursor to extract the types.
+     * <p>
+     * It position in the cursor is unchanged by this function.
+     */
+    private int[] getCallTypes(Cursor cursor, int count) {
+        int position = cursor.getPosition();
+        int[] callTypes = new int[count];
+        for (int index = 0; index < count; ++index) {
+            callTypes[index] = cursor.getInt(CallLogQuery.CALL_TYPE);
+            cursor.moveToNext();
+        }
+        cursor.moveToPosition(position);
+        return callTypes;
+    }
+
+    /**
+     * Determine the features which were enabled for any of the calls that make up a call log
+     * entry.
+     *
+     * @param cursor The cursor.
+     * @param count The number of calls for the current call log entry.
+     * @return The features.
+     */
+    private int getCallFeatures(Cursor cursor, int count) {
+        int features = 0;
+        int position = cursor.getPosition();
+        for (int index = 0; index < count; ++index) {
+            features |= cursor.getInt(CallLogQuery.FEATURES);
+            cursor.moveToNext();
+        }
+        cursor.moveToPosition(position);
+        return features;
+    }
+
+    /**
+     * Sets whether processing of requests for contact details should be enabled.
+     *
+     * This method should be called in tests to disable such processing of requests when not
+     * needed.
+     */
+    @VisibleForTesting
+    void disableRequestProcessingForTest() {
+        // TODO: Remove this and test the cache directly.
+        mContactInfoCache.disableRequestProcessing();
+    }
+
+    @VisibleForTesting
+    void injectContactInfoForTest(String number, String countryIso, ContactInfo contactInfo) {
+        // TODO: Remove this and test the cache directly.
+        mContactInfoCache.injectContactInfoForTest(number, countryIso, contactInfo);
+    }
+
+    /**
+     * Stores the day group associated with a call in the call log.
+     *
+     * @param rowId The row Id of the current call.
+     * @param dayGroup The day group the call belongs in.
+     */
+    @Override
+    public void setDayGroup(long rowId, int dayGroup) {
+        if (!mDayGroups.containsKey(rowId)) {
+            mDayGroups.put(rowId, dayGroup);
+        }
+    }
+
+    /**
+     * Clears the day group associations on re-bind of the call log.
+     */
+    @Override
+    public void clearDayGroups() {
+        mDayGroups.clear();
+    }
+
+    /**
+     * Retrieves the call Ids represented by the current call log row.
+     *
+     * @param cursor Call log cursor to retrieve call Ids from.
+     * @param groupSize Number of calls associated with the current call log row.
+     * @return Array of call Ids.
+     */
+    private long[] getCallIds(final Cursor cursor, final int groupSize) {
+        // We want to restore the position in the cursor at the end.
+        int startingPosition = cursor.getPosition();
+        long[] ids = new long[groupSize];
+        // Copy the ids of the rows in the group.
+        for (int index = 0; index < groupSize; ++index) {
+            ids[index] = cursor.getLong(CallLogQuery.ID);
+            cursor.moveToNext();
+        }
+        cursor.moveToPosition(startingPosition);
+        return ids;
+    }
+
+    /**
+     * Determines the description for a day group.
+     *
+     * @param group The day group to retrieve the description for.
+     * @return The day group description.
+     */
+    private CharSequence getGroupDescription(int group) {
+       if (group == CallLogGroupBuilder.DAY_GROUP_TODAY) {
+           return mContext.getResources().getString(R.string.call_log_header_today);
+       } else if (group == CallLogGroupBuilder.DAY_GROUP_YESTERDAY) {
+           return mContext.getResources().getString(R.string.call_log_header_yesterday);
+       } else {
+           return mContext.getResources().getString(R.string.call_log_header_other);
+       }
+    }
+
+    /**
+     * Determines if the voicemail promo card should be shown or not.  The voicemail promo card will
+     * be shown as the first item in the voicemail tab.
+     */
+    private void maybeShowVoicemailPromoCard() {
+        boolean showPromoCard = mPrefs.getBoolean(SHOW_VOICEMAIL_PROMO_CARD,
+                SHOW_VOICEMAIL_PROMO_CARD_DEFAULT);
+        mShowVoicemailPromoCard = (mVoicemailPlaybackPresenter != null) && showPromoCard;
+    }
+
+    /**
+     * Dismisses the voicemail promo card and refreshes the call log.
+     */
+    private void dismissVoicemailPromoCard() {
+        mPrefs.edit().putBoolean(SHOW_VOICEMAIL_PROMO_CARD, false).apply();
+        mShowVoicemailPromoCard = false;
+        notifyItemRemoved(VOICEMAIL_PROMO_CARD_POSITION);
+    }
+
+    /**
+     * Creates the view holder for the voicemail promo card.
+     *
+     * @param parent The parent view.
+     * @return The {@link ViewHolder}.
+     */
+    protected ViewHolder createVoicemailPromoCardViewHolder(ViewGroup parent) {
+        LayoutInflater inflater = LayoutInflater.from(mContext);
+        View view = inflater.inflate(R.layout.voicemail_promo_card, parent, false);
+
+        PromoCardViewHolder viewHolder = PromoCardViewHolder.create(view);
+        return viewHolder;
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
new file mode 100644
index 0000000..bb7bdbd
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
@@ -0,0 +1,386 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.provider.CallLog;
+import android.provider.VoicemailContract.Voicemails;
+import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.util.AppCompatConstants;
+import com.android.dialer.util.AsyncTaskExecutor;
+import com.android.dialer.util.AsyncTaskExecutors;
+import com.android.dialer.util.PhoneNumberUtil;
+import com.android.dialer.util.TelecomUtil;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class CallLogAsyncTaskUtil {
+    private static String TAG = CallLogAsyncTaskUtil.class.getSimpleName();
+
+   /** The enumeration of {@link AsyncTask} objects used in this class. */
+    public enum Tasks {
+        DELETE_VOICEMAIL,
+        DELETE_CALL,
+        DELETE_BLOCKED_CALL,
+        MARK_VOICEMAIL_READ,
+        GET_CALL_DETAILS,
+    }
+
+    private static final class CallDetailQuery {
+
+        private static final String[] CALL_LOG_PROJECTION_INTERNAL = new String[] {
+            CallLog.Calls.DATE,
+            CallLog.Calls.DURATION,
+            CallLog.Calls.NUMBER,
+            CallLog.Calls.TYPE,
+            CallLog.Calls.COUNTRY_ISO,
+            CallLog.Calls.GEOCODED_LOCATION,
+            CallLog.Calls.NUMBER_PRESENTATION,
+            CallLog.Calls.PHONE_ACCOUNT_COMPONENT_NAME,
+            CallLog.Calls.PHONE_ACCOUNT_ID,
+            CallLog.Calls.FEATURES,
+            CallLog.Calls.DATA_USAGE,
+            CallLog.Calls.TRANSCRIPTION
+        };
+        public static final String[] CALL_LOG_PROJECTION;
+
+        static final int DATE_COLUMN_INDEX = 0;
+        static final int DURATION_COLUMN_INDEX = 1;
+        static final int NUMBER_COLUMN_INDEX = 2;
+        static final int CALL_TYPE_COLUMN_INDEX = 3;
+        static final int COUNTRY_ISO_COLUMN_INDEX = 4;
+        static final int GEOCODED_LOCATION_COLUMN_INDEX = 5;
+        static final int NUMBER_PRESENTATION_COLUMN_INDEX = 6;
+        static final int ACCOUNT_COMPONENT_NAME = 7;
+        static final int ACCOUNT_ID = 8;
+        static final int FEATURES = 9;
+        static final int DATA_USAGE = 10;
+        static final int TRANSCRIPTION_COLUMN_INDEX = 11;
+        static final int POST_DIAL_DIGITS = 12;
+
+        static {
+            ArrayList<String> projectionList = new ArrayList<>();
+            projectionList.addAll(Arrays.asList(CALL_LOG_PROJECTION_INTERNAL));
+            if (PhoneNumberDisplayUtil.canShowPostDial()) {
+                projectionList.add(AppCompatConstants.POST_DIAL_DIGITS);
+            }
+            projectionList.trimToSize();
+            CALL_LOG_PROJECTION = projectionList.toArray(new String[projectionList.size()]);
+        }
+    }
+
+    private static class CallLogDeleteBlockedCallQuery {
+        static final String[] PROJECTION = new String[] {
+            CallLog.Calls._ID,
+            CallLog.Calls.DATE
+        };
+
+        static final int ID_COLUMN_INDEX = 0;
+        static final int DATE_COLUMN_INDEX = 1;
+    }
+
+    public interface CallLogAsyncTaskListener {
+        public void onDeleteCall();
+        public void onDeleteVoicemail();
+        public void onGetCallDetails(PhoneCallDetails[] details);
+    }
+
+    public interface OnCallLogQueryFinishedListener {
+        public void onQueryFinished(boolean hasEntry);
+    }
+
+    // Try to identify if a call log entry corresponds to a number which was blocked. We match by
+    // by comparing its creation time to the time it was added in the InCallUi and seeing if they
+    // fall within a certain threshold.
+    private static final int MATCH_BLOCKED_CALL_THRESHOLD_MS = 3000;
+
+    private static AsyncTaskExecutor sAsyncTaskExecutor;
+
+    private static void initTaskExecutor() {
+        sAsyncTaskExecutor = AsyncTaskExecutors.createThreadPoolExecutor();
+    }
+
+    public static void getCallDetails(
+            final Context context,
+            final Uri[] callUris,
+            final CallLogAsyncTaskListener callLogAsyncTaskListener) {
+        if (sAsyncTaskExecutor == null) {
+            initTaskExecutor();
+        }
+
+        sAsyncTaskExecutor.submit(Tasks.GET_CALL_DETAILS,
+                new AsyncTask<Void, Void, PhoneCallDetails[]>() {
+                    @Override
+                    public PhoneCallDetails[] doInBackground(Void... params) {
+                        // TODO: All calls correspond to the same person, so make a single lookup.
+                        final int numCalls = callUris.length;
+                        PhoneCallDetails[] details = new PhoneCallDetails[numCalls];
+                        try {
+                            for (int index = 0; index < numCalls; ++index) {
+                                details[index] =
+                                        getPhoneCallDetailsForUri(context, callUris[index]);
+                            }
+                            return details;
+                        } catch (IllegalArgumentException e) {
+                            // Something went wrong reading in our primary data.
+                            Log.w(TAG, "Invalid URI starting call details", e);
+                            return null;
+                        }
+                    }
+
+                    @Override
+                    public void onPostExecute(PhoneCallDetails[] phoneCallDetails) {
+                        if (callLogAsyncTaskListener != null) {
+                            callLogAsyncTaskListener.onGetCallDetails(phoneCallDetails);
+                        }
+                    }
+                });
+    }
+
+    /**
+     * Return the phone call details for a given call log URI.
+     */
+    private static PhoneCallDetails getPhoneCallDetailsForUri(Context context, Uri callUri) {
+        Cursor cursor = context.getContentResolver().query(
+                callUri, CallDetailQuery.CALL_LOG_PROJECTION, null, null, null);
+
+        try {
+            if (cursor == null || !cursor.moveToFirst()) {
+                throw new IllegalArgumentException("Cannot find content: " + callUri);
+            }
+
+            // Read call log.
+            final String countryIso = cursor.getString(CallDetailQuery.COUNTRY_ISO_COLUMN_INDEX);
+            final String number = cursor.getString(CallDetailQuery.NUMBER_COLUMN_INDEX);
+            final String postDialDigits = PhoneNumberDisplayUtil.canShowPostDial()
+                    ? cursor.getString(CallDetailQuery.POST_DIAL_DIGITS) : "";
+            final int numberPresentation =
+                    cursor.getInt(CallDetailQuery.NUMBER_PRESENTATION_COLUMN_INDEX);
+
+            final PhoneAccountHandle accountHandle = PhoneAccountUtils.getAccount(
+                    cursor.getString(CallDetailQuery.ACCOUNT_COMPONENT_NAME),
+                    cursor.getString(CallDetailQuery.ACCOUNT_ID));
+
+            // If this is not a regular number, there is no point in looking it up in the contacts.
+            ContactInfoHelper contactInfoHelper =
+                    new ContactInfoHelper(context, GeoUtil.getCurrentCountryIso(context));
+            boolean isVoicemail = PhoneNumberUtil.isVoicemailNumber(context, accountHandle, number);
+            boolean shouldLookupNumber =
+                    PhoneNumberUtil.canPlaceCallsTo(number, numberPresentation) && !isVoicemail;
+            ContactInfo info = ContactInfo.EMPTY;
+
+            if (shouldLookupNumber) {
+                ContactInfo lookupInfo = contactInfoHelper.lookupNumber(number, countryIso);
+                info = lookupInfo != null ? lookupInfo : ContactInfo.EMPTY;
+            }
+
+            PhoneCallDetails details = new PhoneCallDetails(
+                    context, number, numberPresentation, info.formattedNumber,
+                    postDialDigits, isVoicemail);
+
+            details.accountHandle = accountHandle;
+            details.contactUri = info.lookupUri;
+            details.namePrimary = info.name;
+            details.nameAlternative = info.nameAlternative;
+            details.numberType = info.type;
+            details.numberLabel = info.label;
+            details.photoUri = info.photoUri;
+            details.sourceType = info.sourceType;
+            details.objectId = info.objectId;
+
+            details.callTypes = new int[] {
+                cursor.getInt(CallDetailQuery.CALL_TYPE_COLUMN_INDEX)
+            };
+            details.date = cursor.getLong(CallDetailQuery.DATE_COLUMN_INDEX);
+            details.duration = cursor.getLong(CallDetailQuery.DURATION_COLUMN_INDEX);
+            details.features = cursor.getInt(CallDetailQuery.FEATURES);
+            details.geocode = cursor.getString(CallDetailQuery.GEOCODED_LOCATION_COLUMN_INDEX);
+            details.transcription = cursor.getString(CallDetailQuery.TRANSCRIPTION_COLUMN_INDEX);
+
+            details.countryIso = !TextUtils.isEmpty(countryIso) ? countryIso
+                    : GeoUtil.getCurrentCountryIso(context);
+
+            if (!cursor.isNull(CallDetailQuery.DATA_USAGE)) {
+                details.dataUsage = cursor.getLong(CallDetailQuery.DATA_USAGE);
+            }
+
+            return details;
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+    }
+
+
+    /**
+     * Delete specified calls from the call log.
+     *
+     * @param context The context.
+     * @param callIds String of the callIds to delete from the call log, delimited by commas (",").
+     * @param callLogAsyncTaskListener The listener to invoke after the entries have been deleted.
+     */
+    public static void deleteCalls(
+            final Context context,
+            final String callIds,
+            final CallLogAsyncTaskListener callLogAsyncTaskListener) {
+        if (sAsyncTaskExecutor == null) {
+            initTaskExecutor();
+        }
+
+        sAsyncTaskExecutor.submit(Tasks.DELETE_CALL, new AsyncTask<Void, Void, Void>() {
+            @Override
+            public Void doInBackground(Void... params) {
+                context.getContentResolver().delete(
+                        TelecomUtil.getCallLogUri(context),
+                        CallLog.Calls._ID + " IN (" + callIds + ")", null);
+                return null;
+            }
+
+            @Override
+            public void onPostExecute(Void result) {
+                if (callLogAsyncTaskListener != null) {
+                    callLogAsyncTaskListener.onDeleteCall();
+                }
+            }
+        });
+    }
+
+    /**
+     * Deletes the last call made by the number within a threshold of the call time added in the
+     * call log, assuming it is a blocked call for which no entry should be shown.
+     *
+     * @param context The context.
+     * @param number Number of blocked call, for which to delete the call log entry.
+     * @param timeAddedMs The time the number was added to InCall, in milliseconds.
+     * @param listener The listener to invoke after looking up for a call log entry matching the
+     *     number and time added.
+     */
+    public static void deleteBlockedCall(
+            final Context context,
+            final String number,
+            final long timeAddedMs,
+            final OnCallLogQueryFinishedListener listener) {
+        if (sAsyncTaskExecutor == null) {
+            initTaskExecutor();
+        }
+
+        sAsyncTaskExecutor.submit(Tasks.DELETE_BLOCKED_CALL, new AsyncTask<Void, Void, Long>() {
+            @Override
+            public Long doInBackground(Void... params) {
+                // First, lookup the call log entry of the most recent call with this number.
+                Cursor cursor = context.getContentResolver().query(
+                        TelecomUtil.getCallLogUri(context),
+                        CallLogDeleteBlockedCallQuery.PROJECTION,
+                        CallLog.Calls.NUMBER + "= ?",
+                        new String[] { number },
+                        CallLog.Calls.DATE + " DESC LIMIT 1");
+
+                // If match is found, delete this call log entry and return the call log entry id.
+                if (cursor.moveToFirst()) {
+                    long creationTime =
+                            cursor.getLong(CallLogDeleteBlockedCallQuery.DATE_COLUMN_INDEX);
+                    if (timeAddedMs > creationTime
+                            && timeAddedMs - creationTime < MATCH_BLOCKED_CALL_THRESHOLD_MS) {
+                        long callLogEntryId =
+                                cursor.getLong(CallLogDeleteBlockedCallQuery.ID_COLUMN_INDEX);
+                        context.getContentResolver().delete(
+                                TelecomUtil.getCallLogUri(context),
+                                CallLog.Calls._ID + " IN (" + callLogEntryId + ")",
+                                null);
+                        return callLogEntryId;
+                    }
+                }
+                return (long) -1;
+            }
+
+            @Override
+            public void onPostExecute(Long callLogEntryId) {
+                if (listener != null) {
+                    listener.onQueryFinished(callLogEntryId >= 0);
+                }
+            }
+        });
+    }
+
+
+    public static void markVoicemailAsRead(final Context context, final Uri voicemailUri) {
+        if (sAsyncTaskExecutor == null) {
+            initTaskExecutor();
+        }
+
+        sAsyncTaskExecutor.submit(Tasks.MARK_VOICEMAIL_READ, new AsyncTask<Void, Void, Void>() {
+            @Override
+            public Void doInBackground(Void... params) {
+                ContentValues values = new ContentValues();
+                values.put(Voicemails.IS_READ, true);
+                context.getContentResolver().update(
+                        voicemailUri, values, Voicemails.IS_READ + " = 0", null);
+
+                Intent intent = new Intent(context, CallLogNotificationsService.class);
+                intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD);
+                context.startService(intent);
+
+                ((DialtactsActivity) context).updateTabUnreadCounts();
+                return null;
+            }
+        });
+    }
+
+    public static void deleteVoicemail(
+            final Context context,
+            final Uri voicemailUri,
+            final CallLogAsyncTaskListener callLogAsyncTaskListener) {
+        if (sAsyncTaskExecutor == null) {
+            initTaskExecutor();
+        }
+
+        sAsyncTaskExecutor.submit(Tasks.DELETE_VOICEMAIL, new AsyncTask<Void, Void, Void>() {
+            @Override
+            public Void doInBackground(Void... params) {
+                context.getContentResolver().delete(voicemailUri, null, null);
+                return null;
+            }
+
+            @Override
+            public void onPostExecute(Void result) {
+                if (callLogAsyncTaskListener != null) {
+                    callLogAsyncTaskListener.onDeleteVoicemail();
+                }
+            }
+        });
+    }
+
+    @VisibleForTesting
+    public static void resetForTest() {
+        sAsyncTaskExecutor = null;
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java
new file mode 100644
index 0000000..41ff7d3
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogFragment.java
@@ -0,0 +1,528 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.KeyguardManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract;
+import android.support.annotation.Nullable;
+import android.support.v13.app.FragmentCompat;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.R;
+import com.android.dialer.util.EmptyLoader;
+import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+import com.android.dialerbind.ObjectFactory;
+
+import static android.Manifest.permission.READ_CALL_LOG;
+
+/**
+ * Displays a list of call log entries. To filter for a particular kind of call
+ * (all, missed or voicemails), specify it in the constructor.
+ */
+public class CallLogFragment extends Fragment implements CallLogQueryHandler.Listener,
+        CallLogAdapter.CallFetcher, OnEmptyViewActionButtonClickedListener,
+        FragmentCompat.OnRequestPermissionsResultCallback {
+    private static final String TAG = "CallLogFragment";
+
+    /**
+     * ID of the empty loader to defer other fragments.
+     */
+    private static final int EMPTY_LOADER_ID = 0;
+
+    private static final String KEY_FILTER_TYPE = "filter_type";
+    private static final String KEY_LOG_LIMIT = "log_limit";
+    private static final String KEY_DATE_LIMIT = "date_limit";
+
+    // No limit specified for the number of logs to show; use the CallLogQueryHandler's default.
+    private static final int NO_LOG_LIMIT = -1;
+    // No date-based filtering.
+    private static final int NO_DATE_LIMIT = 0;
+
+    private static final int READ_CALL_LOG_PERMISSION_REQUEST_CODE = 1;
+
+    private static final int EVENT_UPDATE_DISPLAY = 1;
+
+    private static final long MILLIS_IN_MINUTE = 60 * 1000;
+
+    private RecyclerView mRecyclerView;
+    private LinearLayoutManager mLayoutManager;
+    private CallLogAdapter mAdapter;
+    private CallLogQueryHandler mCallLogQueryHandler;
+    private boolean mScrollToTop;
+
+
+    private EmptyContentView mEmptyListView;
+    private KeyguardManager mKeyguardManager;
+
+    private boolean mEmptyLoaderRunning;
+    private boolean mCallLogFetched;
+    private boolean mVoicemailStatusFetched;
+
+    private final Handler mDisplayUpdateHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case EVENT_UPDATE_DISPLAY:
+                    refreshData();
+                    rescheduleDisplayUpdate();
+                    break;
+            }
+        }
+    };
+
+    private final Handler mHandler = new Handler();
+
+    protected 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;
+
+    private boolean mHasReadCallLogPermission = false;
+
+    // Exactly same variable is in Fragment as a package private.
+    private boolean mMenuVisible = true;
+
+    // Default to all calls.
+    private int mCallTypeFilter = CallLogQueryHandler.CALL_TYPE_ALL;
+
+    // Log limit - if no limit is specified, then the default in {@link CallLogQueryHandler}
+    // will be used.
+    private int mLogLimit = NO_LOG_LIMIT;
+
+    // Date limit (in millis since epoch) - when non-zero, only calls which occurred on or after
+    // the date filter are included.  If zero, no date-based filtering occurs.
+    private long mDateLimit = NO_DATE_LIMIT;
+
+    /*
+     * True if this instance of the CallLogFragment shown in the CallLogActivity.
+     */
+    private boolean mIsCallLogActivity = false;
+
+    public interface HostInterface {
+        public void showDialpad();
+    }
+
+    public CallLogFragment() {
+        this(CallLogQueryHandler.CALL_TYPE_ALL, NO_LOG_LIMIT);
+    }
+
+    public CallLogFragment(int filterType) {
+        this(filterType, NO_LOG_LIMIT);
+    }
+
+    public CallLogFragment(int filterType, boolean isCallLogActivity) {
+        this(filterType, NO_LOG_LIMIT);
+        mIsCallLogActivity = isCallLogActivity;
+    }
+
+    public CallLogFragment(int filterType, int logLimit) {
+        this(filterType, logLimit, NO_DATE_LIMIT);
+    }
+
+    /**
+     * Creates a call log fragment, filtering to include only calls of the desired type, occurring
+     * after the specified date.
+     * @param filterType type of calls to include.
+     * @param dateLimit limits results to calls occurring on or after the specified date.
+     */
+    public CallLogFragment(int filterType, long dateLimit) {
+        this(filterType, NO_LOG_LIMIT, dateLimit);
+    }
+
+    /**
+     * Creates a call log fragment, filtering to include only calls of the desired type, occurring
+     * after the specified date.  Also provides a means to limit the number of results returned.
+     * @param filterType type of calls to include.
+     * @param logLimit limits the number of results to return.
+     * @param dateLimit limits results to calls occurring on or after the specified date.
+     */
+    public CallLogFragment(int filterType, int logLimit, long dateLimit) {
+        mCallTypeFilter = filterType;
+        mLogLimit = logLimit;
+        mDateLimit = dateLimit;
+    }
+
+    @Override
+    public void onCreate(Bundle state) {
+        super.onCreate(state);
+        if (state != null) {
+            mCallTypeFilter = state.getInt(KEY_FILTER_TYPE, mCallTypeFilter);
+            mLogLimit = state.getInt(KEY_LOG_LIMIT, mLogLimit);
+            mDateLimit = state.getLong(KEY_DATE_LIMIT, mDateLimit);
+        }
+
+        final Activity activity = getActivity();
+        final ContentResolver resolver = activity.getContentResolver();
+        String currentCountryIso = GeoUtil.getCurrentCountryIso(activity);
+        mCallLogQueryHandler = new CallLogQueryHandler(activity, resolver, this, mLogLimit);
+        mKeyguardManager =
+                (KeyguardManager) activity.getSystemService(Context.KEYGUARD_SERVICE);
+        resolver.registerContentObserver(CallLog.CONTENT_URI, true, mCallLogObserver);
+        resolver.registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true,
+                mContactsObserver);
+        setHasOptionsMenu(true);
+    }
+
+    /** Called by the CallLogQueryHandler when the list of calls has been fetched or updated. */
+    @Override
+    public boolean onCallsFetched(Cursor cursor) {
+        if (getActivity() == null || getActivity().isFinishing()) {
+            // Return false; we did not take ownership of the cursor
+            return false;
+        }
+        mAdapter.setLoading(false);
+        mAdapter.changeCursor(cursor);
+        // This will update the state of the "Clear call log" menu item.
+        getActivity().invalidateOptionsMenu();
+
+        boolean showListView = cursor != null && cursor.getCount() > 0;
+        mRecyclerView.setVisibility(showListView ? View.VISIBLE : View.GONE);
+        mEmptyListView.setVisibility(!showListView ? View.VISIBLE : View.GONE);
+
+        if (mScrollToTop) {
+            // The smooth-scroll animation happens over a fixed time period.
+            // As a result, if it scrolls through a large portion of the list,
+            // each frame will jump so far from the previous one that the user
+            // will not experience the illusion of downward motion.  Instead,
+            // if we're not already near the top of the list, we instantly jump
+            // near the top, and animate from there.
+            if (mLayoutManager.findFirstVisibleItemPosition() > 5) {
+                // TODO: Jump to near the top, then begin smooth scroll.
+                mRecyclerView.smoothScrollToPosition(0);
+            }
+            // Workaround for framework issue: the smooth-scroll doesn't
+            // occur if setSelection() is called immediately before.
+            mHandler.post(new Runnable() {
+               @Override
+               public void run() {
+                   if (getActivity() == null || getActivity().isFinishing()) {
+                       return;
+                   }
+                   mRecyclerView.smoothScrollToPosition(0);
+               }
+            });
+
+            mScrollToTop = false;
+        }
+        mCallLogFetched = true;
+        destroyEmptyLoaderIfAllDataFetched();
+        return true;
+    }
+
+    /**
+     * Called by {@link CallLogQueryHandler} after a successful query to voicemail status provider.
+     */
+    @Override
+    public void onVoicemailStatusFetched(Cursor statusCursor) {
+        Activity activity = getActivity();
+        if (activity == null || activity.isFinishing()) {
+            return;
+        }
+
+        mVoicemailStatusFetched = true;
+        destroyEmptyLoaderIfAllDataFetched();
+    }
+
+    private void destroyEmptyLoaderIfAllDataFetched() {
+        if (mCallLogFetched && mVoicemailStatusFetched && mEmptyLoaderRunning) {
+            mEmptyLoaderRunning = false;
+            getLoaderManager().destroyLoader(EMPTY_LOADER_ID);
+        }
+    }
+
+    @Override
+    public void onVoicemailUnreadCountFetched(Cursor cursor) {}
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
+        View view = inflater.inflate(R.layout.call_log_fragment, container, false);
+        setupView(view, null);
+        return view;
+    }
+
+    protected void setupView(
+            View view, @Nullable VoicemailPlaybackPresenter voicemailPlaybackPresenter) {
+        mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
+        mRecyclerView.setHasFixedSize(true);
+        mLayoutManager = new LinearLayoutManager(getActivity());
+        mRecyclerView.setLayoutManager(mLayoutManager);
+        mEmptyListView = (EmptyContentView) view.findViewById(R.id.empty_list_view);
+        mEmptyListView.setImage(R.drawable.empty_call_log);
+        mEmptyListView.setActionClickedListener(this);
+
+        String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
+        mAdapter = ObjectFactory.newCallLogAdapter(
+                getActivity(),
+                this,
+                new ContactInfoHelper(getActivity(), currentCountryIso),
+                voicemailPlaybackPresenter,
+                mIsCallLogActivity);
+        mRecyclerView.setAdapter(mAdapter);
+        fetchCalls();
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        updateEmptyMessage(mCallTypeFilter);
+        mAdapter.onRestoreInstanceState(savedInstanceState);
+    }
+
+    @Override
+    public void onStart() {
+        // Start the empty loader now to defer other fragments.  We destroy it when both calllog
+        // and the voicemail status are fetched.
+        getLoaderManager().initLoader(EMPTY_LOADER_ID, null,
+                new EmptyLoader.Callback(getActivity()));
+        mEmptyLoaderRunning = true;
+        super.onStart();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        final boolean hasReadCallLogPermission =
+                PermissionsUtil.hasPermission(getActivity(), READ_CALL_LOG);
+        if (!mHasReadCallLogPermission && hasReadCallLogPermission) {
+            // We didn't have the permission before, and now we do. Force a refresh of the call log.
+            // Note that this code path always happens on a fresh start, but mRefreshDataRequired
+            // is already true in that case anyway.
+            mRefreshDataRequired = true;
+            updateEmptyMessage(mCallTypeFilter);
+        }
+
+        mHasReadCallLogPermission = hasReadCallLogPermission;
+        refreshData();
+        mAdapter.onResume();
+
+        rescheduleDisplayUpdate();
+    }
+
+    @Override
+    public void onPause() {
+        cancelDisplayUpdate();
+        mAdapter.onPause();
+        super.onPause();
+    }
+
+    @Override
+    public void onStop() {
+        updateOnTransition(false /* onEntry */);
+
+        super.onStop();
+    }
+
+    @Override
+    public void onDestroy() {
+        mAdapter.changeCursor(null);
+
+        getActivity().getContentResolver().unregisterContentObserver(mCallLogObserver);
+        getActivity().getContentResolver().unregisterContentObserver(mContactsObserver);
+        super.onDestroy();
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(KEY_FILTER_TYPE, mCallTypeFilter);
+        outState.putInt(KEY_LOG_LIMIT, mLogLimit);
+        outState.putLong(KEY_DATE_LIMIT, mDateLimit);
+
+        mAdapter.onSaveInstanceState(outState);
+    }
+
+    @Override
+    public void fetchCalls() {
+        mCallLogQueryHandler.fetchCalls(mCallTypeFilter, mDateLimit);
+    }
+
+    private void updateEmptyMessage(int filterType) {
+        final Context context = getActivity();
+        if (context == null) {
+            return;
+        }
+
+        if (!PermissionsUtil.hasPermission(context, READ_CALL_LOG)) {
+            mEmptyListView.setDescription(R.string.permission_no_calllog);
+            mEmptyListView.setActionLabel(R.string.permission_single_turn_on);
+            return;
+        }
+
+        final int messageId;
+        switch (filterType) {
+            case Calls.MISSED_TYPE:
+                messageId = R.string.call_log_missed_empty;
+                break;
+            case Calls.VOICEMAIL_TYPE:
+                messageId = R.string.call_log_voicemail_empty;
+                break;
+            case CallLogQueryHandler.CALL_TYPE_ALL:
+                messageId = R.string.call_log_all_empty;
+                break;
+            default:
+                throw new IllegalArgumentException("Unexpected filter type in CallLogFragment: "
+                        + filterType);
+        }
+        mEmptyListView.setDescription(messageId);
+        if (mIsCallLogActivity) {
+            mEmptyListView.setActionLabel(EmptyContentView.NO_LABEL);
+        } else if (filterType == CallLogQueryHandler.CALL_TYPE_ALL) {
+            mEmptyListView.setActionLabel(R.string.call_log_all_empty_action);
+        }
+    }
+
+    CallLogAdapter getAdapter() {
+        return mAdapter;
+    }
+
+    @Override
+    public void setMenuVisibility(boolean menuVisible) {
+        super.setMenuVisibility(menuVisible);
+        if (mMenuVisible != menuVisible) {
+            mMenuVisible = menuVisible;
+            if (!menuVisible) {
+                updateOnTransition(false /* onEntry */);
+            } else if (isResumed()) {
+                refreshData();
+            }
+        }
+    }
+
+    /** Requests updates to the data to be shown. */
+    private void refreshData() {
+        // 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();
+            mAdapter.setLoading(true);
+
+            fetchCalls();
+            mCallLogQueryHandler.fetchVoicemailStatus();
+
+            updateOnTransition(true /* onEntry */);
+            mRefreshDataRequired = false;
+        } else {
+            // Refresh the display of the existing data to update the timestamp text descriptions.
+            mAdapter.notifyDataSetChanged();
+        }
+    }
+
+    /**
+     * Updates the call data and notification state on entering or leaving the call log tab.
+     *
+     * If we are leaving the call log tab, mark all the missed calls as read.
+     *
+     * TODO: Move to CallLogActivity
+     */
+    private void updateOnTransition(boolean onEntry) {
+        // We don't want to update any call data when keyguard is on because the user has likely not
+        // seen the new calls yet.
+        // This might be called before onCreate() and thus we need to check null explicitly.
+        if (mKeyguardManager != null && !mKeyguardManager.inKeyguardRestrictedInputMode()) {
+            // On either of the transitions we update the missed call and voicemail notifications.
+            // While exiting we additionally consume all missed calls (by marking them as read).
+            mCallLogQueryHandler.markNewCallsAsOld();
+            if (!onEntry) {
+                mCallLogQueryHandler.markMissedCallsAsRead();
+            }
+            if (mCallTypeFilter == Calls.VOICEMAIL_TYPE) {
+                CallLogNotificationsHelper.updateVoicemailNotifications(getActivity());
+            } else {
+                CallLogNotificationsHelper.removeMissedCallNotifications(getActivity());
+            }
+        }
+    }
+
+    @Override
+    public void onEmptyViewActionButtonClicked() {
+        final Activity activity = getActivity();
+        if (activity == null) {
+            return;
+        }
+
+        if (!PermissionsUtil.hasPermission(activity, READ_CALL_LOG)) {
+          FragmentCompat.requestPermissions(this, new String[] {READ_CALL_LOG},
+              READ_CALL_LOG_PERMISSION_REQUEST_CODE);
+        } else if (!mIsCallLogActivity) {
+            // Show dialpad if we are not in the call log activity.
+            ((HostInterface) activity).showDialpad();
+        }
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String[] permissions,
+            int[] grantResults) {
+        if (requestCode == READ_CALL_LOG_PERMISSION_REQUEST_CODE) {
+            if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
+                // Force a refresh of the data since we were missing the permission before this.
+                mRefreshDataRequired = true;
+            }
+        }
+    }
+
+    /**
+     * Schedules an update to the relative call times (X mins ago).
+     */
+    private void rescheduleDisplayUpdate() {
+        if (!mDisplayUpdateHandler.hasMessages(EVENT_UPDATE_DISPLAY)) {
+            long time = System.currentTimeMillis();
+            // This value allows us to change the display relatively close to when the time changes
+            // from one minute to the next.
+            long millisUtilNextMinute = MILLIS_IN_MINUTE - (time % MILLIS_IN_MINUTE);
+            mDisplayUpdateHandler.sendEmptyMessageDelayed(
+                    EVENT_UPDATE_DISPLAY, millisUtilNextMinute);
+        }
+    }
+
+    /**
+     * Cancels any pending update requests to update the relative call times (X mins ago).
+     */
+    private void cancelDisplayUpdate() {
+        mDisplayUpdateHandler.removeMessages(EVENT_UPDATE_DISPLAY);
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogGroupBuilder.java b/src/com/android/dialer/calllog/CallLogGroupBuilder.java
new file mode 100644
index 0000000..194231b
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogGroupBuilder.java
@@ -0,0 +1,265 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.database.Cursor;
+import android.telephony.PhoneNumberUtils;
+import android.text.format.Time;
+import android.text.TextUtils;
+
+import com.android.contacts.common.util.DateUtils;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.dialer.util.AppCompatConstants;
+
+import com.google.common.annotations.VisibleForTesting;
+
+/**
+ * Groups together calls in the call log.  The primary grouping attempts to group together calls
+ * to and from the same number into a single row on the call log.
+ * A secondary grouping assigns calls, grouped via the primary grouping, to "day groups".  The day
+ * groups provide a means of identifying the calls which occurred "Today", "Yesterday", "Last week",
+ * or "Other".
+ * <p>
+ * This class is meant to be used in conjunction with {@link GroupingListAdapter}.
+ */
+public class CallLogGroupBuilder {
+    public interface GroupCreator {
+
+        /**
+         * Defines the interface for adding a group to the call log.
+         * The primary group for a call log groups the calls together based on the number which was
+         * dialed.
+         * @param cursorPosition The starting position of the group in the cursor.
+         * @param size The size of the group.
+         */
+        public void addGroup(int cursorPosition, int size);
+
+        /**
+         * Defines the interface for tracking the day group each call belongs to.  Calls in a call
+         * group are assigned the same day group as the first call in the group.  The day group
+         * assigns calls to the buckets: Today, Yesterday, Last week, and Other
+         *
+         * @param rowId The row Id of the current call.
+         * @param dayGroup The day group the call belongs in.
+         */
+        public void setDayGroup(long rowId, int dayGroup);
+
+        /**
+         * Defines the interface for clearing the day groupings information on rebind/regroup.
+         */
+        public void clearDayGroups();
+    }
+
+    /**
+     * Day grouping for call log entries used to represent no associated day group.  Used primarily
+     * when retrieving the previous day group, but there is no previous day group (i.e. we are at
+     * the start of the list).
+     */
+    public static final int DAY_GROUP_NONE = -1;
+
+    /** Day grouping for calls which occurred today. */
+    public static final int DAY_GROUP_TODAY = 0;
+
+    /** Day grouping for calls which occurred yesterday. */
+    public static final int DAY_GROUP_YESTERDAY = 1;
+
+    /** Day grouping for calls which occurred before last week. */
+    public static final int DAY_GROUP_OTHER = 2;
+
+    /** Instance of the time object used for time calculations. */
+    private static final Time TIME = new Time();
+
+    /** The object on which the groups are created. */
+    private final GroupCreator mGroupCreator;
+
+    public CallLogGroupBuilder(GroupCreator groupCreator) {
+        mGroupCreator = groupCreator;
+    }
+
+    /**
+     * Finds all groups of adjacent entries in the call log which should be grouped together and
+     * calls {@link GroupCreator#addGroup(int, int)} on {@link #mGroupCreator} for each of
+     * them.
+     * <p>
+     * For entries that are not grouped with others, we do not need to create a group of size one.
+     * <p>
+     * It assumes that the cursor will not change during its execution.
+     *
+     * @see GroupingListAdapter#addGroups(Cursor)
+     */
+    public void addGroups(Cursor cursor) {
+        final int count = cursor.getCount();
+        if (count == 0) {
+            return;
+        }
+
+        // Clear any previous day grouping information.
+        mGroupCreator.clearDayGroups();
+
+        // Get current system time, used for calculating which day group calls belong to.
+        long currentTime = System.currentTimeMillis();
+        cursor.moveToFirst();
+
+        // Determine the day group for the first call in the cursor.
+        final long firstDate = cursor.getLong(CallLogQuery.DATE);
+        final long firstRowId = cursor.getLong(CallLogQuery.ID);
+        int groupDayGroup = getDayGroup(firstDate, currentTime);
+        mGroupCreator.setDayGroup(firstRowId, groupDayGroup);
+
+        // Instantiate the group values to those of the first call in the cursor.
+        String groupNumber = cursor.getString(CallLogQuery.NUMBER);
+        String groupPostDialDigits = PhoneNumberDisplayUtil.canShowPostDial()
+                ? cursor.getString(CallLogQuery.POST_DIAL_DIGITS) : "";
+        int groupCallType = cursor.getInt(CallLogQuery.CALL_TYPE);
+        String groupAccountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
+        String groupAccountId = cursor.getString(CallLogQuery.ACCOUNT_ID);
+        int groupSize = 1;
+
+        String number;
+        String numberPostDialDigits;
+        int callType;
+        String accountComponentName;
+        String accountId;
+
+        while (cursor.moveToNext()) {
+            // Obtain the values for the current call to group.
+            number = cursor.getString(CallLogQuery.NUMBER);
+            numberPostDialDigits = PhoneNumberDisplayUtil.canShowPostDial()
+                    ? cursor.getString(CallLogQuery.POST_DIAL_DIGITS) : "";
+            callType = cursor.getInt(CallLogQuery.CALL_TYPE);
+            accountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
+            accountId = cursor.getString(CallLogQuery.ACCOUNT_ID);
+
+            final boolean isSameNumber = equalNumbers(groupNumber, number);
+            final boolean isSamePostDialDigits = groupPostDialDigits.equals(numberPostDialDigits);
+            final boolean isSameAccount = isSameAccount(
+                    groupAccountComponentName, accountComponentName, groupAccountId, accountId);
+
+            // Group with the same number and account. Never group voicemails. Only group blocked
+            // calls with other blocked calls.
+            if (isSameNumber && isSameAccount && isSamePostDialDigits
+                    && areBothNotVoicemail(callType, groupCallType)
+                    && (areBothNotBlocked(callType, groupCallType)
+                            || areBothBlocked(callType, groupCallType))) {
+                // Increment the size of the group to include the current call, but do not create
+                // the group until finding a call that does not match.
+                groupSize++;
+            } else {
+                // The call group has changed. Determine the day group for the new call group.
+                final long date = cursor.getLong(CallLogQuery.DATE);
+                groupDayGroup = getDayGroup(date, currentTime);
+
+                // Create a group for the previous group of calls, which does not include the
+                // current call.
+                mGroupCreator.addGroup(cursor.getPosition() - groupSize, groupSize);
+
+                // Start a new group; it will include at least the current call.
+                groupSize = 1;
+
+                // Update the group values to those of the current call.
+                groupNumber = number;
+                groupPostDialDigits = numberPostDialDigits;
+                groupCallType = callType;
+                groupAccountComponentName = accountComponentName;
+                groupAccountId = accountId;
+            }
+
+            // Save the day group associated with the current call.
+            final long currentCallId = cursor.getLong(CallLogQuery.ID);
+            mGroupCreator.setDayGroup(currentCallId, groupDayGroup);
+        }
+
+        // Create a group for the last set of calls.
+        mGroupCreator.addGroup(count - groupSize, groupSize);
+    }
+
+    @VisibleForTesting
+    boolean equalNumbers(String number1, String number2) {
+        if (PhoneNumberHelper.isUriNumber(number1) || PhoneNumberHelper.isUriNumber(number2)) {
+            return compareSipAddresses(number1, number2);
+        } else {
+            return PhoneNumberUtils.compare(number1, number2);
+        }
+    }
+
+    private boolean isSameAccount(String name1, String name2, String id1, String id2) {
+        return TextUtils.equals(name1, name2) && TextUtils.equals(id1, id2);
+    }
+
+    @VisibleForTesting
+    boolean compareSipAddresses(String number1, String number2) {
+        if (number1 == null || number2 == null) return number1 == number2;
+
+        int index1 = number1.indexOf('@');
+        final String userinfo1;
+        final String rest1;
+        if (index1 != -1) {
+            userinfo1 = number1.substring(0, index1);
+            rest1 = number1.substring(index1);
+        } else {
+            userinfo1 = number1;
+            rest1 = "";
+        }
+
+        int index2 = number2.indexOf('@');
+        final String userinfo2;
+        final String rest2;
+        if (index2 != -1) {
+            userinfo2 = number2.substring(0, index2);
+            rest2 = number2.substring(index2);
+        } else {
+            userinfo2 = number2;
+            rest2 = "";
+        }
+
+        return userinfo1.equals(userinfo2) && rest1.equalsIgnoreCase(rest2);
+    }
+
+    /**
+     * Given a call date and the current date, determine which date group the call belongs in.
+     *
+     * @param date The call date.
+     * @param now The current date.
+     * @return The date group the call belongs in.
+     */
+    private int getDayGroup(long date, long now) {
+        int days = DateUtils.getDayDifference(TIME, date, now);
+
+        if (days == 0) {
+            return DAY_GROUP_TODAY;
+        } else if (days == 1) {
+            return DAY_GROUP_YESTERDAY;
+        } else {
+            return DAY_GROUP_OTHER;
+        }
+    }
+
+    private boolean areBothNotVoicemail(int callType, int groupCallType) {
+        return callType != AppCompatConstants.CALLS_VOICEMAIL_TYPE
+                && groupCallType != AppCompatConstants.CALLS_VOICEMAIL_TYPE;
+    }
+
+    private boolean areBothNotBlocked(int callType, int groupCallType) {
+        return callType != AppCompatConstants.CALLS_BLOCKED_TYPE
+                && groupCallType != AppCompatConstants.CALLS_BLOCKED_TYPE;
+    }
+
+    private boolean areBothBlocked(int callType, int groupCallType) {
+        return callType == AppCompatConstants.CALLS_BLOCKED_TYPE
+                && groupCallType == AppCompatConstants.CALLS_BLOCKED_TYPE;
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogListItemHelper.java b/src/com/android/dialer/calllog/CallLogListItemHelper.java
new file mode 100644
index 0000000..5d2bc85
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogListItemHelper.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.res.Resources;
+import android.provider.CallLog.Calls;
+import android.text.SpannableStringBuilder;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.util.AppCompatConstants;
+import com.android.dialer.R;
+import com.android.dialer.calllog.calllogcache.CallLogCache;
+
+/**
+ * Helper class to fill in the views of a call log entry.
+ */
+/* package */class CallLogListItemHelper {
+    private static final String TAG = "CallLogListItemHelper";
+
+    /** Helper for populating the details of a phone call. */
+    private final PhoneCallDetailsHelper mPhoneCallDetailsHelper;
+    /** Resources to look up strings. */
+    private final Resources mResources;
+    private final CallLogCache mCallLogCache;
+
+    /**
+     * Creates a new helper instance.
+     *
+     * @param phoneCallDetailsHelper used to set the details of a phone call
+     * @param resources The object from which resources can be retrieved
+     * @param callLogCache A cache for values retrieved from telecom/telephony
+     */
+    public CallLogListItemHelper(
+            PhoneCallDetailsHelper phoneCallDetailsHelper,
+            Resources resources,
+            CallLogCache callLogCache) {
+        mPhoneCallDetailsHelper = phoneCallDetailsHelper;
+        mResources = resources;
+        mCallLogCache = callLogCache;
+    }
+
+    /**
+     * Sets the name, label, and number for a contact.
+     *
+     * @param views the views to populate
+     * @param details the details of a phone call needed to fill in the data
+     */
+    public void setPhoneCallDetails(
+            CallLogListItemViewHolder views,
+            PhoneCallDetails details) {
+        mPhoneCallDetailsHelper.setPhoneCallDetails(views.phoneCallDetailsViews, details);
+
+        // Set the accessibility text for the contact badge
+        views.quickContactView.setContentDescription(getContactBadgeDescription(details));
+
+        // Set the primary action accessibility description
+        views.primaryActionView.setContentDescription(getCallDescription(details));
+
+        // Cache name or number of caller.  Used when setting the content descriptions of buttons
+        // when the actions ViewStub is inflated.
+        views.nameOrNumber = getNameOrNumber(details);
+
+        // The call type or Location associated with the call. Use when setting text for a
+        // voicemail log's call button
+        views.callTypeOrLocation = mPhoneCallDetailsHelper.getCallTypeOrLocation(details);
+
+        // Cache country iso. Used for number filtering.
+        views.countryIso = details.countryIso;
+    }
+
+    /**
+     * Sets the accessibility descriptions for the action buttons in the action button ViewStub.
+     *
+     * @param views The views associated with the current call log entry.
+     */
+    public void setActionContentDescriptions(CallLogListItemViewHolder views) {
+        if (views.nameOrNumber == null) {
+            Log.e(TAG, "setActionContentDescriptions; name or number is null.");
+        }
+
+        // Calling expandTemplate with a null parameter will cause a NullPointerException.
+        // Although we don't expect a null name or number, it is best to protect against it.
+        CharSequence nameOrNumber = views.nameOrNumber == null ? "" : views.nameOrNumber;
+
+        views.videoCallButtonView.setContentDescription(
+                TextUtils.expandTemplate(
+                        mResources.getString(R.string.description_video_call_action),
+                        nameOrNumber));
+
+        views.createNewContactButtonView.setContentDescription(
+                TextUtils.expandTemplate(
+                        mResources.getString(R.string.description_create_new_contact_action),
+                        nameOrNumber));
+
+        views.addToExistingContactButtonView.setContentDescription(
+                TextUtils.expandTemplate(
+                        mResources.getString(R.string.description_add_to_existing_contact_action),
+                        nameOrNumber));
+
+        views.detailsButtonView.setContentDescription(
+                TextUtils.expandTemplate(
+                        mResources.getString(R.string.description_details_action), nameOrNumber));
+    }
+
+    /**
+     * Returns the accessibility description for the contact badge for a call log entry.
+     *
+     * @param details Details of call.
+     * @return Accessibility description.
+     */
+    private CharSequence getContactBadgeDescription(PhoneCallDetails details) {
+        return mResources.getString(R.string.description_contact_details, getNameOrNumber(details));
+    }
+
+    /**
+     * Returns the accessibility description of the "return call/call" action for a call log
+     * entry.
+     * Accessibility text is a combination of:
+     * {Voicemail Prefix}. {Number of Calls}. {Caller information} {Phone Account}.
+     * If most recent call is a voicemail, {Voicemail Prefix} is "New Voicemail.", otherwise "".
+     *
+     * If more than one call for the caller, {Number of Calls} is:
+     * "{number of calls} calls.", otherwise "".
+     *
+     * The {Caller Information} references the most recent call associated with the caller.
+     * For incoming calls:
+     * If missed call:  Missed call from {Name/Number} {Call Type} {Call Time}.
+     * If answered call: Answered call from {Name/Number} {Call Type} {Call Time}.
+     *
+     * For outgoing calls:
+     * If outgoing:  Call to {Name/Number] {Call Type} {Call Time}.
+     *
+     * Where:
+     * {Name/Number} is the name or number of the caller (as shown in call log).
+     * {Call type} is the contact phone number type (eg mobile) or location.
+     * {Call Time} is the time since the last call for the contact occurred.
+     *
+     * The {Phone Account} refers to the account/SIM through which the call was placed or received
+     * in multi-SIM devices.
+     *
+     * Examples:
+     * 3 calls.  New Voicemail.  Missed call from Joe Smith mobile 2 hours ago on SIM 1.
+     *
+     * 2 calls.  Answered call from John Doe mobile 1 hour ago.
+     *
+     * @param context The application context.
+     * @param details Details of call.
+     * @return Return call action description.
+     */
+    public CharSequence getCallDescription(PhoneCallDetails details) {
+        int lastCallType = getLastCallType(details.callTypes);
+
+        // Get the name or number of the caller.
+        final CharSequence nameOrNumber = getNameOrNumber(details);
+
+        // Get the call type or location of the caller; null if not applicable
+        final CharSequence typeOrLocation = mPhoneCallDetailsHelper.getCallTypeOrLocation(details);
+
+        // Get the time/date of the call
+        final CharSequence timeOfCall = mPhoneCallDetailsHelper.getCallDate(details);
+
+        SpannableStringBuilder callDescription = new SpannableStringBuilder();
+
+        // Add number of calls if more than one.
+        if (details.callTypes.length > 1) {
+            callDescription.append(mResources.getString(R.string.description_num_calls,
+                    details.callTypes.length));
+        }
+
+        // If call had video capabilities, add the "Video Call" string.
+        if ((details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO) {
+            callDescription.append(mResources.getString(R.string.description_video_call));
+        }
+
+        int stringID = getCallDescriptionStringID(details.callTypes, details.isRead);
+        String accountLabel = mCallLogCache.getAccountLabel(details.accountHandle);
+
+        // Use chosen string resource to build up the message.
+        CharSequence onAccountLabel = accountLabel == null
+                ? ""
+                : TextUtils.expandTemplate(
+                        mResources.getString(R.string.description_phone_account),
+                        accountLabel);
+        callDescription.append(
+                TextUtils.expandTemplate(
+                        mResources.getString(stringID),
+                        nameOrNumber,
+                        // If no type or location can be determined, sub in empty string.
+                        typeOrLocation == null ? "" : typeOrLocation,
+                        timeOfCall,
+                        onAccountLabel));
+
+        return callDescription;
+    }
+
+    /**
+     * Determine the appropriate string ID to describe a call for accessibility purposes.
+     *
+     * @param callTypes The type of call corresponding to this entry or multiple if this entry
+     * represents multiple calls grouped together.
+     * @param isRead If the entry is a voicemail, {@code true} if the voicemail is read.
+     * @return String resource ID to use.
+     */
+    public int getCallDescriptionStringID(int[] callTypes, boolean isRead) {
+        int lastCallType = getLastCallType(callTypes);
+        int stringID;
+
+        if (lastCallType == AppCompatConstants.CALLS_MISSED_TYPE) {
+            //Message: Missed call from <NameOrNumber>, <TypeOrLocation>, <TimeOfCall>,
+            //<PhoneAccount>.
+            stringID = R.string.description_incoming_missed_call;
+        } else if (lastCallType == AppCompatConstants.CALLS_INCOMING_TYPE) {
+            //Message: Answered call from <NameOrNumber>, <TypeOrLocation>, <TimeOfCall>,
+            //<PhoneAccount>.
+            stringID = R.string.description_incoming_answered_call;
+        } else if (lastCallType == AppCompatConstants.CALLS_VOICEMAIL_TYPE) {
+            //Message: (Unread) [V/v]oicemail from <NameOrNumber>, <TypeOrLocation>, <TimeOfCall>,
+            //<PhoneAccount>.
+            stringID = isRead ? R.string.description_read_voicemail
+                : R.string.description_unread_voicemail;
+        } else {
+            //Message: Call to <NameOrNumber>, <TypeOrLocation>, <TimeOfCall>, <PhoneAccount>.
+            stringID = R.string.description_outgoing_call;
+        }
+        return stringID;
+    }
+
+    /**
+     * Determine the call type for the most recent call.
+     * @param callTypes Call types to check.
+     * @return Call type.
+     */
+    private int getLastCallType(int[] callTypes) {
+        if (callTypes.length > 0) {
+            return callTypes[0];
+        } else {
+            return Calls.MISSED_TYPE;
+        }
+    }
+
+    /**
+     * Return the name or number of the caller specified by the details.
+     * @param details Call details
+     * @return the name (if known) of the caller, otherwise the formatted number.
+     */
+    private CharSequence getNameOrNumber(PhoneCallDetails details) {
+        final CharSequence recipient;
+        if (!TextUtils.isEmpty(details.getPreferredName())) {
+            recipient = details.getPreferredName();
+        } else {
+            recipient = details.displayNumber + details.postDialDigits;
+        }
+        return recipient;
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
new file mode 100644
index 0000000..f76312d
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -0,0 +1,690 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.net.Uri;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v7.widget.CardView;
+import android.support.v7.widget.RecyclerView;
+import android.telecom.PhoneAccountHandle;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
+import android.text.TextUtils;
+import android.view.ContextMenu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewStub;
+import android.widget.ImageView;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ClipboardUtils;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.PhoneNumberUtilsCompat;
+import com.android.contacts.common.dialog.CallSubjectDialog;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.contacts.common.util.UriUtils;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.R;
+import com.android.dialer.calllog.calllogcache.CallLogCache;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.filterednumber.BlockNumberDialogFragment;
+import com.android.dialer.filterednumber.FilteredNumbersUtil;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.ScreenEvent;
+import com.android.dialer.service.SpamButtonRenderer;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.PhoneNumberUtil;
+import com.android.dialer.voicemail.VoicemailPlaybackLayout;
+import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
+import com.android.dialerbind.ObjectFactory;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This is an object containing references to views contained by the call log list item. This
+ * improves performance by reducing the frequency with which we need to find views by IDs.
+ *
+ * This object also contains UI logic pertaining to the view, to isolate it from the CallLogAdapter.
+ */
+public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
+        implements View.OnClickListener, MenuItem.OnMenuItemClickListener,
+                View.OnCreateContextMenuListener {
+
+    /** The root view of the call log list item */
+    public final View rootView;
+    /** The quick contact badge for the contact. */
+    public final QuickContactBadge quickContactView;
+    /** The primary action view of the entry. */
+    public final View primaryActionView;
+    /** The details of the phone call. */
+    public final PhoneCallDetailsViews phoneCallDetailsViews;
+    /** The text of the header for a day grouping. */
+    public final TextView dayGroupHeader;
+    /** The view containing the details for the call log row, including the action buttons. */
+    public final CardView callLogEntryView;
+    /** The actionable view which places a call to the number corresponding to the call log row. */
+    public final ImageView primaryActionButtonView;
+
+    /** The view containing call log item actions.  Null until the ViewStub is inflated. */
+    public View actionsView;
+    /** The button views below are assigned only when the action section is expanded. */
+    public VoicemailPlaybackLayout voicemailPlaybackView;
+    public View callButtonView;
+    public View videoCallButtonView;
+    public View createNewContactButtonView;
+    public View addToExistingContactButtonView;
+    public View sendMessageView;
+    public View detailsButtonView;
+    public View callWithNoteButtonView;
+    public ImageView workIconView;
+
+    /**
+     * The row Id for the first call associated with the call log entry.  Used as a key for the
+     * map used to track which call log entries have the action button section expanded.
+     */
+    public long rowId;
+
+    /**
+     * The call Ids for the calls represented by the current call log entry.  Used when the user
+     * deletes a call log entry.
+     */
+    public long[] callIds;
+
+    /**
+     * The callable phone number for the current call log entry.  Cached here as the call back
+     * intent is set only when the actions ViewStub is inflated.
+     */
+    public String number;
+
+    /**
+     * The post-dial numbers that are dialed following the phone number.
+     */
+    public String postDialDigits;
+
+    /**
+     * The formatted phone number to display.
+     */
+    public String displayNumber;
+
+    /**
+     * The phone number presentation for the current call log entry.  Cached here as the call back
+     * intent is set only when the actions ViewStub is inflated.
+     */
+    public int numberPresentation;
+
+    /**
+     * The type of the phone number (e.g. main, work, etc).
+     */
+    public String numberType;
+
+    /**
+     * The country iso for the call. Cached here as the call back
+     * intent is set only when the actions ViewStub is inflated.
+     */
+    public String countryIso;
+
+    /**
+     * The type of call for the current call log entry.  Cached here as the call back
+     * intent is set only when the actions ViewStub is inflated.
+     */
+    public int callType;
+
+    /**
+     * ID for blocked numbers database.
+     * Set when context menu is created, if the number is blocked.
+     */
+    public Integer blockId;
+
+    /**
+     * The account for the current call log entry.  Cached here as the call back
+     * intent is set only when the actions ViewStub is inflated.
+     */
+    public PhoneAccountHandle accountHandle;
+
+    /**
+     * If the call has an associated voicemail message, the URI of the voicemail message for
+     * playback.  Cached here as the voicemail intent is only set when the actions ViewStub is
+     * inflated.
+     */
+    public String voicemailUri;
+
+    /**
+     * The name or number associated with the call.  Cached here for use when setting content
+     * descriptions on buttons in the actions ViewStub when it is inflated.
+     */
+    public CharSequence nameOrNumber;
+
+    /**
+     * The call type or Location associated with the call. Cached here for use when setting text
+     * for a voicemail log's call button
+     */
+    public CharSequence callTypeOrLocation;
+
+    /**
+     * Whether this row is for a business or not.
+     */
+    public boolean isBusiness;
+
+    /**
+     * The contact info for the contact displayed in this list item.
+     */
+    public ContactInfo info;
+
+    private final Context mContext;
+    private final CallLogCache mCallLogCache;
+    private final CallLogListItemHelper mCallLogListItemHelper;
+    private final VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
+    private final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
+    private final BlockNumberDialogFragment.Callback mFilteredNumberDialogCallback;
+
+    private final int mPhotoSize;
+
+    private ViewStub mSpamViewStub;
+    private SpamButtonRenderer mSpamButtonRenderer;
+
+    private View.OnClickListener mExpandCollapseListener;
+    private boolean mVoicemailPrimaryActionButtonClicked;
+
+    private CallLogListItemViewHolder(
+            Context context,
+            View.OnClickListener expandCollapseListener,
+            CallLogCache callLogCache,
+            CallLogListItemHelper callLogListItemHelper,
+            VoicemailPlaybackPresenter voicemailPlaybackPresenter,
+            FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler,
+            BlockNumberDialogFragment.Callback filteredNumberDialogCallback,
+            View rootView,
+            QuickContactBadge quickContactView,
+            View primaryActionView,
+            PhoneCallDetailsViews phoneCallDetailsViews,
+            CardView callLogEntryView,
+            TextView dayGroupHeader,
+            ImageView primaryActionButtonView) {
+        super(rootView);
+
+        mContext = context;
+        mExpandCollapseListener = expandCollapseListener;
+        mCallLogCache = callLogCache;
+        mCallLogListItemHelper = callLogListItemHelper;
+        mVoicemailPlaybackPresenter = voicemailPlaybackPresenter;
+        mFilteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler;
+        mFilteredNumberDialogCallback = filteredNumberDialogCallback;
+
+        this.rootView = rootView;
+        this.quickContactView = quickContactView;
+        this.primaryActionView = primaryActionView;
+        this.phoneCallDetailsViews = phoneCallDetailsViews;
+        this.callLogEntryView = callLogEntryView;
+        this.dayGroupHeader = dayGroupHeader;
+        this.primaryActionButtonView = primaryActionButtonView;
+        this.workIconView = (ImageView) rootView.findViewById(R.id.work_profile_icon);
+
+        Resources resources = mContext.getResources();
+        mPhotoSize = mContext.getResources().getDimensionPixelSize(R.dimen.contact_photo_size);
+
+        // Set text height to false on the TextViews so they don't have extra padding.
+        phoneCallDetailsViews.nameView.setElegantTextHeight(false);
+        phoneCallDetailsViews.callLocationAndDate.setElegantTextHeight(false);
+
+        quickContactView.setOverlay(null);
+        if (CompatUtils.hasPrioritizedMimeType()) {
+            quickContactView.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
+        }
+        primaryActionButtonView.setOnClickListener(this);
+        primaryActionView.setOnClickListener(mExpandCollapseListener);
+        primaryActionView.setOnCreateContextMenuListener(this);
+    }
+
+    public static CallLogListItemViewHolder create(
+            View view,
+            Context context,
+            View.OnClickListener expandCollapseListener,
+            CallLogCache callLogCache,
+            CallLogListItemHelper callLogListItemHelper,
+            VoicemailPlaybackPresenter voicemailPlaybackPresenter,
+            FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler,
+            BlockNumberDialogFragment.Callback filteredNumberDialogCallback) {
+
+        return new CallLogListItemViewHolder(
+                context,
+                expandCollapseListener,
+                callLogCache,
+                callLogListItemHelper,
+                voicemailPlaybackPresenter,
+                filteredNumberAsyncQueryHandler,
+                filteredNumberDialogCallback,
+                view,
+                (QuickContactBadge) view.findViewById(R.id.quick_contact_photo),
+                view.findViewById(R.id.primary_action_view),
+                PhoneCallDetailsViews.fromView(view),
+                (CardView) view.findViewById(R.id.call_log_row),
+                (TextView) view.findViewById(R.id.call_log_day_group_label),
+                (ImageView) view.findViewById(R.id.primary_action_button));
+    }
+
+    @Override
+    public void onCreateContextMenu(
+            final ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
+        if (TextUtils.isEmpty(number)) {
+            return;
+        }
+
+        if (callType == CallLog.Calls.VOICEMAIL_TYPE) {
+            menu.setHeaderTitle(mContext.getResources().getText(R.string.voicemail));
+        } else {
+            menu.setHeaderTitle(PhoneNumberUtilsCompat.createTtsSpannable(
+                    BidiFormatter.getInstance().unicodeWrap(number, TextDirectionHeuristics.LTR)));
+        }
+
+        menu.add(ContextMenu.NONE, R.id.context_menu_copy_to_clipboard, ContextMenu.NONE,
+                R.string.action_copy_number_text)
+                .setOnMenuItemClickListener(this);
+
+        // The edit number before call does not show up if any of the conditions apply:
+        // 1) Number cannot be called
+        // 2) Number is the voicemail number
+        // 3) Number is a SIP address
+
+        if (PhoneNumberUtil.canPlaceCallsTo(number, numberPresentation)
+                && !mCallLogCache.isVoicemailNumber(accountHandle, number)
+                && !PhoneNumberUtil.isSipNumber(number)) {
+            menu.add(ContextMenu.NONE, R.id.context_menu_edit_before_call, ContextMenu.NONE,
+                    R.string.action_edit_number_before_call)
+                    .setOnMenuItemClickListener(this);
+        }
+
+        if (callType == CallLog.Calls.VOICEMAIL_TYPE
+                && phoneCallDetailsViews.voicemailTranscriptionView.length() > 0) {
+            menu.add(ContextMenu.NONE, R.id.context_menu_copy_transcript_to_clipboard,
+                    ContextMenu.NONE, R.string.copy_transcript_text)
+                    .setOnMenuItemClickListener(this);
+        }
+
+        if (FilteredNumbersUtil.canBlockNumber(mContext, number, countryIso)) {
+            mFilteredNumberAsyncQueryHandler.isBlockedNumber(
+                    new FilteredNumberAsyncQueryHandler.OnCheckBlockedListener() {
+                        @Override
+                        public void onCheckComplete(Integer id) {
+                            blockId = id;
+                            int blockTitleId = blockId == null ? R.string.action_block_number
+                                    : R.string.action_unblock_number;
+                            final MenuItem blockItem = menu.add(
+                                    ContextMenu.NONE,
+                                    R.id.context_menu_block_number,
+                                    ContextMenu.NONE,
+                                    blockTitleId);
+                            blockItem.setOnMenuItemClickListener(
+                                    CallLogListItemViewHolder.this);
+                        }
+                    }, number, countryIso);
+        }
+
+        Logger.logScreenView(ScreenEvent.CALL_LOG_CONTEXT_MENU, (Activity) mContext);
+    }
+
+    @Override
+    public boolean onMenuItemClick(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.context_menu_block_number:
+                BlockNumberDialogFragment.show(
+                        blockId,
+                        number,
+                        countryIso,
+                        displayNumber,
+                        R.id.floating_action_button_container,
+                        ((Activity) mContext).getFragmentManager(),
+                        mFilteredNumberDialogCallback);
+                return true;
+            case R.id.context_menu_copy_to_clipboard:
+                ClipboardUtils.copyText(mContext, null, number, true);
+                return true;
+            case R.id.context_menu_copy_transcript_to_clipboard:
+                ClipboardUtils.copyText(mContext, null,
+                        phoneCallDetailsViews.voicemailTranscriptionView.getText(), true);
+                return true;
+            case R.id.context_menu_edit_before_call:
+                final Intent intent = new Intent(
+                        Intent.ACTION_DIAL, CallUtil.getCallUri(number));
+                intent.setClass(mContext, DialtactsActivity.class);
+                DialerUtils.startActivityWithErrorToast(mContext, intent);
+                return true;
+        }
+        return false;
+    }
+
+    /**
+     * Configures the action buttons in the expandable actions ViewStub. The ViewStub is not
+     * inflated during initial binding, so click handlers, tags and accessibility text must be set
+     * here, if necessary.
+     */
+    public void inflateActionViewStub() {
+        ViewStub stub = (ViewStub) rootView.findViewById(R.id.call_log_entry_actions_stub);
+        if (stub != null) {
+            actionsView = stub.inflate();
+
+            voicemailPlaybackView = (VoicemailPlaybackLayout) actionsView
+                    .findViewById(R.id.voicemail_playback_layout);
+
+            callButtonView = actionsView.findViewById(R.id.call_action);
+            callButtonView.setOnClickListener(this);
+
+            videoCallButtonView = actionsView.findViewById(R.id.video_call_action);
+            videoCallButtonView.setOnClickListener(this);
+
+            createNewContactButtonView = actionsView.findViewById(R.id.create_new_contact_action);
+            createNewContactButtonView.setOnClickListener(this);
+
+            addToExistingContactButtonView =
+                    actionsView.findViewById(R.id.add_to_existing_contact_action);
+            addToExistingContactButtonView.setOnClickListener(this);
+
+            sendMessageView = actionsView.findViewById(R.id.send_message_action);
+            sendMessageView.setOnClickListener(this);
+
+            detailsButtonView = actionsView.findViewById(R.id.details_action);
+            detailsButtonView.setOnClickListener(this);
+
+            callWithNoteButtonView = actionsView.findViewById(R.id.call_with_note_action);
+            callWithNoteButtonView.setOnClickListener(this);
+
+            mSpamViewStub = (ViewStub) actionsView.findViewById(R.id.spam_actions_container);
+            mSpamButtonRenderer = ObjectFactory.newSpamButtonRenderer(mContext, mSpamViewStub);
+        }
+
+        bindActionButtons();
+    }
+
+    private void updatePrimaryActionButton(boolean isExpanded) {
+        if (!TextUtils.isEmpty(voicemailUri)) {
+            // Treat as voicemail list item; show play button if not expanded.
+            if (!isExpanded) {
+                primaryActionButtonView.setImageResource(R.drawable.ic_play_arrow_24dp);
+                primaryActionButtonView.setContentDescription(TextUtils.expandTemplate(
+                        mContext.getString(R.string.description_voicemail_action),
+                        nameOrNumber));
+                primaryActionButtonView.setVisibility(View.VISIBLE);
+            } else {
+                primaryActionButtonView.setVisibility(View.GONE);
+            }
+        } else {
+            // Treat as normal list item; show call button, if possible.
+            if (PhoneNumberUtil.canPlaceCallsTo(number, numberPresentation)) {
+                boolean isVoicemailNumber =
+                        mCallLogCache.isVoicemailNumber(accountHandle, number);
+                if (isVoicemailNumber) {
+                    // Call to generic voicemail number, in case there are multiple accounts.
+                    primaryActionButtonView.setTag(
+                            IntentProvider.getReturnVoicemailCallIntentProvider());
+                } else {
+                    primaryActionButtonView.setTag(
+                            IntentProvider.getReturnCallIntentProvider(number + postDialDigits));
+                }
+
+                primaryActionButtonView.setContentDescription(TextUtils.expandTemplate(
+                        mContext.getString(R.string.description_call_action),
+                        nameOrNumber));
+                primaryActionButtonView.setImageResource(R.drawable.ic_call_24dp);
+                primaryActionButtonView.setVisibility(View.VISIBLE);
+            } else {
+                primaryActionButtonView.setTag(null);
+                primaryActionButtonView.setVisibility(View.GONE);
+            }
+        }
+    }
+
+    /**
+     * Binds text titles, click handlers and intents to the voicemail, details and callback action
+     * buttons.
+     */
+    private void bindActionButtons() {
+        boolean canPlaceCallToNumber = PhoneNumberUtil.canPlaceCallsTo(number, numberPresentation);
+
+        if (!TextUtils.isEmpty(voicemailUri) && canPlaceCallToNumber) {
+            callButtonView.setTag(IntentProvider.getReturnCallIntentProvider(number));
+            ((TextView) callButtonView.findViewById(R.id.call_action_text))
+                    .setText(TextUtils.expandTemplate(
+                            mContext.getString(R.string.call_log_action_call),
+                            nameOrNumber));
+            TextView callTypeOrLocationView = ((TextView) callButtonView.findViewById(
+                    R.id.call_type_or_location_text));
+            if (callType == Calls.VOICEMAIL_TYPE && !TextUtils.isEmpty(callTypeOrLocation)) {
+                callTypeOrLocationView.setText(callTypeOrLocation);
+                callTypeOrLocationView.setVisibility(View.VISIBLE);
+            } else {
+                callTypeOrLocationView.setVisibility(View.GONE);
+            }
+            callButtonView.setVisibility(View.VISIBLE);
+        } else {
+            callButtonView.setVisibility(View.GONE);
+        }
+
+        // If one of the calls had video capabilities, show the video call button.
+        if (mCallLogCache.isVideoEnabled() && canPlaceCallToNumber &&
+                phoneCallDetailsViews.callTypeIcons.isVideoShown()) {
+            videoCallButtonView.setTag(IntentProvider.getReturnVideoCallIntentProvider(number));
+            videoCallButtonView.setVisibility(View.VISIBLE);
+        } else {
+            videoCallButtonView.setVisibility(View.GONE);
+        }
+
+        // For voicemail calls, show the voicemail playback layout; hide otherwise.
+        if (callType == Calls.VOICEMAIL_TYPE && mVoicemailPlaybackPresenter != null
+                && !TextUtils.isEmpty(voicemailUri)) {
+            voicemailPlaybackView.setVisibility(View.VISIBLE);
+
+            Uri uri = Uri.parse(voicemailUri);
+            mVoicemailPlaybackPresenter.setPlaybackView(
+                    voicemailPlaybackView, uri, mVoicemailPrimaryActionButtonClicked);
+            mVoicemailPrimaryActionButtonClicked = false;
+
+            CallLogAsyncTaskUtil.markVoicemailAsRead(mContext, uri);
+        } else {
+            voicemailPlaybackView.setVisibility(View.GONE);
+        }
+
+        if (callType == Calls.VOICEMAIL_TYPE) {
+            detailsButtonView.setVisibility(View.GONE);
+        } else {
+            detailsButtonView.setVisibility(View.VISIBLE);
+            detailsButtonView.setTag(
+                    IntentProvider.getCallDetailIntentProvider(rowId, callIds, null));
+        }
+
+        if (info != null && UriUtils.isEncodedContactUri(info.lookupUri)) {
+            createNewContactButtonView.setTag(IntentProvider.getAddContactIntentProvider(
+                    info.lookupUri, info.name, info.number, info.type, true /* isNewContact */));
+            createNewContactButtonView.setVisibility(View.VISIBLE);
+
+            addToExistingContactButtonView.setTag(IntentProvider.getAddContactIntentProvider(
+                    info.lookupUri, info.name, info.number, info.type, false /* isNewContact */));
+            addToExistingContactButtonView.setVisibility(View.VISIBLE);
+        } else {
+            createNewContactButtonView.setVisibility(View.GONE);
+            addToExistingContactButtonView.setVisibility(View.GONE);
+        }
+
+        if (canPlaceCallToNumber) {
+            sendMessageView.setTag(IntentProvider.getSendSmsIntentProvider(number));
+            sendMessageView.setVisibility(View.VISIBLE);
+        } else {
+            sendMessageView.setVisibility(View.GONE);
+        }
+
+        mCallLogListItemHelper.setActionContentDescriptions(this);
+
+        boolean supportsCallSubject =
+                mCallLogCache.doesAccountSupportCallSubject(accountHandle);
+        boolean isVoicemailNumber =
+                mCallLogCache.isVoicemailNumber(accountHandle, number);
+        callWithNoteButtonView.setVisibility(
+                supportsCallSubject && !isVoicemailNumber ? View.VISIBLE : View.GONE);
+
+        if(mSpamButtonRenderer != null){
+            List<View> completeLogListItems = Lists.newArrayList(
+                    createNewContactButtonView,
+                    addToExistingContactButtonView,
+                    sendMessageView,
+                    callButtonView,
+                    callWithNoteButtonView,
+                    detailsButtonView,
+                    voicemailPlaybackView);
+            List<View> blockedNumberVisibleViews = new ArrayList<>();
+            List<View> spamNumberVisibleViews = Lists.newArrayList(detailsButtonView);
+
+            mSpamButtonRenderer.setCompleteListItemViews(completeLogListItems);
+            mSpamButtonRenderer.setFilteredNumberViews(blockedNumberVisibleViews);
+            mSpamButtonRenderer.setSpamFilteredViews(spamNumberVisibleViews);
+            mSpamButtonRenderer.render(number, countryIso);
+        }
+    }
+
+    /**
+     * Show or hide the action views, such as voicemail, details, and add contact.
+     *
+     * If the action views have never been shown yet for this view, inflate the view stub.
+     */
+    public void showActions(boolean show) {
+        showOrHideVoicemailTranscriptionView(show);
+
+        if (show) {
+            // Inflate the view stub if necessary, and wire up the event handlers.
+            inflateActionViewStub();
+
+            actionsView.setVisibility(View.VISIBLE);
+            actionsView.setAlpha(1.0f);
+        } else {
+            // When recycling a view, it is possible the actionsView ViewStub was previously
+            // inflated so we should hide it in this case.
+            if (actionsView != null) {
+                actionsView.setVisibility(View.GONE);
+            }
+        }
+
+        updatePrimaryActionButton(show);
+    }
+
+    public void showOrHideVoicemailTranscriptionView(boolean isExpanded) {
+        if (callType != Calls.VOICEMAIL_TYPE) {
+            return;
+        }
+
+        final TextView view = phoneCallDetailsViews.voicemailTranscriptionView;
+        if (!isExpanded || TextUtils.isEmpty(view.getText())) {
+            view.setVisibility(View.GONE);
+            return;
+        }
+        view.setVisibility(View.VISIBLE);
+    }
+
+    public void updatePhoto() {
+        quickContactView.assignContactUri(info.lookupUri);
+
+        final boolean isVoicemail = mCallLogCache.isVoicemailNumber(accountHandle, number);
+        int contactType = ContactPhotoManager.TYPE_DEFAULT;
+        if (isVoicemail) {
+            contactType = ContactPhotoManager.TYPE_VOICEMAIL;
+        } else if (isBusiness) {
+            contactType = ContactPhotoManager.TYPE_BUSINESS;
+        }
+
+        final String lookupKey = info.lookupUri != null
+                ? UriUtils.getLookupKeyFromUri(info.lookupUri) : null;
+        final String displayName = TextUtils.isEmpty(info.name) ? displayNumber : info.name;
+        final DefaultImageRequest request = new DefaultImageRequest(
+                displayName, lookupKey, contactType, true /* isCircular */);
+
+        if (info.photoId == 0 && info.photoUri != null) {
+            ContactPhotoManager.getInstance(mContext).loadPhoto(quickContactView, info.photoUri,
+                    mPhotoSize, false /* darkTheme */, true /* isCircular */, request);
+        } else {
+            ContactPhotoManager.getInstance(mContext).loadThumbnail(quickContactView, info.photoId,
+                    false /* darkTheme */, true /* isCircular */, request);
+        }
+    }
+
+    @Override
+    public void onClick(View view) {
+        if (view.getId() == R.id.primary_action_button && !TextUtils.isEmpty(voicemailUri)) {
+            mVoicemailPrimaryActionButtonClicked = true;
+            mExpandCollapseListener.onClick(primaryActionView);
+        } else if (view.getId() == R.id.call_with_note_action) {
+            CallSubjectDialog.start(
+                    (Activity) mContext,
+                    info.photoId,
+                    info.photoUri,
+                    info.lookupUri,
+                    (String) nameOrNumber /* top line of contact view in call subject dialog */,
+                    isBusiness,
+                    number,
+                    TextUtils.isEmpty(info.name) ? null : displayNumber, /* second line of contact
+                                                                           view in dialog. */
+                    numberType, /* phone number type (e.g. mobile) in second line of contact view */
+                    accountHandle);
+        } else {
+            final IntentProvider intentProvider = (IntentProvider) view.getTag();
+            if (intentProvider != null) {
+                final Intent intent = intentProvider.getIntent(mContext);
+                // See IntentProvider.getCallDetailIntentProvider() for why this may be null.
+                if (intent != null) {
+                    DialerUtils.startActivityWithErrorToast(mContext, intent);
+                }
+            }
+        }
+    }
+
+    @NeededForTesting
+    public static CallLogListItemViewHolder createForTest(Context context) {
+        Resources resources = context.getResources();
+        CallLogCache callLogCache =
+                CallLogCache.getCallLogCache(context);
+        PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
+                context, resources, callLogCache);
+
+        CallLogListItemViewHolder viewHolder = new CallLogListItemViewHolder(
+                context,
+                null /* expandCollapseListener */,
+                callLogCache,
+                new CallLogListItemHelper(phoneCallDetailsHelper, resources, callLogCache),
+                null /* voicemailPlaybackPresenter */,
+                null /* filteredNumberAsyncQueryHandler */,
+                null /* filteredNumberDialogCallback */,
+                new View(context),
+                new QuickContactBadge(context),
+                new View(context),
+                PhoneCallDetailsViews.createForTest(context),
+                new CardView(context),
+                new TextView(context),
+                new ImageView(context));
+        viewHolder.detailsButtonView = new TextView(context);
+        viewHolder.actionsView = new View(context);
+        viewHolder.voicemailPlaybackView = new VoicemailPlaybackLayout(context);
+
+        return viewHolder;
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogNotificationsHelper.java b/src/com/android/dialer/calllog/CallLogNotificationsHelper.java
new file mode 100644
index 0000000..6abf241
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogNotificationsHelper.java
@@ -0,0 +1,358 @@
+/*
+ * Copyright (C) 2013 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.dialer.calllog;
+
+import static android.Manifest.permission.READ_CALL_LOG;
+import static android.Manifest.permission.READ_CONTACTS;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract.PhoneLookup;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.R;
+import com.android.dialer.util.TelecomUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Helper class operating on call log notifications.
+ */
+public class CallLogNotificationsHelper {
+    private static final String TAG = "CallLogNotifHelper";
+    private static CallLogNotificationsHelper sInstance;
+
+    /** Returns the singleton instance of the {@link CallLogNotificationsHelper}. */
+    public static CallLogNotificationsHelper getInstance(Context context) {
+        if (sInstance == null) {
+            ContentResolver contentResolver = context.getContentResolver();
+            String countryIso = GeoUtil.getCurrentCountryIso(context);
+            sInstance = new CallLogNotificationsHelper(context,
+                    createNewCallsQuery(context, contentResolver),
+                    createNameLookupQuery(context, contentResolver),
+                    new ContactInfoHelper(context, countryIso),
+                    countryIso);
+        }
+        return sInstance;
+    }
+
+    private final Context mContext;
+    private final NewCallsQuery mNewCallsQuery;
+    private final NameLookupQuery mNameLookupQuery;
+    private final ContactInfoHelper mContactInfoHelper;
+    private final String mCurrentCountryIso;
+
+    CallLogNotificationsHelper(Context context, NewCallsQuery newCallsQuery,
+            NameLookupQuery nameLookupQuery, ContactInfoHelper contactInfoHelper,
+            String countryIso) {
+        mContext = context;
+        mNewCallsQuery = newCallsQuery;
+        mNameLookupQuery = nameLookupQuery;
+        mContactInfoHelper = contactInfoHelper;
+        mCurrentCountryIso = countryIso;
+    }
+
+    /**
+     * Get all voicemails with the "new" flag set to 1.
+     *
+     * @return A list of NewCall objects where each object represents a new voicemail.
+     */
+    @Nullable
+    public List<NewCall> getNewVoicemails() {
+        return mNewCallsQuery.query(Calls.VOICEMAIL_TYPE);
+    }
+
+    /**
+     * Get all missed calls with the "new" flag set to 1.
+     *
+     * @return A list of NewCall objects where each object represents a new missed call.
+     */
+    @Nullable
+    public List<NewCall> getNewMissedCalls() {
+        return mNewCallsQuery.query(Calls.MISSED_TYPE);
+    }
+
+    /**
+     * Given a number and number information (presentation and country ISO), get the best name
+     * for display. If the name is empty but we have a special presentation, display that.
+     * Otherwise attempt to look it up in the database or the cache.
+     * If that fails, fall back to displaying the number.
+     */
+    public String getName(@Nullable String number, int numberPresentation,
+                          @Nullable String countryIso) {
+        return getContactInfo(number, numberPresentation, countryIso).name;
+    }
+
+    /**
+     * Given a number and number information (presentation and country ISO), get
+     * {@link ContactInfo}. If the name is empty but we have a special presentation, display that.
+     * Otherwise attempt to look it up in the database or the cache.
+     * If that fails, fall back to displaying the number.
+     */
+    public @NonNull ContactInfo getContactInfo(@Nullable String number, int numberPresentation,
+                          @Nullable String countryIso) {
+        if (countryIso == null) {
+            countryIso = mCurrentCountryIso;
+        }
+
+        ContactInfo contactInfo = new ContactInfo();
+        contactInfo.number = number;
+        contactInfo.formattedNumber = PhoneNumberUtils.formatNumber(number, countryIso);
+        // contactInfo.normalizedNumber is not PhoneNumberUtils.normalizeNumber. Read ContactInfo.
+        contactInfo.normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+
+        // 1. Special number representation.
+        contactInfo.name = PhoneNumberDisplayUtil.getDisplayName(
+                mContext,
+                number,
+                numberPresentation,
+                false).toString();
+        if (!TextUtils.isEmpty(contactInfo.name)) {
+            return contactInfo;
+        }
+
+        // 2. Personal ContactsProvider phonelookup query.
+        contactInfo.name = mNameLookupQuery.query(number);
+        if (!TextUtils.isEmpty(contactInfo.name)) {
+            return contactInfo;
+        }
+
+        // 3. Look it up in the cache.
+        ContactInfo cachedContactInfo = mContactInfoHelper.lookupNumber(number, countryIso);
+
+        if (cachedContactInfo != null && !TextUtils.isEmpty(cachedContactInfo.name)) {
+            return cachedContactInfo;
+        }
+
+        if (!TextUtils.isEmpty(contactInfo.formattedNumber)) {
+            // 4. If we cannot lookup the contact, use the formatted number instead.
+            contactInfo.name = contactInfo.formattedNumber;
+        } else if (!TextUtils.isEmpty(number)) {
+            // 5. If number can't be formatted, use number.
+            contactInfo.name = number;
+        } else {
+            // 6. Otherwise, it's unknown number.
+            contactInfo.name = mContext.getResources().getString(R.string.unknown);
+        }
+        return contactInfo;
+    }
+
+    /** Removes the missed call notifications. */
+    public static void removeMissedCallNotifications(Context context) {
+        TelecomUtil.cancelMissedCallsNotification(context);
+    }
+
+    /** Update the voice mail notifications. */
+    public static void updateVoicemailNotifications(Context context) {
+        CallLogNotificationsService.updateVoicemailNotifications(context, null);
+    }
+
+    /** Information about a new voicemail. */
+    public static final class NewCall {
+        public final Uri callsUri;
+        public final Uri voicemailUri;
+        public final String number;
+        public final int numberPresentation;
+        public final String accountComponentName;
+        public final String accountId;
+        public final String transcription;
+        public final String countryIso;
+        public final long dateMs;
+
+        public NewCall(
+                Uri callsUri,
+                Uri voicemailUri,
+                String number,
+                int numberPresentation,
+                String accountComponentName,
+                String accountId,
+                String transcription,
+                String countryIso,
+                long dateMs) {
+            this.callsUri = callsUri;
+            this.voicemailUri = voicemailUri;
+            this.number = number;
+            this.numberPresentation = numberPresentation;
+            this.accountComponentName = accountComponentName;
+            this.accountId = accountId;
+            this.transcription = transcription;
+            this.countryIso = countryIso;
+            this.dateMs = dateMs;
+        }
+    }
+
+    /** Allows determining the new calls for which a notification should be generated. */
+    public interface NewCallsQuery {
+        /**
+         * Returns the new calls of a certain type for which a notification should be generated.
+         */
+        @Nullable
+        public List<NewCall> query(int type);
+    }
+
+    /** Create a new instance of {@link NewCallsQuery}. */
+    public static NewCallsQuery createNewCallsQuery(Context context,
+            ContentResolver contentResolver) {
+
+        return new DefaultNewCallsQuery(context.getApplicationContext(), contentResolver);
+    }
+
+    /**
+     * Default implementation of {@link NewCallsQuery} that looks up the list of new calls to
+     * notify about in the call log.
+     */
+    private static final class DefaultNewCallsQuery implements NewCallsQuery {
+        private static final String[] PROJECTION = {
+            Calls._ID,
+            Calls.NUMBER,
+            Calls.VOICEMAIL_URI,
+            Calls.NUMBER_PRESENTATION,
+            Calls.PHONE_ACCOUNT_COMPONENT_NAME,
+            Calls.PHONE_ACCOUNT_ID,
+            Calls.TRANSCRIPTION,
+            Calls.COUNTRY_ISO,
+            Calls.DATE
+        };
+        private static final int ID_COLUMN_INDEX = 0;
+        private static final int NUMBER_COLUMN_INDEX = 1;
+        private static final int VOICEMAIL_URI_COLUMN_INDEX = 2;
+        private static final int NUMBER_PRESENTATION_COLUMN_INDEX = 3;
+        private static final int PHONE_ACCOUNT_COMPONENT_NAME_COLUMN_INDEX = 4;
+        private static final int PHONE_ACCOUNT_ID_COLUMN_INDEX = 5;
+        private static final int TRANSCRIPTION_COLUMN_INDEX = 6;
+        private static final int COUNTRY_ISO_COLUMN_INDEX = 7;
+        private static final int DATE_COLUMN_INDEX = 8;
+
+        private final ContentResolver mContentResolver;
+        private final Context mContext;
+
+        private DefaultNewCallsQuery(Context context, ContentResolver contentResolver) {
+            mContext = context;
+            mContentResolver = contentResolver;
+        }
+
+        @Override
+        @Nullable
+        public List<NewCall> query(int type) {
+            if (!PermissionsUtil.hasPermission(mContext, READ_CALL_LOG)) {
+                Log.w(TAG, "No READ_CALL_LOG permission, returning null for calls lookup.");
+                return null;
+            }
+            final String selection = String.format("%s = 1 AND %s = ?", Calls.NEW, Calls.TYPE);
+            final String[] selectionArgs = new String[]{ Integer.toString(type) };
+            try (Cursor cursor = mContentResolver.query(Calls.CONTENT_URI_WITH_VOICEMAIL,
+                    PROJECTION, selection, selectionArgs, Calls.DEFAULT_SORT_ORDER)) {
+                if (cursor == null) {
+                    return null;
+                }
+                List<NewCall> newCalls = new ArrayList<>();
+                while (cursor.moveToNext()) {
+                    newCalls.add(createNewCallsFromCursor(cursor));
+                }
+                return newCalls;
+            } catch (RuntimeException e) {
+                Log.w(TAG, "Exception when querying Contacts Provider for calls lookup");
+                return null;
+            }
+        }
+
+        /** Returns an instance of {@link NewCall} created by using the values of the cursor. */
+        private NewCall createNewCallsFromCursor(Cursor cursor) {
+            String voicemailUriString = cursor.getString(VOICEMAIL_URI_COLUMN_INDEX);
+            Uri callsUri = ContentUris.withAppendedId(
+                    Calls.CONTENT_URI_WITH_VOICEMAIL, cursor.getLong(ID_COLUMN_INDEX));
+            Uri voicemailUri = voicemailUriString == null ? null : Uri.parse(voicemailUriString);
+            return new NewCall(
+                    callsUri,
+                    voicemailUri,
+                    cursor.getString(NUMBER_COLUMN_INDEX),
+                    cursor.getInt(NUMBER_PRESENTATION_COLUMN_INDEX),
+                    cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME_COLUMN_INDEX),
+                    cursor.getString(PHONE_ACCOUNT_ID_COLUMN_INDEX),
+                    cursor.getString(TRANSCRIPTION_COLUMN_INDEX),
+                    cursor.getString(COUNTRY_ISO_COLUMN_INDEX),
+                    cursor.getLong(DATE_COLUMN_INDEX));
+        }
+    }
+
+    /** Allows determining the name associated with a given phone number. */
+    public interface NameLookupQuery {
+        /**
+         * Returns the name associated with the given number in the contacts database, or null if
+         * the number does not correspond to any of the contacts.
+         * <p>
+         * If there are multiple contacts with the same phone number, it will return the name of one
+         * of the matching contacts.
+         */
+        @Nullable
+        public String query(@Nullable String number);
+    }
+
+    /** Create a new instance of {@link NameLookupQuery}. */
+    public static NameLookupQuery createNameLookupQuery(Context context,
+            ContentResolver contentResolver) {
+        return new DefaultNameLookupQuery(context.getApplicationContext(), contentResolver);
+    }
+
+    /**
+     * Default implementation of {@link NameLookupQuery} that looks up the name of a contact in the
+     * contacts database.
+     */
+    private static final class DefaultNameLookupQuery implements NameLookupQuery {
+        private static final String[] PROJECTION = { PhoneLookup.DISPLAY_NAME };
+        private static final int DISPLAY_NAME_COLUMN_INDEX = 0;
+
+        private final ContentResolver mContentResolver;
+        private final Context mContext;
+
+        private DefaultNameLookupQuery(Context context, ContentResolver contentResolver) {
+            mContext = context;
+            mContentResolver = contentResolver;
+        }
+
+        @Override
+        @Nullable
+        public String query(@Nullable String number) {
+            if (!PermissionsUtil.hasPermission(mContext, READ_CONTACTS)) {
+                Log.w(TAG, "No READ_CONTACTS permission, returning null for name lookup.");
+                return null;
+            }
+            try (Cursor cursor =  mContentResolver.query(
+                    Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)),
+                    PROJECTION, null, null, null)) {
+                if (cursor == null || !cursor.moveToFirst()) {
+                    return null;
+                }
+                return cursor.getString(DISPLAY_NAME_COLUMN_INDEX);
+            } catch (RuntimeException e) {
+                Log.w(TAG, "Exception when querying Contacts Provider for name lookup");
+                return null;
+            }
+        }
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogNotificationsService.java b/src/com/android/dialer/calllog/CallLogNotificationsService.java
new file mode 100644
index 0000000..4ff9576
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogNotificationsService.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.app.IntentService;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.util.Log;
+
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.util.TelecomUtil;
+
+/**
+ * Provides operations for managing call-related notifications.
+ * <p>
+ * It handles the following actions:
+ * <ul>
+ * <li>Updating voicemail notifications</li>
+ * <li>Marking new voicemails as old</li>
+ * <li>Updating missed call notifications</li>
+ * <li>Marking new missed calls as old</li>
+ * <li>Calling back from a missed call</li>
+ * <li>Sending an SMS from a missed call</li>
+ * </ul>
+ */
+public class CallLogNotificationsService extends IntentService {
+    private static final String TAG = "CallLogNotificationsService";
+
+    /** Action to mark all the new voicemails as old. */
+    public static final String ACTION_MARK_NEW_VOICEMAILS_AS_OLD =
+            "com.android.dialer.calllog.ACTION_MARK_NEW_VOICEMAILS_AS_OLD";
+
+    /**
+     * Action to update voicemail notifications.
+     * <p>
+     * May include an optional extra {@link #EXTRA_NEW_VOICEMAIL_URI}.
+     */
+    public static final String ACTION_UPDATE_VOICEMAIL_NOTIFICATIONS =
+            "com.android.dialer.calllog.UPDATE_VOICEMAIL_NOTIFICATIONS";
+
+    /**
+     * Extra to included with {@link #ACTION_UPDATE_VOICEMAIL_NOTIFICATIONS} to identify the new
+     * voicemail that triggered an update.
+     * <p>
+     * It must be a {@link Uri}.
+     */
+    public static final String EXTRA_NEW_VOICEMAIL_URI = "NEW_VOICEMAIL_URI";
+
+    /**
+     * Action to update the missed call notifications.
+     * <p>
+     * Includes optional extras {@link #EXTRA_MISSED_CALL_NUMBER} and
+     * {@link #EXTRA_MISSED_CALL_COUNT}.
+     */
+    public static final String ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS =
+            "com.android.dialer.calllog.UPDATE_MISSED_CALL_NOTIFICATIONS";
+
+    /** Action to mark all the new missed calls as old. */
+    public static final String ACTION_MARK_NEW_MISSED_CALLS_AS_OLD =
+            "com.android.dialer.calllog.ACTION_MARK_NEW_MISSED_CALLS_AS_OLD";
+
+    /** Action to call back a missed call. */
+    public static final String ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION =
+            "com.android.dialer.calllog.CALL_BACK_FROM_MISSED_CALL_NOTIFICATION";
+
+    public static final String ACTION_SEND_SMS_FROM_MISSED_CALL_NOTIFICATION =
+            "com.android.dialer.calllog.SEND_SMS_FROM_MISSED_CALL_NOTIFICATION";
+
+    /**
+     * Extra to be included with {@link #ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS},
+     * {@link #ACTION_SEND_SMS_FROM_MISSED_CALL_NOTIFICATION} and
+     * {@link #ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION} to identify the number to display,
+     * call or text back.
+     * <p>
+     * It must be a {@link String}.
+     */
+    public static final String EXTRA_MISSED_CALL_NUMBER = "MISSED_CALL_NUMBER";
+
+    /**
+     * Extra to be included with {@link #ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS} to represent the
+     * number of missed calls.
+     * <p>
+     * It must be a {@link Integer}
+     */
+    public static final String EXTRA_MISSED_CALL_COUNT =
+            "MISSED_CALL_COUNT";
+
+    public static final int UNKNOWN_MISSED_CALL_COUNT = -1;
+
+    private VoicemailQueryHandler mVoicemailQueryHandler;
+
+    public CallLogNotificationsService() {
+        super("CallLogNotificationsService");
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        if (intent == null) {
+            Log.d(TAG, "onHandleIntent: could not handle null intent");
+            return;
+        }
+
+        if (!PermissionsUtil.hasPermission(this, android.Manifest.permission.READ_CALL_LOG)) {
+            return;
+        }
+
+        String action = intent.getAction();
+        switch (action) {
+            case ACTION_MARK_NEW_VOICEMAILS_AS_OLD:
+                if (mVoicemailQueryHandler == null) {
+                    mVoicemailQueryHandler = new VoicemailQueryHandler(this, getContentResolver());
+                }
+                mVoicemailQueryHandler.markNewVoicemailsAsOld();
+                break;
+            case ACTION_UPDATE_VOICEMAIL_NOTIFICATIONS:
+                Uri voicemailUri = (Uri) intent.getParcelableExtra(EXTRA_NEW_VOICEMAIL_URI);
+                DefaultVoicemailNotifier.getInstance(this).updateNotification(voicemailUri);
+                break;
+            case ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS:
+                int count = intent.getIntExtra(EXTRA_MISSED_CALL_COUNT,
+                        UNKNOWN_MISSED_CALL_COUNT);
+                String number = intent.getStringExtra(EXTRA_MISSED_CALL_NUMBER);
+                MissedCallNotifier.getInstance(this).updateMissedCallNotification(count, number);
+                break;
+            case ACTION_MARK_NEW_MISSED_CALLS_AS_OLD:
+                CallLogNotificationsHelper.removeMissedCallNotifications(this);
+                break;
+            case ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION:
+                MissedCallNotifier.getInstance(this).callBackFromMissedCall(
+                        intent.getStringExtra(EXTRA_MISSED_CALL_NUMBER));
+                break;
+            case ACTION_SEND_SMS_FROM_MISSED_CALL_NOTIFICATION:
+                MissedCallNotifier.getInstance(this).sendSmsFromMissedCall(
+                        intent.getStringExtra(EXTRA_MISSED_CALL_NUMBER));
+                break;
+            default:
+                Log.d(TAG, "onHandleIntent: could not handle: " + intent);
+                break;
+        }
+    }
+
+    /**
+     * Updates notifications for any new voicemails.
+     *
+     * @param context a valid context.
+     * @param voicemailUri The uri pointing to the voicemail to update the notification for. If
+     *         {@code null}, then notifications for all new voicemails will be updated.
+     */
+    public static void updateVoicemailNotifications(Context context, Uri voicemailUri) {
+        if (TelecomUtil.hasReadWriteVoicemailPermissions(context)) {
+            Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
+            serviceIntent.setAction(
+                    CallLogNotificationsService.ACTION_UPDATE_VOICEMAIL_NOTIFICATIONS);
+            // If voicemailUri is null, then notifications for all voicemails will be updated.
+            if (voicemailUri != null) {
+                serviceIntent.putExtra(
+                        CallLogNotificationsService.EXTRA_NEW_VOICEMAIL_URI, voicemailUri);
+            }
+            context.startService(serviceIntent);
+        }
+    }
+
+    /**
+     * Updates notifications for any new missed calls.
+     *
+     * @param context A valid context.
+     * @param count The number of new missed calls.
+     * @param number The phone number of the newest missed call.
+     */
+    public static void updateMissedCallNotifications(Context context, int count,
+            String number) {
+        Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
+        serviceIntent.setAction(
+                CallLogNotificationsService.ACTION_UPDATE_MISSED_CALL_NOTIFICATIONS);
+        serviceIntent.putExtra(EXTRA_MISSED_CALL_COUNT, count);
+        serviceIntent.putExtra(EXTRA_MISSED_CALL_NUMBER, number);
+        context.startService(serviceIntent);
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogQuery.java b/src/com/android/dialer/calllog/CallLogQuery.java
new file mode 100644
index 0000000..905a4b7
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogQuery.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.provider.CallLog.Calls;
+
+import com.android.dialer.compat.DialerCompatUtils;
+import com.android.dialer.util.AppCompatConstants;
+
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+/**
+ * The query for the call log table.
+ */
+public final class CallLogQuery {
+
+    private static final String[] _PROJECTION_INTERNAL = new String[] {
+            Calls._ID,                          // 0
+            Calls.NUMBER,                       // 1
+            Calls.DATE,                         // 2
+            Calls.DURATION,                     // 3
+            Calls.TYPE,                         // 4
+            Calls.COUNTRY_ISO,                  // 5
+            Calls.VOICEMAIL_URI,                // 6
+            Calls.GEOCODED_LOCATION,            // 7
+            Calls.CACHED_NAME,                  // 8
+            Calls.CACHED_NUMBER_TYPE,           // 9
+            Calls.CACHED_NUMBER_LABEL,          // 10
+            Calls.CACHED_LOOKUP_URI,            // 11
+            Calls.CACHED_MATCHED_NUMBER,        // 12
+            Calls.CACHED_NORMALIZED_NUMBER,     // 13
+            Calls.CACHED_PHOTO_ID,              // 14
+            Calls.CACHED_FORMATTED_NUMBER,      // 15
+            Calls.IS_READ,                      // 16
+            Calls.NUMBER_PRESENTATION,          // 17
+            Calls.PHONE_ACCOUNT_COMPONENT_NAME, // 18
+            Calls.PHONE_ACCOUNT_ID,             // 19
+            Calls.FEATURES,                     // 20
+            Calls.DATA_USAGE,                   // 21
+            Calls.TRANSCRIPTION,                // 22
+    };
+
+    public static final int ID = 0;
+    public static final int NUMBER = 1;
+    public static final int DATE = 2;
+    public static final int DURATION = 3;
+    public static final int CALL_TYPE = 4;
+    public static final int COUNTRY_ISO = 5;
+    public static final int VOICEMAIL_URI = 6;
+    public static final int GEOCODED_LOCATION = 7;
+    public static final int CACHED_NAME = 8;
+    public static final int CACHED_NUMBER_TYPE = 9;
+    public static final int CACHED_NUMBER_LABEL = 10;
+    public static final int CACHED_LOOKUP_URI = 11;
+    public static final int CACHED_MATCHED_NUMBER = 12;
+    public static final int CACHED_NORMALIZED_NUMBER = 13;
+    public static final int CACHED_PHOTO_ID = 14;
+    public static final int CACHED_FORMATTED_NUMBER = 15;
+    public static final int IS_READ = 16;
+    public static final int NUMBER_PRESENTATION = 17;
+    public static final int ACCOUNT_COMPONENT_NAME = 18;
+    public static final int ACCOUNT_ID = 19;
+    public static final int FEATURES = 20;
+    public static final int DATA_USAGE = 21;
+    public static final int TRANSCRIPTION = 22;
+
+    // Indices for columns that may not be available, depending on the Sdk Version
+    /**
+     * Only available in versions >= M
+     * Call {@link DialerCompatUtils#isCallsCachedPhotoUriCompatible()} prior to use
+     */
+    public static int CACHED_PHOTO_URI = -1;
+
+    /**
+     * Only available in versions > M
+     * Call {@link PhoneNumberDisplayUtil#canShowPostDial()} prior to use
+     */
+    public static int POST_DIAL_DIGITS = -1;
+
+    public static final String[] _PROJECTION;
+
+    static {
+        List<String> projectionList = Lists.newArrayList(_PROJECTION_INTERNAL);
+        if (DialerCompatUtils.isCallsCachedPhotoUriCompatible()) {
+            projectionList.add(Calls.CACHED_PHOTO_URI);
+            CACHED_PHOTO_URI = projectionList.size() - 1;
+        }
+        if (PhoneNumberDisplayUtil.canShowPostDial()) {
+            projectionList.add(AppCompatConstants.POST_DIAL_DIGITS);
+            POST_DIAL_DIGITS = projectionList.size() - 1;
+        }
+        _PROJECTION = projectionList.toArray(new String[projectionList.size()]);
+    }
+
+}
diff --git a/src/com/android/dialer/calllog/CallLogQueryHandler.java b/src/com/android/dialer/calllog/CallLogQueryHandler.java
new file mode 100644
index 0000000..4cb835b
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogQueryHandler.java
@@ -0,0 +1,307 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.AsyncQueryHandler;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabaseCorruptException;
+import android.database.sqlite.SQLiteDiskIOException;
+import android.database.sqlite.SQLiteException;
+import android.database.sqlite.SQLiteFullException;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.provider.CallLog.Calls;
+import android.provider.VoicemailContract.Status;
+import android.provider.VoicemailContract.Voicemails;
+import android.util.Log;
+
+import com.android.contacts.common.compat.SdkVersionOverride;
+import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.util.AppCompatConstants;
+import com.android.dialer.util.TelecomUtil;
+import com.android.dialer.voicemail.VoicemailStatusHelperImpl;
+
+import com.google.common.collect.Lists;
+
+import java.lang.ref.WeakReference;
+import java.util.List;
+
+/** Handles asynchronous queries to the call log. */
+public class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler {
+    private static final String TAG = "CallLogQueryHandler";
+    private static final int NUM_LOGS_TO_DISPLAY = 1000;
+
+    /** The token for the query to fetch the old entries from the call log. */
+    private static final int QUERY_CALLLOG_TOKEN = 54;
+    /** The token for the query to mark all missed calls as old after seeing the call log. */
+    private static final int UPDATE_MARK_AS_OLD_TOKEN = 55;
+    /** The token for the query to mark all missed calls as read after seeing the call log. */
+    private static final int UPDATE_MARK_MISSED_CALL_AS_READ_TOKEN = 56;
+    /** The token for the query to fetch voicemail status messages. */
+    private static final int QUERY_VOICEMAIL_STATUS_TOKEN = 57;
+    /** The token for the query to fetch the number of unread voicemails. */
+    private static final int QUERY_VOICEMAIL_UNREAD_COUNT_TOKEN = 58;
+
+    private final int mLogLimit;
+
+    /**
+     * Call type similar to Calls.INCOMING_TYPE used to specify all types instead of one particular
+     * type. Exception: excludes Calls.VOICEMAIL_TYPE.
+     */
+    public static final int CALL_TYPE_ALL = -1;
+
+    private final WeakReference<Listener> mListener;
+
+    private final Context mContext;
+
+    /**
+     * Simple handler that wraps background calls to catch
+     * {@link SQLiteException}, such as when the disk is full.
+     */
+    protected class CatchingWorkerHandler extends AsyncQueryHandler.WorkerHandler {
+        public CatchingWorkerHandler(Looper looper) {
+            super(looper);
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            try {
+                // Perform same query while catching any exceptions
+                super.handleMessage(msg);
+            } catch (SQLiteDiskIOException e) {
+                Log.w(TAG, "Exception on background worker thread", e);
+            } catch (SQLiteFullException e) {
+                Log.w(TAG, "Exception on background worker thread", e);
+            } catch (SQLiteDatabaseCorruptException e) {
+                Log.w(TAG, "Exception on background worker thread", e);
+            } catch (IllegalArgumentException e) {
+                Log.w(TAG, "ContactsProvider not present on device", e);
+            } catch (SecurityException e) {
+                // Shouldn't happen if we are protecting the entry points correctly,
+                // but just in case.
+                Log.w(TAG, "No permission to access ContactsProvider.", e);
+            }
+        }
+    }
+
+    @Override
+    protected Handler createHandler(Looper looper) {
+        // Provide our special handler that catches exceptions
+        return new CatchingWorkerHandler(looper);
+    }
+
+    public CallLogQueryHandler(Context context, ContentResolver contentResolver,
+            Listener listener) {
+        this(context, contentResolver, listener, -1);
+    }
+
+    public CallLogQueryHandler(Context context, ContentResolver contentResolver, Listener listener,
+            int limit) {
+        super(contentResolver);
+        mContext = context.getApplicationContext();
+        mListener = new WeakReference<Listener>(listener);
+        mLogLimit = limit;
+    }
+
+    /**
+     * Fetches the list of calls from the call log for a given type.
+     * This call ignores the new or old state.
+     * <p>
+     * It will asynchronously update the content of the list view when the fetch completes.
+     */
+    public void fetchCalls(int callType, long newerThan) {
+        cancelFetch();
+        if (PermissionsUtil.hasPhonePermissions(mContext)) {
+            fetchCalls(QUERY_CALLLOG_TOKEN, callType, false /* newOnly */, newerThan);
+        } else {
+            updateAdapterData(null);
+        }
+    }
+
+    public void fetchCalls(int callType) {
+        fetchCalls(callType, 0);
+    }
+
+    public void fetchVoicemailStatus() {
+        if (TelecomUtil.hasReadWriteVoicemailPermissions(mContext)) {
+            startQuery(QUERY_VOICEMAIL_STATUS_TOKEN, null, Status.CONTENT_URI,
+                    VoicemailStatusHelperImpl.PROJECTION, null, null, null);
+        }
+    }
+
+    public void fetchVoicemailUnreadCount() {
+        if (TelecomUtil.hasReadWriteVoicemailPermissions(mContext)) {
+            startQuery(QUERY_VOICEMAIL_UNREAD_COUNT_TOKEN, null, Voicemails.CONTENT_URI,
+                new String[] { Voicemails._ID }, Voicemails.IS_READ + "=0", null, null);
+        }
+    }
+
+    /** Fetches the list of calls in the call log. */
+    private void fetchCalls(int token, int callType, boolean newOnly, long newerThan) {
+        StringBuilder where = new StringBuilder();
+        List<String> selectionArgs = Lists.newArrayList();
+
+        // Always hide blocked calls.
+        where.append("(").append(Calls.TYPE).append(" != ?)");
+        selectionArgs.add(Integer.toString(AppCompatConstants.CALLS_BLOCKED_TYPE));
+
+        // Ignore voicemails marked as deleted
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M)
+                >= Build.VERSION_CODES.M) {
+            where.append(" AND (").append(Voicemails.DELETED).append(" = 0)");
+        }
+
+        if (newOnly) {
+            where.append(" AND (").append(Calls.NEW).append(" = 1)");
+        }
+
+        if (callType > CALL_TYPE_ALL) {
+            where.append(" AND (").append(Calls.TYPE).append(" = ?)");
+            selectionArgs.add(Integer.toString(callType));
+        } else {
+            where.append(" AND NOT ");
+            where.append("(" + Calls.TYPE + " = " + AppCompatConstants.CALLS_VOICEMAIL_TYPE + ")");
+        }
+
+        if (newerThan > 0) {
+            where.append(" AND (").append(Calls.DATE).append(" > ?)");
+            selectionArgs.add(Long.toString(newerThan));
+        }
+
+        final int limit = (mLogLimit == -1) ? NUM_LOGS_TO_DISPLAY : mLogLimit;
+        final String selection = where.length() > 0 ? where.toString() : null;
+        Uri uri = TelecomUtil.getCallLogUri(mContext).buildUpon()
+                .appendQueryParameter(Calls.LIMIT_PARAM_KEY, Integer.toString(limit))
+                .build();
+        startQuery(token, null, uri, CallLogQuery._PROJECTION, selection, selectionArgs.toArray(
+                new String[selectionArgs.size()]), Calls.DEFAULT_SORT_ORDER);
+    }
+
+    /** Cancel any pending fetch request. */
+    private void cancelFetch() {
+        cancelOperation(QUERY_CALLLOG_TOKEN);
+    }
+
+    /** Updates all new calls to mark them as old. */
+    public void markNewCallsAsOld() {
+        if (!PermissionsUtil.hasPhonePermissions(mContext)) {
+            return;
+        }
+        // Mark all "new" calls as not new anymore.
+        StringBuilder where = new StringBuilder();
+        where.append(Calls.NEW);
+        where.append(" = 1");
+
+        ContentValues values = new ContentValues(1);
+        values.put(Calls.NEW, "0");
+
+        startUpdate(UPDATE_MARK_AS_OLD_TOKEN, null, TelecomUtil.getCallLogUri(mContext),
+                values, where.toString(), null);
+    }
+
+    /** Updates all missed calls to mark them as read. */
+    public void markMissedCallsAsRead() {
+        if (!PermissionsUtil.hasPhonePermissions(mContext)) {
+            return;
+        }
+        // Mark all "new" calls as not new anymore.
+        StringBuilder where = new StringBuilder();
+        where.append(Calls.IS_READ).append(" = 0");
+        where.append(" AND ");
+        where.append(Calls.TYPE).append(" = ").append(Calls.MISSED_TYPE);
+
+        ContentValues values = new ContentValues(1);
+        values.put(Calls.IS_READ, "1");
+
+        startUpdate(UPDATE_MARK_MISSED_CALL_AS_READ_TOKEN, null, Calls.CONTENT_URI, values,
+                where.toString(), null);
+    }
+
+    @Override
+    protected synchronized void onNotNullableQueryComplete(int token, Object cookie,
+            Cursor cursor) {
+        if (cursor == null) {
+            return;
+        }
+        try {
+            if (token == QUERY_CALLLOG_TOKEN) {
+                if (updateAdapterData(cursor)) {
+                    cursor = null;
+                }
+            } else if (token == QUERY_VOICEMAIL_STATUS_TOKEN) {
+                updateVoicemailStatus(cursor);
+            } else if (token == QUERY_VOICEMAIL_UNREAD_COUNT_TOKEN) {
+                updateVoicemailUnreadCount(cursor);
+            } else {
+                Log.w(TAG, "Unknown query completed: ignoring: " + token);
+            }
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+    }
+
+    /**
+     * Updates the adapter in the call log fragment to show the new cursor data.
+     * Returns true if the listener took ownership of the cursor.
+     */
+    private boolean updateAdapterData(Cursor cursor) {
+        final Listener listener = mListener.get();
+        if (listener != null) {
+            return listener.onCallsFetched(cursor);
+        }
+        return false;
+
+    }
+
+    private void updateVoicemailStatus(Cursor statusCursor) {
+        final Listener listener = mListener.get();
+        if (listener != null) {
+            listener.onVoicemailStatusFetched(statusCursor);
+        }
+    }
+
+    private void updateVoicemailUnreadCount(Cursor statusCursor) {
+        final Listener listener = mListener.get();
+        if (listener != null) {
+            listener.onVoicemailUnreadCountFetched(statusCursor);
+        }
+    }
+
+    /** Listener to completion of various queries. */
+    public interface Listener {
+        /** Called when {@link CallLogQueryHandler#fetchVoicemailStatus()} completes. */
+        void onVoicemailStatusFetched(Cursor statusCursor);
+
+        /** Called when {@link CallLogQueryHandler#fetchVoicemailUnreadCount()} completes. */
+        void onVoicemailUnreadCountFetched(Cursor cursor);
+
+        /**
+         * Called when {@link CallLogQueryHandler#fetchCalls(int)} complete.
+         * Returns true if takes ownership of cursor.
+         */
+        boolean onCallsFetched(Cursor combinedCursor);
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogReceiver.java b/src/com/android/dialer/calllog/CallLogReceiver.java
new file mode 100644
index 0000000..fef7608
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogReceiver.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.VoicemailContract;
+import android.util.Log;
+
+/**
+ * Receiver for call log events.
+ * <p>
+ * It is currently used to handle {@link VoicemailContract#ACTION_NEW_VOICEMAIL} and
+ * {@link Intent#ACTION_BOOT_COMPLETED}.
+ */
+public class CallLogReceiver extends BroadcastReceiver {
+    private static final String TAG = "CallLogReceiver";
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (VoicemailContract.ACTION_NEW_VOICEMAIL.equals(intent.getAction())) {
+            CallLogNotificationsService.updateVoicemailNotifications(context, intent.getData());
+        } else if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
+            CallLogNotificationsService.updateVoicemailNotifications(context, null);
+        } else {
+            Log.w(TAG, "onReceive: could not handle: " + intent);
+        }
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallTypeHelper.java b/src/com/android/dialer/calllog/CallTypeHelper.java
new file mode 100644
index 0000000..acc114c
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallTypeHelper.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.res.Resources;
+
+import com.android.dialer.R;
+import com.android.dialer.util.AppCompatConstants;
+
+/**
+ * Helper class to perform operations related to call types.
+ */
+public class CallTypeHelper {
+    /** Name used to identify incoming calls. */
+    private final CharSequence mIncomingName;
+    /** Name used to identify outgoing calls. */
+    private final CharSequence mOutgoingName;
+    /** Name used to identify missed calls. */
+    private final CharSequence mMissedName;
+    /** Name used to identify incoming video calls. */
+    private final CharSequence mIncomingVideoName;
+    /** Name used to identify outgoing video calls. */
+    private final CharSequence mOutgoingVideoName;
+    /** Name used to identify missed video calls. */
+    private final CharSequence mMissedVideoName;
+    /** Name used to identify voicemail calls. */
+    private final CharSequence mVoicemailName;
+    /** Name used to identify rejected calls. */
+    private final CharSequence mRejectedName;
+    /** Name used to identify blocked calls. */
+    private final CharSequence mBlockedName;
+    /** Color used to identify new missed calls. */
+    private final int mNewMissedColor;
+    /** Color used to identify new voicemail calls. */
+    private final int mNewVoicemailColor;
+
+    public CallTypeHelper(Resources resources) {
+        // Cache these values so that we do not need to look them up each time.
+        mIncomingName = resources.getString(R.string.type_incoming);
+        mOutgoingName = resources.getString(R.string.type_outgoing);
+        mMissedName = resources.getString(R.string.type_missed);
+        mIncomingVideoName = resources.getString(R.string.type_incoming_video);
+        mOutgoingVideoName = resources.getString(R.string.type_outgoing_video);
+        mMissedVideoName = resources.getString(R.string.type_missed_video);
+        mVoicemailName = resources.getString(R.string.type_voicemail);
+        mRejectedName = resources.getString(R.string.type_rejected);
+        mBlockedName = resources.getString(R.string.type_blocked);
+        mNewMissedColor = resources.getColor(R.color.call_log_missed_call_highlight_color);
+        mNewVoicemailColor = resources.getColor(R.color.call_log_voicemail_highlight_color);
+    }
+
+    /** Returns the text used to represent the given call type. */
+    public CharSequence getCallTypeText(int callType, boolean isVideoCall) {
+        switch (callType) {
+            case AppCompatConstants.CALLS_INCOMING_TYPE:
+                if (isVideoCall) {
+                    return mIncomingVideoName;
+                } else {
+                    return mIncomingName;
+                }
+
+            case AppCompatConstants.CALLS_OUTGOING_TYPE:
+                if (isVideoCall) {
+                    return mOutgoingVideoName;
+                } else {
+                    return mOutgoingName;
+                }
+
+            case AppCompatConstants.CALLS_MISSED_TYPE:
+                if (isVideoCall) {
+                    return mMissedVideoName;
+                } else {
+                    return mMissedName;
+                }
+
+            case AppCompatConstants.CALLS_VOICEMAIL_TYPE:
+                return mVoicemailName;
+
+            case AppCompatConstants.CALLS_REJECTED_TYPE:
+                return mRejectedName;
+
+            case AppCompatConstants.CALLS_BLOCKED_TYPE:
+                return mBlockedName;
+
+            default:
+                return mMissedName;
+        }
+    }
+
+    /** Returns the color used to highlight the given call type, null if not highlight is needed. */
+    public Integer getHighlightedColor(int callType) {
+        switch (callType) {
+            case AppCompatConstants.CALLS_INCOMING_TYPE:
+                // New incoming calls are not highlighted.
+                return null;
+
+            case AppCompatConstants.CALLS_OUTGOING_TYPE:
+                // New outgoing calls are not highlighted.
+                return null;
+
+            case AppCompatConstants.CALLS_MISSED_TYPE:
+                return mNewMissedColor;
+
+            case AppCompatConstants.CALLS_VOICEMAIL_TYPE:
+                return mNewVoicemailColor;
+
+            default:
+                // Don't highlight calls of unknown types. They are treated as missed calls by
+                // the rest of the UI, but since they will never be marked as read by
+                // {@link CallLogQueryHandler}, just don't ever highlight them anyway.
+                return null;
+        }
+    }
+
+    public static boolean isMissedCallType(int callType) {
+        return (callType != AppCompatConstants.CALLS_INCOMING_TYPE
+                && callType != AppCompatConstants.CALLS_OUTGOING_TYPE
+                && callType != AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallTypeIconsView.java b/src/com/android/dialer/calllog/CallTypeIconsView.java
new file mode 100644
index 0000000..cfd8f97
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallTypeIconsView.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.View;
+
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.contacts.common.util.BitmapUtil;
+import com.android.dialer.R;
+import com.android.dialer.util.AppCompatConstants;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+/**
+ * View that draws one or more symbols for different types of calls (missed calls, outgoing etc).
+ * The symbols are set up horizontally. As this view doesn't create subviews, it is better suited
+ * for ListView-recycling that a regular LinearLayout using ImageViews.
+ */
+public class CallTypeIconsView extends View {
+    private List<Integer> mCallTypes = Lists.newArrayListWithCapacity(3);
+    private boolean mShowVideo = false;
+    private Resources mResources;
+    private int mWidth;
+    private int mHeight;
+
+    public CallTypeIconsView(Context context) {
+        this(context, null);
+    }
+
+    public CallTypeIconsView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        mResources = new Resources(context);
+    }
+
+    public void clear() {
+        mCallTypes.clear();
+        mWidth = 0;
+        mHeight = 0;
+        invalidate();
+    }
+
+    public void add(int callType) {
+        mCallTypes.add(callType);
+
+        final Drawable drawable = getCallTypeDrawable(callType);
+        mWidth += drawable.getIntrinsicWidth() + mResources.iconMargin;
+        mHeight = Math.max(mHeight, drawable.getIntrinsicHeight());
+        invalidate();
+    }
+
+    /**
+     * Determines whether the video call icon will be shown.
+     *
+     * @param showVideo True where the video icon should be shown.
+     */
+    public void setShowVideo(boolean showVideo) {
+        mShowVideo = showVideo;
+        if (showVideo) {
+            mWidth += mResources.videoCall.getIntrinsicWidth();
+            mHeight = Math.max(mHeight, mResources.videoCall.getIntrinsicHeight());
+            invalidate();
+        }
+    }
+
+    /**
+     * Determines if the video icon should be shown.
+     *
+     * @return True if the video icon should be shown.
+     */
+    public boolean isVideoShown() {
+        return mShowVideo;
+    }
+
+    @NeededForTesting
+    public int getCount() {
+        return mCallTypes.size();
+    }
+
+    @NeededForTesting
+    public int getCallType(int index) {
+        return mCallTypes.get(index);
+    }
+
+    private Drawable getCallTypeDrawable(int callType) {
+        switch (callType) {
+            case AppCompatConstants.CALLS_INCOMING_TYPE:
+                return mResources.incoming;
+            case AppCompatConstants.CALLS_OUTGOING_TYPE:
+                return mResources.outgoing;
+            case AppCompatConstants.CALLS_MISSED_TYPE:
+                return mResources.missed;
+            case AppCompatConstants.CALLS_VOICEMAIL_TYPE:
+                return mResources.voicemail;
+            case AppCompatConstants.CALLS_BLOCKED_TYPE:
+                return mResources.blocked;
+            default:
+                // It is possible for users to end up with calls with unknown call types in their
+                // call history, possibly due to 3rd party call log implementations (e.g. to
+                // distinguish between rejected and missed calls). Instead of crashing, just
+                // assume that all unknown call types are missed calls.
+                return mResources.missed;
+        }
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        setMeasuredDimension(mWidth, mHeight);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        int left = 0;
+        for (Integer callType : mCallTypes) {
+            final Drawable drawable = getCallTypeDrawable(callType);
+            final int right = left + drawable.getIntrinsicWidth();
+            drawable.setBounds(left, 0, right, drawable.getIntrinsicHeight());
+            drawable.draw(canvas);
+            left = right + mResources.iconMargin;
+        }
+
+        // If showing the video call icon, draw it scaled appropriately.
+        if (mShowVideo) {
+            final Drawable drawable = mResources.videoCall;
+            final int right = left + mResources.videoCall.getIntrinsicWidth();
+            drawable.setBounds(left, 0, right, mResources.videoCall.getIntrinsicHeight());
+            drawable.draw(canvas);
+        }
+    }
+
+    private static class Resources {
+
+        // Drawable representing an incoming answered call.
+        public final Drawable incoming;
+
+        // Drawable respresenting an outgoing call.
+        public final Drawable outgoing;
+
+        // Drawable representing an incoming missed call.
+        public final Drawable missed;
+
+        // Drawable representing a voicemail.
+        public final Drawable voicemail;
+
+        // Drawable representing a blocked call.
+        public final Drawable blocked;
+
+        //  Drawable repesenting a video call.
+        public final Drawable videoCall;
+
+        /**
+         * The margin to use for icons.
+         */
+        public final int iconMargin;
+
+        /**
+         * Configures the call icon drawables.
+         * A single white call arrow which points down and left is used as a basis for all of the
+         * call arrow icons, applying rotation and colors as needed.
+         *
+         * @param context The current context.
+         */
+        public Resources(Context context) {
+            final android.content.res.Resources r = context.getResources();
+
+            incoming = r.getDrawable(R.drawable.ic_call_arrow);
+            incoming.setColorFilter(r.getColor(R.color.answered_call), PorterDuff.Mode.MULTIPLY);
+
+            // Create a rotated instance of the call arrow for outgoing calls.
+            outgoing = BitmapUtil.getRotatedDrawable(r, R.drawable.ic_call_arrow, 180f);
+            outgoing.setColorFilter(r.getColor(R.color.answered_call), PorterDuff.Mode.MULTIPLY);
+
+            // Need to make a copy of the arrow drawable, otherwise the same instance colored
+            // above will be recolored here.
+            missed = r.getDrawable(R.drawable.ic_call_arrow).mutate();
+            missed.setColorFilter(r.getColor(R.color.missed_call), PorterDuff.Mode.MULTIPLY);
+
+            voicemail = r.getDrawable(R.drawable.ic_call_voicemail_holo_dark);
+
+            blocked = getScaledBitmap(context, R.drawable.ic_block_24dp);
+            blocked.setColorFilter(r.getColor(R.color.blocked_call), PorterDuff.Mode.MULTIPLY);
+
+            videoCall = getScaledBitmap(context, R.drawable.ic_videocam_24dp);
+            videoCall.setColorFilter(r.getColor(R.color.dialtacts_secondary_text_color),
+                    PorterDuff.Mode.MULTIPLY);
+
+            iconMargin = r.getDimensionPixelSize(R.dimen.call_log_icon_margin);
+        }
+
+        // Gets the icon, scaled to the height of the call type icons. This helps display all the
+        // icons to be the same height, while preserving their width aspect ratio.
+        private Drawable getScaledBitmap(Context context, int resourceId) {
+            Bitmap icon = BitmapFactory.decodeResource(context.getResources(), resourceId);
+            int scaledHeight =
+                    context.getResources().getDimensionPixelSize(R.dimen.call_type_icon_size);
+            int scaledWidth = (int) ((float) icon.getWidth()
+                    * ((float) scaledHeight / (float) icon.getHeight()));
+            Bitmap scaledIcon = Bitmap.createScaledBitmap(icon, scaledWidth, scaledHeight, false);
+            return new BitmapDrawable(context.getResources(), scaledIcon);
+        }
+    }
+}
diff --git a/src/com/android/dialer/calllog/ClearCallLogDialog.java b/src/com/android/dialer/calllog/ClearCallLogDialog.java
new file mode 100644
index 0000000..bef5010
--- /dev/null
+++ b/src/com/android/dialer/calllog/ClearCallLogDialog.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.calllog;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.FragmentManager;
+import android.app.ProgressDialog;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.provider.CallLog.Calls;
+
+import com.android.dialer.R;
+import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialerbind.ObjectFactory;
+
+/**
+ * Dialog that clears the call log after confirming with the user
+ */
+public class ClearCallLogDialog extends DialogFragment {
+    private static final CachedNumberLookupService mCachedNumberLookupService =
+            ObjectFactory.newCachedNumberLookupService();
+
+    /** Preferred way to show this dialog */
+    public static void show(FragmentManager fragmentManager) {
+        ClearCallLogDialog dialog = new ClearCallLogDialog();
+        dialog.show(fragmentManager, "deleteCallLog");
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        final ContentResolver resolver = getActivity().getContentResolver();
+        final Context context = getActivity().getApplicationContext();
+        final OnClickListener okListener = new OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                final ProgressDialog progressDialog = ProgressDialog.show(getActivity(),
+                        getString(R.string.clearCallLogProgress_title),
+                        "", true, false);
+                progressDialog.setOwnerActivity(getActivity());
+                final AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
+                    @Override
+                    protected Void doInBackground(Void... params) {
+                        resolver.delete(Calls.CONTENT_URI, null, null);
+                        if (mCachedNumberLookupService != null) {
+                            mCachedNumberLookupService.clearAllCacheEntries(context);
+                        }
+                        return null;
+                    }
+                    @Override
+                    protected void onPostExecute(Void result) {
+                        final Activity activity = progressDialog.getOwnerActivity();
+
+                        if (activity == null || activity.isDestroyed() || activity.isFinishing()) {
+                            return;
+                        }
+
+                        if (progressDialog != null && progressDialog.isShowing()) {
+                            progressDialog.dismiss();
+                        }
+                    }
+                };
+                // TODO: Once we have the API, we should configure this ProgressDialog
+                // to only show up after a certain time (e.g. 150ms)
+                progressDialog.show();
+                task.execute();
+            }
+        };
+        return new AlertDialog.Builder(getActivity())
+            .setTitle(R.string.clearCallLogConfirmation_title)
+            .setIconAttribute(android.R.attr.alertDialogIcon)
+            .setMessage(R.string.clearCallLogConfirmation)
+            .setNegativeButton(android.R.string.cancel, null)
+            .setPositiveButton(android.R.string.ok, okListener)
+            .setCancelable(true)
+            .create();
+    }
+}
diff --git a/src/com/android/dialer/calllog/ContactInfo.java b/src/com/android/dialer/calllog/ContactInfo.java
new file mode 100644
index 0000000..8fe4964
--- /dev/null
+++ b/src/com/android/dialer/calllog/ContactInfo.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.net.Uri;
+import android.text.TextUtils;
+
+import com.android.contacts.common.ContactsUtils.UserType;
+import com.android.contacts.common.util.UriUtils;
+import com.google.common.base.Objects;
+
+/**
+ * Information for a contact as needed by the Call Log.
+ */
+public class ContactInfo {
+    public Uri lookupUri;
+
+    /**
+     * Contact lookup key.  Note this may be a lookup key for a corp contact, in which case
+     * "lookup by lookup key" doesn't work on the personal profile.
+     */
+    public String lookupKey;
+    public String name;
+    public String nameAlternative;
+    public int type;
+    public String label;
+    public String number;
+    public String formattedNumber;
+    /*
+     * ContactInfo.normalizedNumber is a column value returned by PhoneLookup query. By definition,
+     * it's E164 representation.
+     * http://developer.android.com/reference/android/provider/ContactsContract.PhoneLookupColumns.
+     * html#NORMALIZED_NUMBER.
+     *
+     * The fallback value, when PhoneLookup fails or else, should be either null or
+     * PhoneNumberUtils.formatNumberToE164.
+     */
+    public String normalizedNumber;
+    /** The photo for the contact, if available. */
+    public long photoId;
+    /** The high-res photo for the contact, if available. */
+    public Uri photoUri;
+    public boolean isBadData;
+    public String objectId;
+    public @UserType long userType;
+
+    public static ContactInfo EMPTY = new ContactInfo();
+
+    public int sourceType = 0;
+
+    @Override
+    public int hashCode() {
+        // Uses only name and contactUri to determine hashcode.
+        // This should be sufficient to have a reasonable distribution of hash codes.
+        // Moreover, there should be no two people with the same lookupUri.
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((lookupUri == null) ? 0 : lookupUri.hashCode());
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null) return false;
+        if (getClass() != obj.getClass()) return false;
+        ContactInfo other = (ContactInfo) obj;
+        if (!UriUtils.areEqual(lookupUri, other.lookupUri)) return false;
+        if (!TextUtils.equals(name, other.name)) return false;
+        if (!TextUtils.equals(nameAlternative, other.nameAlternative)) return false;
+        if (type != other.type) return false;
+        if (!TextUtils.equals(label, other.label)) return false;
+        if (!TextUtils.equals(number, other.number)) return false;
+        if (!TextUtils.equals(formattedNumber, other.formattedNumber)) return false;
+        if (!TextUtils.equals(normalizedNumber, other.normalizedNumber)) return false;
+        if (photoId != other.photoId) return false;
+        if (!UriUtils.areEqual(photoUri, other.photoUri)) return false;
+        if (!TextUtils.equals(objectId, other.objectId)) return false;
+        if (userType != other.userType) return false;
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        return Objects.toStringHelper(this).add("lookupUri", lookupUri).add("name", name)
+                .add("nameAlternative", nameAlternative)
+                .add("type", type).add("label", label)
+                .add("number", number).add("formattedNumber",formattedNumber)
+                .add("normalizedNumber", normalizedNumber).add("photoId", photoId)
+                .add("photoUri", photoUri).add("objectId", objectId)
+                .add("userType",userType).toString();
+    }
+}
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
new file mode 100644
index 0000000..7f08fdc
--- /dev/null
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -0,0 +1,475 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteFullException;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.DisplayNameSources;
+import android.provider.ContactsContract.PhoneLookup;
+import android.support.annotation.Nullable;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.util.Constants;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.contacts.common.util.UriUtils;
+import com.android.dialer.compat.DialerCompatUtils;
+import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
+import com.android.dialer.util.TelecomUtil;
+import com.android.dialerbind.ObjectFactory;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * Utility class to look up the contact information for a given number.
+ */
+public class ContactInfoHelper {
+    private static final String TAG = ContactInfoHelper.class.getSimpleName();
+
+    private final Context mContext;
+    private final String mCurrentCountryIso;
+
+    private static final CachedNumberLookupService mCachedNumberLookupService =
+            ObjectFactory.newCachedNumberLookupService();
+
+    public ContactInfoHelper(Context context, String currentCountryIso) {
+        mContext = context;
+        mCurrentCountryIso = currentCountryIso;
+    }
+
+    /**
+     * Returns the contact information for the given number.
+     * <p>
+     * If the number does not match any contact, returns a contact info containing only the number
+     * and the formatted number.
+     * <p>
+     * If an error occurs during the lookup, it returns null.
+     *
+     * @param number the number to look up
+     * @param countryIso the country associated with this number
+     */
+    @Nullable
+    public ContactInfo lookupNumber(String number, String countryIso) {
+        if (TextUtils.isEmpty(number)) {
+            return null;
+        }
+
+        ContactInfo info;
+
+        if (PhoneNumberHelper.isUriNumber(number)) {
+            // The number is a SIP address..
+            info = lookupContactFromUri(getContactInfoLookupUri(number));
+            if (info == null || info == ContactInfo.EMPTY) {
+                // If lookup failed, check if the "username" of the SIP address is a phone number.
+                String username = PhoneNumberHelper.getUsernameFromUriNumber(number);
+                if (PhoneNumberUtils.isGlobalPhoneNumber(username)) {
+                    info = queryContactInfoForPhoneNumber(username, countryIso);
+                }
+            }
+        } else {
+            // Look for a contact that has the given phone number.
+            info = queryContactInfoForPhoneNumber(number, countryIso);
+        }
+
+        final ContactInfo updatedInfo;
+        if (info == null) {
+            // The lookup failed.
+            updatedInfo = null;
+        } else {
+            // If we did not find a matching contact, generate an empty contact info for the number.
+            if (info == ContactInfo.EMPTY) {
+                // Did not find a matching contact.
+                updatedInfo = new ContactInfo();
+                updatedInfo.number = number;
+                updatedInfo.formattedNumber = formatPhoneNumber(number, null, countryIso);
+                updatedInfo.normalizedNumber = PhoneNumberUtils.formatNumberToE164(
+                        number, countryIso);
+                updatedInfo.lookupUri = createTemporaryContactUri(updatedInfo.formattedNumber);
+            } else {
+                updatedInfo = info;
+            }
+        }
+        return updatedInfo;
+    }
+
+    /**
+     * Creates a JSON-encoded lookup uri for a unknown number without an associated contact
+     *
+     * @param number - Unknown phone number
+     * @return JSON-encoded URI that can be used to perform a lookup when clicking on the quick
+     *         contact card.
+     */
+    private static Uri createTemporaryContactUri(String number) {
+        try {
+            final JSONObject contactRows = new JSONObject().put(Phone.CONTENT_ITEM_TYPE,
+                    new JSONObject().put(Phone.NUMBER, number).put(Phone.TYPE, Phone.TYPE_CUSTOM));
+
+            final String jsonString = new JSONObject().put(Contacts.DISPLAY_NAME, number)
+                    .put(Contacts.DISPLAY_NAME_SOURCE, DisplayNameSources.PHONE)
+                    .put(Contacts.CONTENT_ITEM_TYPE, contactRows).toString();
+
+            return Contacts.CONTENT_LOOKUP_URI
+                    .buildUpon()
+                    .appendPath(Constants.LOOKUP_URI_ENCODED)
+                    .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+                            String.valueOf(Long.MAX_VALUE))
+                    .encodedFragment(jsonString)
+                    .build();
+        } catch (JSONException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Looks up a contact using the given URI.
+     * <p>
+     * It returns null if an error occurs, {@link ContactInfo#EMPTY} if no matching contact is
+     * found, or the {@link ContactInfo} for the given contact.
+     * <p>
+     * The {@link ContactInfo#formattedNumber} field is always set to {@code null} in the returned
+     * value.
+     */
+    public ContactInfo lookupContactFromUri(Uri uri) {
+        if (uri == null) {
+            return null;
+        }
+        if (!PermissionsUtil.hasContactsPermissions(mContext)) {
+            return ContactInfo.EMPTY;
+        }
+
+        Cursor phoneLookupCursor = null;
+        try {
+            phoneLookupCursor = mContext.getContentResolver().query(uri,
+                    PhoneQuery.PHONE_LOOKUP_PROJECTION, null, null, null);
+        } catch (NullPointerException e) {
+            // Trap NPE from pre-N CP2
+            return null;
+        }
+        if (phoneLookupCursor == null) {
+            return null;
+        }
+
+        try {
+            if (!phoneLookupCursor.moveToFirst()) {
+                return ContactInfo.EMPTY;
+            }
+            String lookupKey = phoneLookupCursor.getString(PhoneQuery.LOOKUP_KEY);
+            ContactInfo contactInfo = createPhoneLookupContactInfo(phoneLookupCursor, lookupKey);
+            contactInfo.nameAlternative = lookUpDisplayNameAlternative(mContext, lookupKey);
+            return contactInfo;
+        } finally {
+            phoneLookupCursor.close();
+        }
+    }
+
+    private ContactInfo createPhoneLookupContactInfo(Cursor phoneLookupCursor, String lookupKey) {
+        ContactInfo info = new ContactInfo();
+        info.lookupKey = lookupKey;
+        info.lookupUri = Contacts.getLookupUri(phoneLookupCursor.getLong(PhoneQuery.PERSON_ID),
+                lookupKey);
+        info.name = phoneLookupCursor.getString(PhoneQuery.NAME);
+        info.type = phoneLookupCursor.getInt(PhoneQuery.PHONE_TYPE);
+        info.label = phoneLookupCursor.getString(PhoneQuery.LABEL);
+        info.number = phoneLookupCursor.getString(PhoneQuery.MATCHED_NUMBER);
+        info.normalizedNumber = phoneLookupCursor.getString(PhoneQuery.NORMALIZED_NUMBER);
+        info.photoId = phoneLookupCursor.getLong(PhoneQuery.PHOTO_ID);
+        info.photoUri = UriUtils.parseUriOrNull(phoneLookupCursor.getString(PhoneQuery.PHOTO_URI));
+        info.formattedNumber = null;
+        info.userType = ContactsUtils.determineUserType(null,
+                phoneLookupCursor.getLong(PhoneQuery.PERSON_ID));
+
+        return info;
+    }
+
+    public static String lookUpDisplayNameAlternative(Context context, String lookupKey) {
+        if (lookupKey == null) {
+            return null;
+        }
+
+        final Uri uri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey);
+
+        Cursor cursor = null;
+        try {
+            cursor = context.getContentResolver().query(uri,
+                    PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION, null, null, null);
+
+            if (cursor != null && cursor.moveToFirst()) {
+                return cursor.getString(PhoneQuery.NAME_ALTERNATIVE);
+            }
+        } catch (IllegalArgumentException e) {
+            // Thrown for work profile queries. For those, we don't support
+            // alternative display names.
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Determines the contact information for the given phone number.
+     * <p>
+     * It returns the contact info if found.
+     * <p>
+     * If no contact corresponds to the given phone number, returns {@link ContactInfo#EMPTY}.
+     * <p>
+     * If the lookup fails for some other reason, it returns null.
+     */
+    private ContactInfo queryContactInfoForPhoneNumber(String number, String countryIso) {
+        if (TextUtils.isEmpty(number)) {
+            return null;
+        }
+
+        ContactInfo info = lookupContactFromUri(getContactInfoLookupUri(number));
+        if (info != null && info != ContactInfo.EMPTY) {
+            info.formattedNumber = formatPhoneNumber(number, null, countryIso);
+        } else if (mCachedNumberLookupService != null) {
+            CachedContactInfo cacheInfo =
+                    mCachedNumberLookupService.lookupCachedContactFromNumber(mContext, number);
+            if (cacheInfo != null) {
+                info = cacheInfo.getContactInfo().isBadData ? null : cacheInfo.getContactInfo();
+            } else {
+                info = null;
+            }
+        }
+        return info;
+    }
+
+    /**
+     * Format the given phone number
+     *
+     * @param number the number to be formatted.
+     * @param normalizedNumber the normalized number of the given number.
+     * @param countryIso the ISO 3166-1 two letters country code, the country's convention will be
+     *        used to format the number if the normalized phone is null.
+     *
+     * @return the formatted number, or the given number if it was formatted.
+     */
+    private String formatPhoneNumber(String number, String normalizedNumber, String countryIso) {
+        if (TextUtils.isEmpty(number)) {
+            return "";
+        }
+        // If "number" is really a SIP address, don't try to do any formatting at all.
+        if (PhoneNumberHelper.isUriNumber(number)) {
+            return number;
+        }
+        if (TextUtils.isEmpty(countryIso)) {
+            countryIso = mCurrentCountryIso;
+        }
+        return PhoneNumberUtils.formatNumber(number, normalizedNumber, countryIso);
+    }
+
+    /**
+     * Stores differences between the updated contact info and the current call log contact info.
+     *
+     * @param number The number of the contact.
+     * @param countryIso The country associated with this number.
+     * @param updatedInfo The updated contact info.
+     * @param callLogInfo The call log entry's current contact info.
+     */
+    public void updateCallLogContactInfo(String number, String countryIso, ContactInfo updatedInfo,
+            ContactInfo callLogInfo) {
+        if (!PermissionsUtil.hasPermission(mContext, android.Manifest.permission.WRITE_CALL_LOG)) {
+            return;
+        }
+
+        final ContentValues values = new ContentValues();
+        boolean needsUpdate = false;
+
+        if (callLogInfo != null) {
+            if (!TextUtils.equals(updatedInfo.name, callLogInfo.name)) {
+                values.put(Calls.CACHED_NAME, updatedInfo.name);
+                needsUpdate = true;
+            }
+
+            if (updatedInfo.type != callLogInfo.type) {
+                values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
+                needsUpdate = true;
+            }
+
+            if (!TextUtils.equals(updatedInfo.label, callLogInfo.label)) {
+                values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
+                needsUpdate = true;
+            }
+
+            if (!UriUtils.areEqual(updatedInfo.lookupUri, callLogInfo.lookupUri)) {
+                values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
+                needsUpdate = true;
+            }
+
+            // Only replace the normalized number if the new updated normalized number isn't empty.
+            if (!TextUtils.isEmpty(updatedInfo.normalizedNumber) &&
+                    !TextUtils.equals(updatedInfo.normalizedNumber, callLogInfo.normalizedNumber)) {
+                values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
+                needsUpdate = true;
+            }
+
+            if (!TextUtils.equals(updatedInfo.number, callLogInfo.number)) {
+                values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
+                needsUpdate = true;
+            }
+
+            if (updatedInfo.photoId != callLogInfo.photoId) {
+                values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
+                needsUpdate = true;
+            }
+
+            final Uri updatedPhotoUriContactsOnly =
+                    UriUtils.nullForNonContactsUri(updatedInfo.photoUri);
+            if (DialerCompatUtils.isCallsCachedPhotoUriCompatible() &&
+                    !UriUtils.areEqual(updatedPhotoUriContactsOnly, callLogInfo.photoUri)) {
+                values.put(Calls.CACHED_PHOTO_URI,
+                        UriUtils.uriToString(updatedPhotoUriContactsOnly));
+                needsUpdate = true;
+            }
+
+            if (!TextUtils.equals(updatedInfo.formattedNumber, callLogInfo.formattedNumber)) {
+                values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
+                needsUpdate = true;
+            }
+        } else {
+            // No previous values, store all of them.
+            values.put(Calls.CACHED_NAME, updatedInfo.name);
+            values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
+            values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
+            values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
+            values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
+            values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
+            values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
+            if (DialerCompatUtils.isCallsCachedPhotoUriCompatible()) {
+                values.put(Calls.CACHED_PHOTO_URI, UriUtils.uriToString(
+                        UriUtils.nullForNonContactsUri(updatedInfo.photoUri)));
+            }
+            values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
+            needsUpdate = true;
+        }
+
+        if (!needsUpdate) {
+            return;
+        }
+
+        try {
+            if (countryIso == null) {
+                mContext.getContentResolver().update(
+                        TelecomUtil.getCallLogUri(mContext),
+                        values,
+                        Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " IS NULL",
+                        new String[]{ number });
+            } else {
+                mContext.getContentResolver().update(
+                        TelecomUtil.getCallLogUri(mContext),
+                        values,
+                        Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " = ?",
+                        new String[]{ number, countryIso });
+            }
+        } catch (SQLiteFullException e) {
+            Log.e(TAG, "Unable to update contact info in call log db", e);
+        }
+    }
+
+    public static Uri getContactInfoLookupUri(String number) {
+        return getContactInfoLookupUri(number, -1);
+    }
+
+    public static Uri getContactInfoLookupUri(String number, long directoryId) {
+        // Get URI for the number in the PhoneLookup table, with a parameter to indicate whether
+        // the number is a SIP number.
+        Uri uri = PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI;
+        if (!ContactsUtils.FLAG_N_FEATURE) {
+            if (directoryId != -1) {
+                // ENTERPRISE_CONTENT_FILTER_URI in M doesn't support directory lookup
+                uri = PhoneLookup.CONTENT_FILTER_URI;
+            } else {
+                // b/25900607 in M. PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, encodes twice.
+                number = Uri.encode(number);
+            }
+        }
+        Uri.Builder builder = uri.buildUpon()
+                .appendPath(number)
+                .appendQueryParameter(PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS,
+                String.valueOf(PhoneNumberHelper.isUriNumber(number)));
+        if (directoryId != -1) {
+            builder.appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+                    String.valueOf(directoryId));
+        }
+        return builder.build();
+    }
+
+    /**
+     * Returns the contact information stored in an entry of the call log.
+     *
+     * @param c A cursor pointing to an entry in the call log.
+     */
+    public static ContactInfo getContactInfo(Cursor c) {
+        ContactInfo info = new ContactInfo();
+        info.lookupUri = UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_LOOKUP_URI));
+        info.name = c.getString(CallLogQuery.CACHED_NAME);
+        info.type = c.getInt(CallLogQuery.CACHED_NUMBER_TYPE);
+        info.label = c.getString(CallLogQuery.CACHED_NUMBER_LABEL);
+        String matchedNumber = c.getString(CallLogQuery.CACHED_MATCHED_NUMBER);
+        String postDialDigits = PhoneNumberDisplayUtil.canShowPostDial()
+                ? c.getString(CallLogQuery.POST_DIAL_DIGITS) : "";
+        info.number = (matchedNumber == null) ?
+                c.getString(CallLogQuery.NUMBER) + postDialDigits : matchedNumber;
+
+        info.normalizedNumber = c.getString(CallLogQuery.CACHED_NORMALIZED_NUMBER);
+        info.photoId = c.getLong(CallLogQuery.CACHED_PHOTO_ID);
+        info.photoUri = DialerCompatUtils.isCallsCachedPhotoUriCompatible() ?
+                UriUtils.nullForNonContactsUri(
+                        UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_PHOTO_URI)))
+                : null;
+        info.formattedNumber = c.getString(CallLogQuery.CACHED_FORMATTED_NUMBER);
+
+        return info;
+    }
+
+    /**
+     * Given a contact's sourceType, return true if the contact is a business
+     *
+     * @param sourceType sourceType of the contact. This is usually populated by
+     *        {@link #mCachedNumberLookupService}.
+     */
+    public boolean isBusiness(int sourceType) {
+        return mCachedNumberLookupService != null
+                && mCachedNumberLookupService.isBusiness(sourceType);
+    }
+
+    /**
+     * This function looks at a contact's source and determines if the user can
+     * mark caller ids from this source as invalid.
+     *
+     * @param sourceType The source type to be checked
+     * @param objectId The ID of the Contact object.
+     * @return true if contacts from this source can be marked with an invalid caller id
+     */
+    public boolean canReportAsInvalid(int sourceType, String objectId) {
+        return mCachedNumberLookupService != null
+                && mCachedNumberLookupService.canReportAsInvalid(sourceType, objectId);
+    }
+}
diff --git a/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
new file mode 100644
index 0000000..db82295
--- /dev/null
+++ b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.calllog;
+
+import static android.Manifest.permission.READ_CALL_LOG;
+import static android.Manifest.permission.READ_CONTACTS;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.compat.TelephonyManagerCompat;
+import com.google.common.collect.Maps;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.net.Uri;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.R;
+import com.android.dialer.calllog.CallLogNotificationsHelper.NewCall;
+import com.android.dialer.filterednumber.FilteredNumbersUtil;
+import com.android.dialer.list.ListsFragment;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Shows a voicemail notification in the status bar.
+ */
+public class DefaultVoicemailNotifier {
+    public static final String TAG = "VoicemailNotifier";
+
+    /** The tag used to identify notifications from this class. */
+    private static final String NOTIFICATION_TAG = "DefaultVoicemailNotifier";
+    /** The identifier of the notification of new voicemails. */
+    private static final int NOTIFICATION_ID = 1;
+
+    /** The singleton instance of {@link DefaultVoicemailNotifier}. */
+    private static DefaultVoicemailNotifier sInstance;
+
+    private final Context mContext;
+
+    /** Returns the singleton instance of the {@link DefaultVoicemailNotifier}. */
+    public static DefaultVoicemailNotifier getInstance(Context context) {
+        if (sInstance == null) {
+            ContentResolver contentResolver = context.getContentResolver();
+            sInstance = new DefaultVoicemailNotifier(context);
+        }
+        return sInstance;
+    }
+
+    private DefaultVoicemailNotifier(Context context) {
+        mContext = context;
+    }
+
+    /**
+     * Updates the notification and notifies of the call with the given URI.
+     *
+     * Clears the notification if there are no new voicemails, and notifies if the given URI
+     * corresponds to a new voicemail.
+     *
+     * It is not safe to call this method from the main thread.
+     */
+    public void updateNotification(Uri newCallUri) {
+        // Lookup the list of new voicemails to include in the notification.
+        // TODO: Move this into a service, to avoid holding the receiver up.
+        final List<NewCall> newCalls =
+                CallLogNotificationsHelper.getInstance(mContext).getNewVoicemails();
+
+        if (newCalls == null) {
+            // Query failed, just return.
+            return;
+        }
+
+        if (newCalls.isEmpty()) {
+            // No voicemails to notify about: clear the notification.
+            getNotificationManager().cancel(NOTIFICATION_TAG, NOTIFICATION_ID);
+            return;
+        }
+
+        Resources resources = mContext.getResources();
+
+        // This represents a list of names to include in the notification.
+        String callers = null;
+
+        // Maps each number into a name: if a number is in the map, it has already left a more
+        // recent voicemail.
+        final Map<String, String> names = Maps.newHashMap();
+
+        // Determine the call corresponding to the new voicemail we have to notify about.
+        NewCall callToNotify = null;
+
+        // Iterate over the new voicemails to determine all the information above.
+        Iterator<NewCall> itr = newCalls.iterator();
+        while (itr.hasNext()) {
+            NewCall newCall = itr.next();
+
+            // Skip notifying for numbers which are blocked.
+            if (FilteredNumbersUtil.shouldBlockVoicemail(
+                    mContext, newCall.number, newCall.countryIso, newCall.dateMs)) {
+                itr.remove();
+
+                // Delete the voicemail.
+                mContext.getContentResolver().delete(newCall.voicemailUri, null, null);
+                continue;
+            }
+
+            // Check if we already know the name associated with this number.
+            String name = names.get(newCall.number);
+            if (name == null) {
+                name = CallLogNotificationsHelper.getInstance(mContext).getName(newCall.number,
+                        newCall.numberPresentation, newCall.countryIso);
+                names.put(newCall.number, name);
+                // This is a new caller. Add it to the back of the list of callers.
+                if (TextUtils.isEmpty(callers)) {
+                    callers = name;
+                } else {
+                    callers = resources.getString(
+                            R.string.notification_voicemail_callers_list, callers, name);
+                }
+            }
+            // Check if this is the new call we need to notify about.
+            if (newCallUri != null && newCall.voicemailUri != null &&
+                    ContentUris.parseId(newCallUri) == ContentUris.parseId(newCall.voicemailUri)) {
+                callToNotify = newCall;
+            }
+        }
+
+        // All the potential new voicemails have been removed, e.g. if they were spam.
+        if (newCalls.isEmpty()) {
+            return;
+        }
+
+        // If there is only one voicemail, set its transcription as the "long text".
+        String transcription = null;
+        if (newCalls.size() == 1) {
+            transcription = newCalls.get(0).transcription;
+        }
+
+        if (newCallUri != null && callToNotify == null) {
+            Log.e(TAG, "The new call could not be found in the call log: " + newCallUri);
+        }
+
+        // Determine the title of the notification and the icon for it.
+        final String title = resources.getQuantityString(
+                R.plurals.notification_voicemail_title, newCalls.size(), newCalls.size());
+        // TODO: Use the photo of contact if all calls are from the same person.
+        final int icon = android.R.drawable.stat_notify_voicemail;
+
+        Uri ringtoneUri = null;
+        int notificationDefaults = 0;
+        if (callToNotify != null) {
+            PhoneAccountHandle accountHandle = new PhoneAccountHandle(
+                    ComponentName.unflattenFromString(callToNotify.accountComponentName),
+                    callToNotify.accountId);
+            ringtoneUri = TelephonyManagerCompat
+                    .getVoicemailRingtoneUri(getTelephonyManager(), accountHandle);
+            if (ContactsUtils.FLAG_N_FEATURE) {
+                notificationDefaults = TelephonyManagerCompat.isVoicemailVibrationEnabled(
+                        getTelephonyManager(), accountHandle)
+                        ? Notification.DEFAULT_VIBRATE : 0;
+            } else {
+                notificationDefaults = Notification.DEFAULT_ALL;
+            }
+        }
+
+        Notification.Builder notificationBuilder = new Notification.Builder(mContext)
+                .setSmallIcon(icon)
+                .setContentTitle(title)
+                .setContentText(callers)
+                .setStyle(new Notification.BigTextStyle().bigText(transcription))
+                .setColor(resources.getColor(R.color.dialer_theme_color))
+                .setSound(ringtoneUri)
+                .setDefaults(notificationDefaults)
+                .setDeleteIntent(createMarkNewVoicemailsAsOldIntent())
+                .setAutoCancel(true);
+
+        // Determine the intent to fire when the notification is clicked on.
+        final Intent contentIntent;
+        // Open the call log.
+        contentIntent = new Intent(mContext, DialtactsActivity.class);
+        contentIntent.putExtra(DialtactsActivity.EXTRA_SHOW_TAB, ListsFragment.TAB_INDEX_VOICEMAIL);
+        notificationBuilder.setContentIntent(PendingIntent.getActivity(
+                mContext, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT));
+
+        // The text to show in the ticker, describing the new event.
+        if (callToNotify != null) {
+            CharSequence msg = ContactDisplayUtils.getTtsSpannedPhoneNumber(
+                    resources,
+                    R.string.notification_new_voicemail_ticker,
+                    names.get(callToNotify.number));
+            notificationBuilder.setTicker(msg);
+        }
+
+        getNotificationManager().notify(NOTIFICATION_TAG, NOTIFICATION_ID,
+                notificationBuilder.build());
+    }
+
+    /** Creates a pending intent that marks all new voicemails as old. */
+    private PendingIntent createMarkNewVoicemailsAsOldIntent() {
+        Intent intent = new Intent(mContext, CallLogNotificationsService.class);
+        intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD);
+        return PendingIntent.getService(mContext, 0, intent, 0);
+    }
+
+    private NotificationManager getNotificationManager() {
+        return (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+    }
+
+    private TelephonyManager getTelephonyManager() {
+        return (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+    }
+}
diff --git a/src/com/android/dialer/calllog/GroupingListAdapter.java b/src/com/android/dialer/calllog/GroupingListAdapter.java
new file mode 100644
index 0000000..70190df
--- /dev/null
+++ b/src/com/android/dialer/calllog/GroupingListAdapter.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog;
+
+import android.content.Context;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.database.DataSetObserver;
+import android.os.Handler;
+import android.support.v7.widget.RecyclerView;
+import android.util.SparseIntArray;
+
+/**
+ * Maintains a list that groups items into groups of consecutive elements which are disjoint,
+ * that is, an item can only belong to one group. This is leveraged for grouping calls in the
+ * call log received from or made to the same phone number.
+ *
+ * There are two integers stored as metadata for every list item in the adapter.
+ */
+abstract class GroupingListAdapter extends RecyclerView.Adapter {
+
+    private Context mContext;
+    private Cursor mCursor;
+
+    /**
+     * SparseIntArray, which maps the cursor position of the first element of a group to the size
+     * of the group. The index of a key in this map corresponds to the list position of that group.
+     */
+    private SparseIntArray mGroupMetadata;
+    private int mItemCount;
+
+    protected ContentObserver mChangeObserver = new ContentObserver(new Handler()) {
+        @Override
+        public boolean deliverSelfNotifications() {
+            return true;
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            onContentChanged();
+        }
+    };
+
+    protected DataSetObserver mDataSetObserver = new DataSetObserver() {
+        @Override
+        public void onChanged() {
+            notifyDataSetChanged();
+        }
+    };
+
+    public GroupingListAdapter(Context context) {
+        mContext = context;
+        reset();
+    }
+
+    /**
+     * Finds all groups of adjacent items in the cursor and calls {@link #addGroup} for
+     * each of them.
+     */
+    protected abstract void addGroups(Cursor cursor);
+
+    protected abstract void onContentChanged();
+
+    public void changeCursor(Cursor cursor) {
+        if (cursor == mCursor) {
+            return;
+        }
+
+        if (mCursor != null) {
+            mCursor.unregisterContentObserver(mChangeObserver);
+            mCursor.unregisterDataSetObserver(mDataSetObserver);
+            mCursor.close();
+        }
+
+        // Reset whenever the cursor is changed.
+        reset();
+        mCursor = cursor;
+
+        if (cursor != null) {
+            addGroups(mCursor);
+
+            // Calculate the item count by subtracting group child counts from the cursor count.
+            mItemCount = mGroupMetadata.size();
+
+            cursor.registerContentObserver(mChangeObserver);
+            cursor.registerDataSetObserver(mDataSetObserver);
+            notifyDataSetChanged();
+        }
+    }
+
+    /**
+     * Records information about grouping in the list.
+     * Should be called by the overridden {@link #addGroups} method.
+     */
+    public void addGroup(int cursorPosition, int groupSize) {
+        int lastIndex = mGroupMetadata.size() - 1;
+        if (lastIndex < 0 || cursorPosition <= mGroupMetadata.keyAt(lastIndex)) {
+            mGroupMetadata.put(cursorPosition, groupSize);
+        } else {
+            // Optimization to avoid binary search if adding groups in ascending cursor position.
+            mGroupMetadata.append(cursorPosition, groupSize);
+        }
+    }
+
+    @Override
+    public int getItemCount() {
+        return mItemCount;
+    }
+
+    /**
+     * Given the position of a list item, returns the size of the group of items corresponding to
+     * that position.
+     */
+    public int getGroupSize(int listPosition) {
+        if (listPosition < 0 || listPosition >= mGroupMetadata.size()) {
+            return 0;
+        }
+
+        return mGroupMetadata.valueAt(listPosition);
+    }
+
+    /**
+     * Given the position of a list item, returns the the first item in the group of items
+     * corresponding to that position.
+     */
+    public Object getItem(int listPosition) {
+        if (mCursor == null || listPosition < 0 || listPosition >= mGroupMetadata.size()) {
+            return null;
+        }
+
+        int cursorPosition = mGroupMetadata.keyAt(listPosition);
+        if (mCursor.moveToPosition(cursorPosition)) {
+            return mCursor;
+        } else {
+            return null;
+        }
+    }
+
+    private void reset() {
+        mItemCount = 0;
+        mGroupMetadata = new SparseIntArray();
+    }
+}
diff --git a/src/com/android/dialer/calllog/IntentProvider.java b/src/com/android/dialer/calllog/IntentProvider.java
new file mode 100644
index 0000000..773436b
--- /dev/null
+++ b/src/com/android/dialer/calllog/IntentProvider.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.ContentValues;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.telecom.PhoneAccountHandle;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.model.Contact;
+import com.android.contacts.common.model.ContactLoader;
+import com.android.dialer.CallDetailActivity;
+import com.android.dialer.util.IntentUtil;
+import com.android.dialer.util.IntentUtil.CallIntentBuilder;
+import com.android.dialer.util.TelecomUtil;
+import com.android.incallui.Call.LogState;
+
+import java.util.ArrayList;
+
+/**
+ * Used to create an intent to attach to an action in the call log.
+ * <p>
+ * The intent is constructed lazily with the given information.
+ */
+public abstract class IntentProvider {
+
+    private static final String TAG = IntentProvider.class.getSimpleName();
+
+    public abstract Intent getIntent(Context context);
+
+    public static IntentProvider getReturnCallIntentProvider(final String number) {
+        return getReturnCallIntentProvider(number, null);
+    }
+
+    public static IntentProvider getReturnCallIntentProvider(final String number,
+            final PhoneAccountHandle accountHandle) {
+        return new IntentProvider() {
+            @Override
+            public Intent getIntent(Context context) {
+                return new CallIntentBuilder(number)
+                        .setPhoneAccountHandle(accountHandle)
+                        .setCallInitiationType(LogState.INITIATION_CALL_LOG)
+                        .build();
+            }
+        };
+    }
+
+    public static IntentProvider getReturnVideoCallIntentProvider(final String number) {
+        return getReturnVideoCallIntentProvider(number, null);
+    }
+
+    public static IntentProvider getReturnVideoCallIntentProvider(final String number,
+            final PhoneAccountHandle accountHandle) {
+        return new IntentProvider() {
+            @Override
+            public Intent getIntent(Context context) {
+                return new CallIntentBuilder(number)
+                        .setPhoneAccountHandle(accountHandle)
+                        .setCallInitiationType(LogState.INITIATION_CALL_LOG)
+                        .setIsVideoCall(true)
+                        .build();
+            }
+        };
+    }
+
+    public static IntentProvider getReturnVoicemailCallIntentProvider() {
+        return new IntentProvider() {
+            @Override
+            public Intent getIntent(Context context) {
+                return new CallIntentBuilder(CallUtil.getVoicemailUri())
+                        .setCallInitiationType(LogState.INITIATION_CALL_LOG)
+                        .build();
+            }
+        };
+    }
+
+    public static IntentProvider getSendSmsIntentProvider(final String number) {
+        return new IntentProvider() {
+            @Override
+            public Intent getIntent(Context context) {
+                return IntentUtil.getSendSmsIntent(number);
+            }
+        };
+    }
+
+    /**
+     * Retrieves the call details intent provider for an entry in the call log.
+     *
+     * @param id The call ID of the first call in the call group.
+     * @param extraIds The call ID of the other calls grouped together with the call.
+     * @param voicemailUri If call log entry is for a voicemail, the voicemail URI.
+     * @return The call details intent provider.
+     */
+    public static IntentProvider getCallDetailIntentProvider(
+            final long id, final long[] extraIds, final String voicemailUri) {
+        return new IntentProvider() {
+            @Override
+            public Intent getIntent(Context context) {
+                Intent intent = new Intent(context, CallDetailActivity.class);
+                // Check if the first item is a voicemail.
+                if (voicemailUri != null) {
+                    intent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI,
+                            Uri.parse(voicemailUri));
+                }
+
+                if (extraIds != null && extraIds.length > 0) {
+                    intent.putExtra(CallDetailActivity.EXTRA_CALL_LOG_IDS, extraIds);
+                } else {
+                    // If there is a single item, use the direct URI for it.
+                    intent.setData(ContentUris.withAppendedId(TelecomUtil.getCallLogUri(context),
+                            id));
+                }
+                return intent;
+            }
+        };
+    }
+
+    /**
+     * Retrieves an add contact intent for the given contact and phone call details.
+     */
+    public static IntentProvider getAddContactIntentProvider(
+            final Uri lookupUri,
+            final CharSequence name,
+            final CharSequence number,
+            final int numberType,
+            final boolean isNewContact) {
+        return new IntentProvider() {
+            @Override
+            public Intent getIntent(Context context) {
+                Contact contactToSave = null;
+
+                if (lookupUri != null) {
+                    contactToSave = ContactLoader.parseEncodedContactEntity(lookupUri);
+                }
+
+                if (contactToSave != null) {
+                    // Populate the intent with contact information stored in the lookup URI.
+                    // Note: This code mirrors code in Contacts/QuickContactsActivity.
+                    final Intent intent;
+                    if (isNewContact) {
+                        intent = IntentUtil.getNewContactIntent();
+                    } else {
+                        intent = IntentUtil.getAddToExistingContactIntent();
+                    }
+
+                    ArrayList<ContentValues> values = contactToSave.getContentValues();
+                    // Only pre-fill the name field if the provided display name is an nickname
+                    // or better (e.g. structured name, nickname)
+                    if (contactToSave.getDisplayNameSource()
+                            >= ContactsContract.DisplayNameSources.NICKNAME) {
+                        intent.putExtra(ContactsContract.Intents.Insert.NAME,
+                                contactToSave.getDisplayName());
+                    } else if (contactToSave.getDisplayNameSource()
+                            == ContactsContract.DisplayNameSources.ORGANIZATION) {
+                        // This is probably an organization. Instead of copying the organization
+                        // name into a name entry, copy it into the organization entry. This
+                        // way we will still consider the contact an organization.
+                        final ContentValues organization = new ContentValues();
+                        organization.put(ContactsContract.CommonDataKinds.Organization.COMPANY,
+                                contactToSave.getDisplayName());
+                        organization.put(ContactsContract.Data.MIMETYPE,
+                                ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
+                        values.add(organization);
+                    }
+
+                    // Last time used and times used are aggregated values from the usage stat
+                    // table. They need to be removed from data values so the SQL table can insert
+                    // properly
+                    for (ContentValues value : values) {
+                        value.remove(ContactsContract.Data.LAST_TIME_USED);
+                        value.remove(ContactsContract.Data.TIMES_USED);
+                    }
+
+                    intent.putExtra(ContactsContract.Intents.Insert.DATA, values);
+
+                    return intent;
+                } else {
+                    // If no lookup uri is provided, rely on the available phone number and name.
+                    if (isNewContact) {
+                        return IntentUtil.getNewContactIntent(name, number, numberType);
+                    } else {
+                        return IntentUtil.getAddToExistingContactIntent(name, number, numberType);
+                    }
+                }
+            }
+        };
+    }
+}
diff --git a/src/com/android/dialer/calllog/MissedCallNotificationReceiver.java b/src/com/android/dialer/calllog/MissedCallNotificationReceiver.java
new file mode 100644
index 0000000..86d6cb9
--- /dev/null
+++ b/src/com/android/dialer/calllog/MissedCallNotificationReceiver.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2016 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.dialer.calllog;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.telecom.TelecomManager;
+import android.util.Log;
+
+import com.android.dialer.calllog.CallLogNotificationsService;
+
+/**
+ * Receives broadcasts that should trigger a refresh of the missed call notification. This includes
+ * both an explicit broadcast from Telecom and a reboot.
+ */
+public class MissedCallNotificationReceiver extends BroadcastReceiver {
+    //TODO: Use compat class for these methods.
+    public static final String ACTION_SHOW_MISSED_CALLS_NOTIFICATION =
+            "android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION";
+
+    public static final String EXTRA_NOTIFICATION_COUNT =
+            "android.telecom.extra.NOTIFICATION_COUNT";
+
+    public static final String EXTRA_NOTIFICATION_PHONE_NUMBER =
+            "android.telecom.extra.NOTIFICATION_PHONE_NUMBER";
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        String action = intent.getAction();
+        if (!ACTION_SHOW_MISSED_CALLS_NOTIFICATION.equals(action)) {
+            return;
+        }
+
+        int count = intent.getIntExtra(EXTRA_NOTIFICATION_COUNT,
+                CallLogNotificationsService.UNKNOWN_MISSED_CALL_COUNT);
+        String number = intent.getStringExtra(EXTRA_NOTIFICATION_PHONE_NUMBER);
+        CallLogNotificationsService.updateMissedCallNotifications(context, count, number);
+    }
+}
diff --git a/src/com/android/dialer/calllog/MissedCallNotifier.java b/src/com/android/dialer/calllog/MissedCallNotifier.java
new file mode 100644
index 0000000..a9dfd44
--- /dev/null
+++ b/src/com/android/dialer/calllog/MissedCallNotifier.java
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2016 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.dialer.calllog;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.os.AsyncTask;
+import android.provider.CallLog.Calls;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.dialer.calllog.CallLogNotificationsHelper.NewCall;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.list.ListsFragment;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.IntentUtil;
+import com.android.dialer.util.IntentUtil.CallIntentBuilder;
+import com.android.dialer.R;
+
+import java.util.List;
+
+/**
+ * Creates a notification for calls that the user missed (neither answered nor rejected).
+ *
+ */
+public class MissedCallNotifier {
+    public static final String TAG = "MissedCallNotifier";
+
+    /** The tag used to identify notifications from this class. */
+    private static final String NOTIFICATION_TAG = "MissedCallNotifier";
+    /** The identifier of the notification of new missed calls. */
+    private static final int NOTIFICATION_ID = 1;
+    /** Preference file key for number of missed calls. */
+    private static final String MISSED_CALL_COUNT = "missed_call_count";
+
+    private static MissedCallNotifier sInstance;
+    private Context mContext;
+
+    /** Returns the singleton instance of the {@link MissedCallNotifier}. */
+    public static MissedCallNotifier getInstance(Context context) {
+        if (sInstance == null) {
+            sInstance = new MissedCallNotifier(context);
+        }
+        return sInstance;
+    }
+
+    private MissedCallNotifier(Context context) {
+        mContext = context;
+    }
+
+    public void updateMissedCallNotification(int count, String number) {
+        final int titleResId;
+        final String expandedText;  // The text in the notification's line 1 and 2.
+
+        final List<NewCall> newCalls =
+                CallLogNotificationsHelper.getInstance(mContext).getNewMissedCalls();
+
+        if (count == CallLogNotificationsService.UNKNOWN_MISSED_CALL_COUNT) {
+            if (newCalls == null) {
+                // If the intent did not contain a count, and we are unable to get a count from the
+                // call log, then no notification can be shown.
+                return;
+            }
+            count = newCalls.size();
+        }
+
+        if (count == 0) {
+            // No voicemails to notify about: clear the notification.
+            clearMissedCalls();
+            return;
+        }
+
+        // The call log has been updated, use that information preferentially.
+        boolean useCallLog = newCalls != null && newCalls.size() == count;
+        NewCall newestCall = useCallLog ? newCalls.get(0) : null;
+        long timeMs = useCallLog ? newestCall.dateMs : System.currentTimeMillis();
+
+        // Display the first line of the notification:
+        // 1 missed call: <caller name || handle>
+        // More than 1 missed call: <number of calls> + "missed calls"
+        if (count == 1) {
+            //TODO: look up caller ID that is not in contacts.
+            ContactInfo contactInfo = CallLogNotificationsHelper.getInstance(mContext)
+                    .getContactInfo(useCallLog ? newestCall.number : number,
+                            useCallLog ? newestCall.numberPresentation
+                                    : Calls.PRESENTATION_ALLOWED,
+                            useCallLog ? newestCall.countryIso : null);
+
+            titleResId = contactInfo.userType == ContactsUtils.USER_TYPE_WORK
+                    ? R.string.notification_missedWorkCallTitle
+                    : R.string.notification_missedCallTitle;
+
+            expandedText = contactInfo.name;
+        } else {
+            titleResId = R.string.notification_missedCallsTitle;
+            expandedText =
+                    mContext.getString(R.string.notification_missedCallsMsg, count);
+        }
+
+        // Create a public viewable version of the notification, suitable for display when sensitive
+        // notification content is hidden.
+        Notification.Builder publicBuilder = new Notification.Builder(mContext);
+        publicBuilder.setSmallIcon(android.R.drawable.stat_notify_missed_call)
+                .setColor(mContext.getResources().getColor(R.color.dialer_theme_color))
+                // Show "Phone" for notification title.
+                .setContentTitle(mContext.getText(R.string.userCallActivityLabel))
+                // Notification details shows that there are missed call(s), but does not reveal
+                // the missed caller information.
+                .setContentText(mContext.getText(titleResId))
+                .setContentIntent(createCallLogPendingIntent())
+                .setAutoCancel(true)
+                .setWhen(timeMs)
+                .setDeleteIntent(createClearMissedCallsPendingIntent());
+
+        // Create the notification suitable for display when sensitive information is showing.
+        Notification.Builder builder = new Notification.Builder(mContext);
+        builder.setSmallIcon(android.R.drawable.stat_notify_missed_call)
+                .setColor(mContext.getResources().getColor(R.color.dialer_theme_color))
+                .setContentTitle(mContext.getText(titleResId))
+                .setContentText(expandedText)
+                .setContentIntent(createCallLogPendingIntent())
+                .setAutoCancel(true)
+                .setWhen(timeMs)
+                .setDeleteIntent(createClearMissedCallsPendingIntent())
+                // Include a public version of the notification to be shown when the missed call
+                // notification is shown on the user's lock screen and they have chosen to hide
+                // sensitive notification information.
+                .setPublicVersion(publicBuilder.build());
+
+        // Add additional actions when there is only 1 missed call, like call-back and SMS.
+        if (count == 1) {
+            if (!TextUtils.isEmpty(number)
+                    && !TextUtils.equals(
+                    number, mContext.getString(R.string.handle_restricted))) {
+                builder.addAction(R.drawable.ic_phone_24dp,
+                        mContext.getString(R.string.notification_missedCall_call_back),
+                        createCallBackPendingIntent(number));
+
+                if (!PhoneNumberHelper.isUriNumber(number)) {
+                    builder.addAction(R.drawable.ic_message_24dp,
+                            mContext.getString(R.string.notification_missedCall_message),
+                            createSendSmsFromNotificationPendingIntent(number));
+                }
+            }
+            //TODO: add photo
+        }
+
+        Notification notification = builder.build();
+        configureLedOnNotification(notification);
+
+        Log.i(TAG, "Adding missed call notification.");
+        getNotificationMgr().notify(NOTIFICATION_TAG, NOTIFICATION_ID, notification);
+    }
+
+    private void clearMissedCalls() {
+        AsyncTask.execute(new Runnable() {
+            @Override
+            public void run() {
+                // Clear the list of new missed calls from the call log.
+                ContentValues values = new ContentValues();
+                values.put(Calls.NEW, 0);
+                values.put(Calls.IS_READ, 1);
+                StringBuilder where = new StringBuilder();
+                where.append(Calls.NEW);
+                where.append(" = 1 AND ");
+                where.append(Calls.TYPE);
+                where.append(" = ?");
+                try {
+                    mContext.getContentResolver().update(Calls.CONTENT_URI, values,
+                            where.toString(), new String[]{ Integer.toString(Calls.
+                            MISSED_TYPE) });
+                } catch (IllegalArgumentException e) {
+                    Log.w(TAG, "ContactsProvider update command failed", e);
+                }
+                getNotificationMgr().cancel(NOTIFICATION_TAG, NOTIFICATION_ID);
+            }
+        });
+    }
+
+    /**
+     * Trigger an intent to make a call from a missed call number.
+     */
+    public void callBackFromMissedCall(String number) {
+        closeSystemDialogs(mContext);
+        CallLogNotificationsHelper.removeMissedCallNotifications(mContext);
+        DialerUtils.startActivityWithErrorToast(
+                mContext,
+                new CallIntentBuilder(number)
+                        .build()
+                        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+    }
+
+    /**
+     * Trigger an intent to send an sms from a missed call number.
+     */
+    public void sendSmsFromMissedCall(String number) {
+        closeSystemDialogs(mContext);
+        CallLogNotificationsHelper.removeMissedCallNotifications(mContext);
+        DialerUtils.startActivityWithErrorToast(
+                mContext,
+                IntentUtil.getSendSmsIntent(number).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+    }
+
+    /**
+     * Creates a new pending intent that sends the user to the call log.
+     *
+     * @return The pending intent.
+     */
+    private PendingIntent createCallLogPendingIntent() {
+        Intent contentIntent = new Intent(mContext, DialtactsActivity.class);
+        contentIntent.putExtra(DialtactsActivity.EXTRA_SHOW_TAB, ListsFragment.TAB_INDEX_HISTORY);
+        return PendingIntent.getActivity(
+                mContext, 0, contentIntent,PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+
+    /** Creates a pending intent that marks all new missed calls as old. */
+    private PendingIntent createClearMissedCallsPendingIntent() {
+        Intent intent = new Intent(mContext, CallLogNotificationsService.class);
+        intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_MISSED_CALLS_AS_OLD);
+        return PendingIntent.getService(mContext, 0, intent, 0);
+    }
+
+    private PendingIntent createCallBackPendingIntent(String number) {
+        Intent intent = new Intent(mContext, CallLogNotificationsService.class);
+        intent.setAction(
+                CallLogNotificationsService.ACTION_CALL_BACK_FROM_MISSED_CALL_NOTIFICATION);
+        intent.putExtra(CallLogNotificationsService.EXTRA_MISSED_CALL_NUMBER, number);
+        return PendingIntent.getService(mContext, 0, intent, 0);
+    }
+
+    private PendingIntent createSendSmsFromNotificationPendingIntent(String number) {
+        Intent intent = new Intent(mContext, CallLogNotificationsService.class);
+        intent.setAction(
+                CallLogNotificationsService.ACTION_SEND_SMS_FROM_MISSED_CALL_NOTIFICATION);
+        intent.putExtra(CallLogNotificationsService.EXTRA_MISSED_CALL_NUMBER, number);
+        return PendingIntent.getService(mContext, 0, intent, 0);
+    }
+
+    /**
+     * Configures a notification to emit the blinky notification light.
+     */
+    private void configureLedOnNotification(Notification notification) {
+        notification.flags |= Notification.FLAG_SHOW_LIGHTS;
+        notification.defaults |= Notification.DEFAULT_LIGHTS;
+    }
+
+    /**
+     * Closes open system dialogs and the notification shade.
+     */
+    private void closeSystemDialogs(Context context) {
+        context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
+    }
+
+    private NotificationManager getNotificationMgr() {
+        return (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+    }
+}
diff --git a/src/com/android/dialer/calllog/PhoneAccountUtils.java b/src/com/android/dialer/calllog/PhoneAccountUtils.java
new file mode 100644
index 0000000..8c3985b
--- /dev/null
+++ b/src/com/android/dialer/calllog/PhoneAccountUtils.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2013 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.dialer.calllog;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.support.annotation.Nullable;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.dialer.util.TelecomUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Methods to help extract {@code PhoneAccount} information from database and Telecomm sources.
+ */
+public class PhoneAccountUtils {
+    /**
+     * Return a list of phone accounts that are subscription/SIM accounts.
+     */
+    public static List<PhoneAccountHandle> getSubscriptionPhoneAccounts(Context context) {
+        List<PhoneAccountHandle> subscriptionAccountHandles = new ArrayList<PhoneAccountHandle>();
+        final List<PhoneAccountHandle> accountHandles =
+                TelecomUtil.getCallCapablePhoneAccounts(context);
+        for (PhoneAccountHandle accountHandle : accountHandles) {
+            PhoneAccount account = TelecomUtil.getPhoneAccount(context, accountHandle);
+            if (account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
+                subscriptionAccountHandles.add(accountHandle);
+            }
+        }
+        return subscriptionAccountHandles;
+    }
+
+    /**
+     * Compose PhoneAccount object from component name and account id.
+     */
+    @Nullable
+    public static PhoneAccountHandle getAccount(@Nullable String componentString,
+            @Nullable String accountId) {
+        if (TextUtils.isEmpty(componentString) || TextUtils.isEmpty(accountId)) {
+            return null;
+        }
+        final ComponentName componentName = ComponentName.unflattenFromString(componentString);
+        return new PhoneAccountHandle(componentName, accountId);
+    }
+
+    /**
+     * Extract account label from PhoneAccount object.
+     */
+    @Nullable
+    public static String getAccountLabel(Context context,
+            @Nullable PhoneAccountHandle accountHandle) {
+        PhoneAccount account = getAccountOrNull(context, accountHandle);
+        if (account != null && account.getLabel() != null) {
+            return account.getLabel().toString();
+        }
+        return null;
+    }
+
+    /**
+     * Extract account color from PhoneAccount object.
+     */
+    public static int getAccountColor(Context context, @Nullable PhoneAccountHandle accountHandle) {
+        final PhoneAccount account = TelecomUtil.getPhoneAccount(context, accountHandle);
+
+        // For single-sim devices the PhoneAccount will be NO_HIGHLIGHT_COLOR by default, so it is
+        // safe to always use the account highlight color.
+        return account == null ? PhoneAccount.NO_HIGHLIGHT_COLOR : account.getHighlightColor();
+    }
+
+    /**
+     * Determine whether a phone account supports call subjects.
+     *
+     * @return {@code true} if call subjects are supported, {@code false} otherwise.
+     */
+    public static boolean getAccountSupportsCallSubject(Context context,
+            @Nullable PhoneAccountHandle accountHandle) {
+        final PhoneAccount account = TelecomUtil.getPhoneAccount(context, accountHandle);
+
+        return account == null ? false :
+                account.hasCapabilities(PhoneAccount.CAPABILITY_CALL_SUBJECT);
+    }
+
+    /**
+     * Retrieve the account metadata, but if the account does not exist or the device has only a
+     * single registered and enabled account, return null.
+     */
+    @Nullable
+    private static PhoneAccount getAccountOrNull(Context context,
+            @Nullable PhoneAccountHandle accountHandle) {
+        if (TelecomUtil.getCallCapablePhoneAccounts(context).size() <= 1) {
+            return null;
+        }
+        return TelecomUtil.getPhoneAccount(context, accountHandle);
+    }
+}
diff --git a/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java b/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
new file mode 100644
index 0000000..e6b8508
--- /dev/null
+++ b/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
@@ -0,0 +1,331 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.collect.Lists;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Typeface;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v4.content.ContextCompat;
+import android.telecom.PhoneAccount;
+import android.text.TextUtils;
+import android.text.format.DateUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.R;
+import com.android.dialer.calllog.calllogcache.CallLogCache;
+import com.android.dialer.util.DialerUtils;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+
+/**
+ * Helper class to fill in the views in {@link PhoneCallDetailsViews}.
+ */
+public class PhoneCallDetailsHelper {
+
+    /** The maximum number of icons will be shown to represent the call types in a group. */
+    private static final int MAX_CALL_TYPE_ICONS = 3;
+
+    private final Context mContext;
+    private final Resources mResources;
+    /** The injected current time in milliseconds since the epoch. Used only by tests. */
+    private Long mCurrentTimeMillisForTest;
+
+    private CharSequence mPhoneTypeLabelForTest;
+
+    private final CallLogCache mCallLogCache;
+
+    /** Calendar used to construct dates */
+    private final Calendar mCalendar;
+
+    /**
+     * List of items to be concatenated together for accessibility descriptions
+     */
+    private ArrayList<CharSequence> mDescriptionItems = Lists.newArrayList();
+
+    /**
+     * Creates a new instance of the helper.
+     * <p>
+     * Generally you should have a single instance of this helper in any context.
+     *
+     * @param resources used to look up strings
+     */
+    public PhoneCallDetailsHelper(
+            Context context,
+            Resources resources,
+            CallLogCache callLogCache) {
+        mContext = context;
+        mResources = resources;
+        mCallLogCache = callLogCache;
+        mCalendar = Calendar.getInstance();
+    }
+
+    /** Fills the call details views with content. */
+    public void setPhoneCallDetails(PhoneCallDetailsViews views, PhoneCallDetails details) {
+        // Display up to a given number of icons.
+        views.callTypeIcons.clear();
+        int count = details.callTypes.length;
+        boolean isVoicemail = false;
+        for (int index = 0; index < count && index < MAX_CALL_TYPE_ICONS; ++index) {
+            views.callTypeIcons.add(details.callTypes[index]);
+            if (index == 0) {
+                isVoicemail = details.callTypes[index] == Calls.VOICEMAIL_TYPE;
+            }
+        }
+
+        // Show the video icon if the call had video enabled.
+        views.callTypeIcons.setShowVideo(
+                (details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO);
+        views.callTypeIcons.requestLayout();
+        views.callTypeIcons.setVisibility(View.VISIBLE);
+
+        // Show the total call count only if there are more than the maximum number of icons.
+        final Integer callCount;
+        if (count > MAX_CALL_TYPE_ICONS) {
+            callCount = count;
+        } else {
+            callCount = null;
+        }
+
+        CharSequence callLocationAndDate = getCallLocationAndDate(details);
+
+        // Set the call count, location and date.
+        setCallCountAndDate(views, callCount, callLocationAndDate);
+
+        // Set the account label if it exists.
+        String accountLabel = mCallLogCache.getAccountLabel(details.accountHandle);
+
+        if (accountLabel != null) {
+            views.callAccountLabel.setVisibility(View.VISIBLE);
+            views.callAccountLabel.setText(accountLabel);
+            int color = mCallLogCache.getAccountColor(details.accountHandle);
+            if (color == PhoneAccount.NO_HIGHLIGHT_COLOR) {
+                int defaultColor = R.color.dialtacts_secondary_text_color;
+                views.callAccountLabel.setTextColor(mContext.getResources().getColor(defaultColor));
+            } else {
+                views.callAccountLabel.setTextColor(color);
+            }
+        } else {
+            views.callAccountLabel.setVisibility(View.GONE);
+        }
+
+        final CharSequence nameText;
+        final CharSequence displayNumber = details.displayNumber;
+        if (TextUtils.isEmpty(details.getPreferredName())) {
+            nameText = displayNumber;
+            // We have a real phone number as "nameView" so make it always LTR
+            views.nameView.setTextDirection(View.TEXT_DIRECTION_LTR);
+        } else {
+            nameText = details.getPreferredName();
+        }
+
+        views.nameView.setText(nameText);
+
+        if (isVoicemail) {
+            views.voicemailTranscriptionView.setText(TextUtils.isEmpty(details.transcription) ? null
+                    : details.transcription);
+        }
+
+        // Bold if not read
+        Typeface typeface = details.isRead ? Typeface.SANS_SERIF : Typeface.DEFAULT_BOLD;
+        views.nameView.setTypeface(typeface);
+        views.voicemailTranscriptionView.setTypeface(typeface);
+        views.callLocationAndDate.setTypeface(typeface);
+        views.callLocationAndDate.setTextColor(ContextCompat.getColor(mContext, details.isRead ?
+                R.color.call_log_detail_color : R.color.call_log_unread_text_color));
+    }
+
+    /**
+     * Builds a string containing the call location and date. For voicemail logs only the call date
+     * is returned because location information is displayed in the call action button
+     *
+     * @param details The call details.
+     * @return The call location and date string.
+     */
+    private CharSequence getCallLocationAndDate(PhoneCallDetails details) {
+        mDescriptionItems.clear();
+
+        if (details.callTypes[0] != Calls.VOICEMAIL_TYPE) {
+            // Get type of call (ie mobile, home, etc) if known, or the caller's location.
+            CharSequence callTypeOrLocation = getCallTypeOrLocation(details);
+
+            // Only add the call type or location if its not empty.  It will be empty for unknown
+            // callers.
+            if (!TextUtils.isEmpty(callTypeOrLocation)) {
+                mDescriptionItems.add(callTypeOrLocation);
+            }
+        }
+
+        // The date of this call
+        mDescriptionItems.add(getCallDate(details));
+
+        // Create a comma separated list from the call type or location, and call date.
+        return DialerUtils.join(mResources, mDescriptionItems);
+    }
+
+    /**
+     * For a call, if there is an associated contact for the caller, return the known call type
+     * (e.g. mobile, home, work).  If there is no associated contact, attempt to use the caller's
+     * location if known.
+     *
+     * @param details Call details to use.
+     * @return Type of call (mobile/home) if known, or the location of the caller (if known).
+     */
+    public CharSequence getCallTypeOrLocation(PhoneCallDetails details) {
+        CharSequence numberFormattedLabel = null;
+        // Only show a label if the number is shown and it is not a SIP address.
+        if (!TextUtils.isEmpty(details.number)
+                && !PhoneNumberHelper.isUriNumber(details.number.toString())
+                && !mCallLogCache.isVoicemailNumber(details.accountHandle, details.number)) {
+
+            if (TextUtils.isEmpty(details.namePrimary) && !TextUtils.isEmpty(details.geocode)) {
+                numberFormattedLabel = details.geocode;
+            } else if (!(details.numberType == Phone.TYPE_CUSTOM
+                    && TextUtils.isEmpty(details.numberLabel))) {
+                // Get type label only if it will not be "Custom" because of an empty number label.
+                numberFormattedLabel = MoreObjects.firstNonNull(mPhoneTypeLabelForTest,
+                        Phone.getTypeLabel(mResources, details.numberType, details.numberLabel));
+            }
+        }
+
+        if (!TextUtils.isEmpty(details.namePrimary) && TextUtils.isEmpty(numberFormattedLabel)) {
+            numberFormattedLabel = details.displayNumber;
+        }
+        return numberFormattedLabel;
+    }
+
+    @NeededForTesting
+    public void setPhoneTypeLabelForTest(CharSequence phoneTypeLabel) {
+        this.mPhoneTypeLabelForTest = phoneTypeLabel;
+    }
+
+    /**
+     * Get the call date/time of the call. For the call log this is relative to the current time.
+     * e.g. 3 minutes ago. For voicemail, see {@link #getGranularDateTime(PhoneCallDetails)}
+     *
+     * @param details Call details to use.
+     * @return String representing when the call occurred.
+     */
+    public CharSequence getCallDate(PhoneCallDetails details) {
+        if (details.callTypes[0] == Calls.VOICEMAIL_TYPE) {
+            return getGranularDateTime(details);
+        }
+
+        return DateUtils.getRelativeTimeSpanString(details.date, getCurrentTimeMillis(),
+                DateUtils.MINUTE_IN_MILLIS, DateUtils.FORMAT_ABBREV_RELATIVE);
+    }
+
+    /**
+     * Get the granular version of the call date/time of the call. The result is always in the form
+     * 'DATE at TIME'. The date value changes based on when the call was created.
+     *
+     * If created today, DATE is 'Today'
+     * If created this year, DATE is 'MMM dd'
+     * Otherwise, DATE is 'MMM dd, yyyy'
+     *
+     * TIME is the localized time format, e.g. 'hh:mm a' or 'HH:mm'
+     *
+     * @param details Call details to use
+     * @return String representing when the call occurred
+     */
+    public CharSequence getGranularDateTime(PhoneCallDetails details) {
+        return mResources.getString(R.string.voicemailCallLogDateTimeFormat,
+                getGranularDate(details.date),
+                DateUtils.formatDateTime(mContext, details.date, DateUtils.FORMAT_SHOW_TIME));
+    }
+
+    /**
+     * Get the granular version of the call date. See {@link #getGranularDateTime(PhoneCallDetails)}
+     */
+    private String getGranularDate(long date) {
+        if (DateUtils.isToday(date)) {
+            return mResources.getString(R.string.voicemailCallLogToday);
+        }
+        return DateUtils.formatDateTime(mContext, date, DateUtils.FORMAT_SHOW_DATE
+                | DateUtils.FORMAT_ABBREV_MONTH
+                | (shouldShowYear(date) ? DateUtils.FORMAT_SHOW_YEAR : DateUtils.FORMAT_NO_YEAR));
+    }
+
+    /**
+     * Determines whether the year should be shown for the given date
+     *
+     * @return {@code true} if date is within the current year, {@code false} otherwise
+     */
+    private boolean shouldShowYear(long date) {
+        mCalendar.setTimeInMillis(getCurrentTimeMillis());
+        int currentYear = mCalendar.get(Calendar.YEAR);
+        mCalendar.setTimeInMillis(date);
+        return currentYear != mCalendar.get(Calendar.YEAR);
+    }
+
+    /** Sets the text of the header view for the details page of a phone call. */
+    @NeededForTesting
+    public void setCallDetailsHeader(TextView nameView, PhoneCallDetails details) {
+        final CharSequence nameText;
+        if (!TextUtils.isEmpty(details.namePrimary)) {
+            nameText = details.namePrimary;
+        } else if (!TextUtils.isEmpty(details.displayNumber)) {
+            nameText = details.displayNumber;
+        } else {
+            nameText = mResources.getString(R.string.unknown);
+        }
+
+        nameView.setText(nameText);
+    }
+
+    @NeededForTesting
+    public void setCurrentTimeForTest(long currentTimeMillis) {
+        mCurrentTimeMillisForTest = currentTimeMillis;
+    }
+
+    /**
+     * Returns the current time in milliseconds since the epoch.
+     * <p>
+     * It can be injected in tests using {@link #setCurrentTimeForTest(long)}.
+     */
+    private long getCurrentTimeMillis() {
+        if (mCurrentTimeMillisForTest == null) {
+            return System.currentTimeMillis();
+        } else {
+            return mCurrentTimeMillisForTest;
+        }
+    }
+
+    /** Sets the call count and date. */
+    private void setCallCountAndDate(PhoneCallDetailsViews views, Integer callCount,
+            CharSequence dateText) {
+        // Combine the count (if present) and the date.
+        final CharSequence text;
+        if (callCount != null) {
+            text = mResources.getString(
+                    R.string.call_log_item_count_and_date, callCount.intValue(), dateText);
+        } else {
+            text = dateText;
+        }
+
+        views.callLocationAndDate.setText(text);
+    }
+}
diff --git a/src/com/android/dialer/calllog/PhoneCallDetailsViews.java b/src/com/android/dialer/calllog/PhoneCallDetailsViews.java
new file mode 100644
index 0000000..94f4411
--- /dev/null
+++ b/src/com/android/dialer/calllog/PhoneCallDetailsViews.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.dialer.R;
+
+/**
+ * Encapsulates the views that are used to display the details of a phone call in the call log.
+ */
+public final class PhoneCallDetailsViews {
+    public final TextView nameView;
+    public final View callTypeView;
+    public final CallTypeIconsView callTypeIcons;
+    public final TextView callLocationAndDate;
+    public final TextView voicemailTranscriptionView;
+    public final TextView callAccountLabel;
+
+    private PhoneCallDetailsViews(TextView nameView, View callTypeView,
+            CallTypeIconsView callTypeIcons, TextView callLocationAndDate,
+            TextView voicemailTranscriptionView, TextView callAccountLabel) {
+        this.nameView = nameView;
+        this.callTypeView = callTypeView;
+        this.callTypeIcons = callTypeIcons;
+        this.callLocationAndDate = callLocationAndDate;
+        this.voicemailTranscriptionView = voicemailTranscriptionView;
+        this.callAccountLabel = callAccountLabel;
+    }
+
+    /**
+     * Create a new instance by extracting the elements from the given view.
+     * <p>
+     * The view should contain three text views with identifiers {@code R.id.name},
+     * {@code R.id.date}, and {@code R.id.number}, and a linear layout with identifier
+     * {@code R.id.call_types}.
+     */
+    public static PhoneCallDetailsViews fromView(View view) {
+        return new PhoneCallDetailsViews((TextView) view.findViewById(R.id.name),
+                view.findViewById(R.id.call_type),
+                (CallTypeIconsView) view.findViewById(R.id.call_type_icons),
+                (TextView) view.findViewById(R.id.call_location_and_date),
+                (TextView) view.findViewById(R.id.voicemail_transcription),
+                (TextView) view.findViewById(R.id.call_account_label));
+    }
+
+    public static PhoneCallDetailsViews createForTest(Context context) {
+        return new PhoneCallDetailsViews(
+                new TextView(context),
+                new View(context),
+                new CallTypeIconsView(context),
+                new TextView(context),
+                new TextView(context),
+                new TextView(context));
+    }
+}
diff --git a/src/com/android/dialer/calllog/PhoneNumberDisplayUtil.java b/src/com/android/dialer/calllog/PhoneNumberDisplayUtil.java
new file mode 100644
index 0000000..09b42e9
--- /dev/null
+++ b/src/com/android/dialer/calllog/PhoneNumberDisplayUtil.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.Context;
+import android.os.Build;
+import android.provider.CallLog.Calls;
+import android.text.TextUtils;
+
+import com.android.dialer.R;
+import com.android.dialer.util.PhoneNumberUtil;
+
+/**
+ * Helper for formatting and managing the display of phone numbers.
+ */
+public class PhoneNumberDisplayUtil {
+
+    /**
+     * Returns the string to display for the given phone number if there is no matching contact.
+     */
+    /* package */ static CharSequence getDisplayName(
+            Context context,
+            CharSequence number,
+            int presentation,
+            boolean isVoicemail) {
+        if (presentation == Calls.PRESENTATION_UNKNOWN) {
+            return context.getResources().getString(R.string.unknown);
+        }
+        if (presentation == Calls.PRESENTATION_RESTRICTED) {
+            return context.getResources().getString(R.string.private_num);
+        }
+        if (presentation == Calls.PRESENTATION_PAYPHONE) {
+            return context.getResources().getString(R.string.payphone);
+        }
+        if (isVoicemail) {
+            return context.getResources().getString(R.string.voicemail);
+        }
+        if (PhoneNumberUtil.isLegacyUnknownNumbers(number)) {
+            return context.getResources().getString(R.string.unknown);
+        }
+        return "";
+    }
+
+    /**
+     * Returns the string to display for the given phone number.
+     *
+     * @param number the number to display
+     * @param formattedNumber the formatted number if available, may be null
+     */
+    public static CharSequence getDisplayNumber(
+            Context context,
+            CharSequence number,
+            int presentation,
+            CharSequence formattedNumber,
+            CharSequence postDialDigits,
+            boolean isVoicemail) {
+        final CharSequence displayName = getDisplayName(context, number, presentation, isVoicemail);
+        if (!TextUtils.isEmpty(displayName)) {
+            return displayName;
+        }
+
+        if (!TextUtils.isEmpty(formattedNumber)) {
+            return formattedNumber;
+        } else if (!TextUtils.isEmpty(number)) {
+            return number.toString() + postDialDigits;
+        } else {
+            return context.getResources().getString(R.string.unknown);
+        }
+    }
+
+    /**
+     * Returns whether we can expect the post-dial digits to be in the call log.
+     *
+     * These digits will be present in versions N+.
+     */
+    public static boolean canShowPostDial() {
+        return Build.VERSION.SDK_INT > Build.VERSION_CODES.M;
+    }
+}
diff --git a/src/com/android/dialer/calllog/PhoneQuery.java b/src/com/android/dialer/calllog/PhoneQuery.java
new file mode 100644
index 0000000..200b5e1
--- /dev/null
+++ b/src/com/android/dialer/calllog/PhoneQuery.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.PhoneLookup;
+
+/**
+ * The queries to look up the {@link ContactInfo} for a given number in the Call Log.
+ */
+final class PhoneQuery {
+
+    /**
+     * Projection to look up the ContactInfo. Does not include DISPLAY_NAME_ALTERNATIVE as that
+     * column isn't available in ContactsCommon.PhoneLookup
+     */
+    public static final String[] PHONE_LOOKUP_PROJECTION = new String[] {
+            PhoneLookup._ID,
+            PhoneLookup.DISPLAY_NAME,
+            PhoneLookup.TYPE,
+            PhoneLookup.LABEL,
+            PhoneLookup.NUMBER,
+            PhoneLookup.NORMALIZED_NUMBER,
+            PhoneLookup.PHOTO_ID,
+            PhoneLookup.LOOKUP_KEY,
+            PhoneLookup.PHOTO_URI};
+
+    public static final int PERSON_ID = 0;
+    public static final int NAME = 1;
+    public static final int PHONE_TYPE = 2;
+    public static final int LABEL = 3;
+    public static final int MATCHED_NUMBER = 4;
+    public static final int NORMALIZED_NUMBER = 5;
+    public static final int PHOTO_ID = 6;
+    public static final int LOOKUP_KEY = 7;
+    public static final int PHOTO_URI = 8;
+
+    /**
+     * Projection to look up a contact's DISPLAY_NAME_ALTERNATIVE
+     */
+    public static final String[] DISPLAY_NAME_ALTERNATIVE_PROJECTION = new String[] {
+            Contacts.DISPLAY_NAME_ALTERNATIVE,
+    };
+
+    public static final int NAME_ALTERNATIVE = 0;
+}
diff --git a/src/com/android/dialer/calllog/PromoCardViewHolder.java b/src/com/android/dialer/calllog/PromoCardViewHolder.java
new file mode 100644
index 0000000..f5a7501
--- /dev/null
+++ b/src/com/android/dialer/calllog/PromoCardViewHolder.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog;
+
+import android.content.Context;
+import android.support.v7.widget.CardView;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.dialer.R;
+
+/**
+ * Generic ViewHolder class for a promo card with a primary and secondary action.
+ * Example: the promo card which appears in the voicemail tab.
+ */
+public class PromoCardViewHolder extends RecyclerView.ViewHolder {
+    public static PromoCardViewHolder create(View rootView) {
+        return new PromoCardViewHolder(rootView);
+    }
+
+    /**
+     * The primary action button view.
+     */
+    private View mPrimaryActionView;
+
+    /**
+     * The secondary action button view.
+     * The "Ok" button view.
+     */
+    private View mSecondaryActionView;
+
+    /**
+     * Creates an instance of the {@link ViewHolder}.
+     *
+     * @param rootView The root view.
+     */
+    private PromoCardViewHolder(View rootView) {
+        super(rootView);
+
+        mPrimaryActionView = rootView.findViewById(R.id.primary_action);
+        mSecondaryActionView = rootView.findViewById(R.id.secondary_action);
+    }
+
+   /**
+     * Retrieves the "primary" action button (eg. "OK").
+     *
+     * @return The view.
+     */
+    public View getPrimaryActionView() {
+        return mPrimaryActionView;
+    }
+
+    /**
+     * Retrieves the "secondary" action button (eg. "Cancel" or "More Info").
+     *
+     * @return The view.
+     */
+    public View getSecondaryActionView() {
+        return mSecondaryActionView;
+    }
+
+    @NeededForTesting
+    public static PromoCardViewHolder createForTest(Context context) {
+        PromoCardViewHolder viewHolder = new PromoCardViewHolder(new View(context));
+        viewHolder.mPrimaryActionView = new View(context);
+        viewHolder.mSecondaryActionView = new View(context);
+        return viewHolder;
+    }
+}
diff --git a/src/com/android/dialer/calllog/VisualVoicemailCallLogFragment.java b/src/com/android/dialer/calllog/VisualVoicemailCallLogFragment.java
new file mode 100644
index 0000000..311ff7d
--- /dev/null
+++ b/src/com/android/dialer/calllog/VisualVoicemailCallLogFragment.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2016 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.dialer.calllog;
+
+import android.database.ContentObserver;
+import android.os.Bundle;
+import android.provider.CallLog;
+import android.provider.VoicemailContract;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.dialer.R;
+import com.android.dialer.list.ListsFragment;
+import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
+
+public class VisualVoicemailCallLogFragment extends CallLogFragment {
+
+    private VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
+    private final ContentObserver mVoicemailStatusObserver = new CustomContentObserver();
+
+    public VisualVoicemailCallLogFragment() {
+        super(CallLog.Calls.VOICEMAIL_TYPE);
+    }
+
+    @Override
+    public void onCreate(Bundle state) {
+        super.onCreate(state);
+        mVoicemailPlaybackPresenter = VoicemailPlaybackPresenter.getInstance(getActivity(), state);
+        getActivity().getContentResolver().registerContentObserver(
+                VoicemailContract.Status.CONTENT_URI, true, mVoicemailStatusObserver);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
+        View view = inflater.inflate(R.layout.call_log_fragment, container, false);
+        setupView(view, mVoicemailPlaybackPresenter);
+        return view;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mVoicemailPlaybackPresenter.onResume();
+    }
+
+    @Override
+    public void onPause() {
+        mVoicemailPlaybackPresenter.onPause();
+        super.onPause();
+    }
+
+    @Override
+    public void onDestroy() {
+        mVoicemailPlaybackPresenter.onDestroy();
+        getActivity().getContentResolver().unregisterContentObserver(mVoicemailStatusObserver);
+        super.onDestroy();
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        mVoicemailPlaybackPresenter.onSaveInstanceState(outState);
+    }
+
+    @Override
+    public void fetchCalls() {
+        super.fetchCalls();
+        ((ListsFragment) getParentFragment()).updateTabUnreadCounts();
+    }
+}
diff --git a/src/com/android/dialer/calllog/VoicemailQueryHandler.java b/src/com/android/dialer/calllog/VoicemailQueryHandler.java
new file mode 100644
index 0000000..c6e644c
--- /dev/null
+++ b/src/com/android/dialer/calllog/VoicemailQueryHandler.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.calllog;
+
+import android.content.AsyncQueryHandler;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.CallLog.Calls;
+import android.util.Log;
+
+/**
+ * Handles asynchronous queries to the call log for voicemail.
+ */
+public class VoicemailQueryHandler extends AsyncQueryHandler {
+    private static final String TAG = "VoicemailQueryHandler";
+
+    /** The token for the query to mark all new voicemails as old. */
+    private static final int UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN = 50;
+    private Context mContext;
+
+    public VoicemailQueryHandler(Context context, ContentResolver contentResolver) {
+        super(contentResolver);
+        mContext = context;
+    }
+
+    /** Updates all new voicemails to mark them as old. */
+    public void markNewVoicemailsAsOld() {
+        // Mark all "new" voicemails as not new anymore.
+        StringBuilder where = new StringBuilder();
+        where.append(Calls.NEW);
+        where.append(" = 1 AND ");
+        where.append(Calls.TYPE);
+        where.append(" = ?");
+
+        ContentValues values = new ContentValues(1);
+        values.put(Calls.NEW, "0");
+
+        startUpdate(UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN, null, Calls.CONTENT_URI_WITH_VOICEMAIL,
+                values, where.toString(), new String[]{ Integer.toString(Calls.VOICEMAIL_TYPE) });
+    }
+
+    @Override
+    protected void onUpdateComplete(int token, Object cookie, int result) {
+        if (token == UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN) {
+            if (mContext != null) {
+                Intent serviceIntent = new Intent(mContext, CallLogNotificationsService.class);
+                serviceIntent.setAction(
+                        CallLogNotificationsService.ACTION_UPDATE_VOICEMAIL_NOTIFICATIONS);
+                mContext.startService(serviceIntent);
+            } else {
+                Log.w(TAG, "Unknown update completed: ignoring: " + token);
+            }
+        }
+    }
+}
diff --git a/src/com/android/dialer/calllog/calllogcache/CallLogCache.java b/src/com/android/dialer/calllog/calllogcache/CallLogCache.java
new file mode 100644
index 0000000..dc1217c
--- /dev/null
+++ b/src/com/android/dialer/calllog/calllogcache/CallLogCache.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog.calllogcache;
+
+import android.content.Context;
+import android.telecom.PhoneAccountHandle;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.dialer.calllog.CallLogAdapter;
+
+/**
+ * This is the base class for the CallLogCaches.
+ *
+ * Keeps a cache of recently made queries to the Telecom/Telephony processes. The aim of this cache
+ * is to reduce the number of cross-process requests to TelecomManager, which can negatively affect
+ * performance.
+ *
+ * This is designed with the specific use case of the {@link CallLogAdapter} in mind.
+ */
+public abstract class CallLogCache {
+    // TODO: Dialer should be fixed so as not to check isVoicemail() so often but at the time of
+    // this writing, that was a much larger undertaking than creating this cache.
+
+    protected final Context mContext;
+
+    private boolean mHasCheckedForVideoEnabled;
+    private boolean mIsVideoEnabled;
+
+    public CallLogCache(Context context) {
+        mContext = context;
+    }
+
+    /**
+     * Return the most compatible version of the TelecomCallLogCache.
+     */
+    public static CallLogCache getCallLogCache(Context context) {
+        if (CompatUtils.isClassAvailable("android.telecom.PhoneAccountHandle")) {
+            return new CallLogCacheLollipopMr1(context);
+        }
+        return new CallLogCacheLollipop(context);
+    }
+
+    public void reset() {
+        mHasCheckedForVideoEnabled = false;
+        mIsVideoEnabled = false;
+    }
+
+    /**
+     * Returns true if the given number is the number of the configured voicemail. To be able to
+     * mock-out this, it is not a static method.
+     */
+    public abstract boolean isVoicemailNumber(PhoneAccountHandle accountHandle,
+            CharSequence number);
+
+    public boolean isVideoEnabled() {
+        if (!mHasCheckedForVideoEnabled) {
+            mIsVideoEnabled = CallUtil.isVideoEnabled(mContext);
+            mHasCheckedForVideoEnabled = true;
+        }
+        return mIsVideoEnabled;
+    }
+
+    /**
+     * Extract account label from PhoneAccount object.
+     */
+    public abstract String getAccountLabel(PhoneAccountHandle accountHandle);
+
+    /**
+     * Extract account color from PhoneAccount object.
+     */
+    public abstract int getAccountColor(PhoneAccountHandle accountHandle);
+
+    /**
+     * Determines if the PhoneAccount supports specifying a call subject (i.e. calling with a note)
+     * for outgoing calls.
+     *
+     * @param accountHandle The PhoneAccount handle.
+     * @return {@code true} if calling with a note is supported, {@code false} otherwise.
+     */
+    public abstract boolean doesAccountSupportCallSubject(PhoneAccountHandle accountHandle);
+}
diff --git a/src/com/android/dialer/calllog/calllogcache/CallLogCacheLollipop.java b/src/com/android/dialer/calllog/calllogcache/CallLogCacheLollipop.java
new file mode 100644
index 0000000..770cc9d
--- /dev/null
+++ b/src/com/android/dialer/calllog/calllogcache/CallLogCacheLollipop.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog.calllogcache;
+
+import android.content.Context;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+
+/**
+ * This is a compatibility class for the CallLogCache for versions of dialer before Lollipop Mr1
+ * (the introduction of phone accounts).
+ *
+ * This class should not be initialized directly and instead be acquired from
+ * {@link CallLogCache#getCallLogCache}.
+ */
+class CallLogCacheLollipop extends CallLogCache {
+    private String mVoicemailNumber;
+
+    /* package */ CallLogCacheLollipop(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean isVoicemailNumber(PhoneAccountHandle accountHandle, CharSequence number) {
+        if (TextUtils.isEmpty(number)) {
+            return false;
+        }
+
+        String numberString = number.toString();
+
+        if (!TextUtils.isEmpty(mVoicemailNumber)) {
+            return PhoneNumberUtils.compare(numberString, mVoicemailNumber);
+        }
+
+        if (PhoneNumberUtils.isVoiceMailNumber(numberString)) {
+            mVoicemailNumber = numberString;
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
+    public String getAccountLabel(PhoneAccountHandle accountHandle) {
+        return null;
+    }
+
+    @Override
+    public int getAccountColor(PhoneAccountHandle accountHandle) {
+        return PhoneAccount.NO_HIGHLIGHT_COLOR;
+    }
+
+    @Override
+    public boolean doesAccountSupportCallSubject(PhoneAccountHandle accountHandle) {
+        return false;
+    }
+}
diff --git a/src/com/android/dialer/calllog/calllogcache/CallLogCacheLollipopMr1.java b/src/com/android/dialer/calllog/calllogcache/CallLogCacheLollipopMr1.java
new file mode 100644
index 0000000..d1e3f7b
--- /dev/null
+++ b/src/com/android/dialer/calllog/calllogcache/CallLogCacheLollipopMr1.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2013 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.dialer.calllog.calllogcache;
+
+import android.content.Context;
+import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
+import android.util.Pair;
+
+import com.android.dialer.calllog.PhoneAccountUtils;
+import com.android.dialer.util.PhoneNumberUtil;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * This is the CallLogCache for versions of dialer Lollipop Mr1 and above with support for
+ * multi-SIM devices.
+ *
+ * This class should not be initialized directly and instead be acquired from
+ * {@link CallLogCache#getCallLogCache}.
+ */
+class CallLogCacheLollipopMr1 extends CallLogCache {
+    // Maps from a phone-account/number pair to a boolean because multiple numbers could return true
+    // for the voicemail number if those numbers are not pre-normalized.
+    private final Map<Pair<PhoneAccountHandle, CharSequence>, Boolean> mVoicemailQueryCache =
+            new HashMap<>();
+    private final Map<PhoneAccountHandle, String> mPhoneAccountLabelCache = new HashMap<>();
+    private final Map<PhoneAccountHandle, Integer> mPhoneAccountColorCache = new HashMap<>();
+    private final Map<PhoneAccountHandle, Boolean> mPhoneAccountCallWithNoteCache = new HashMap<>();
+
+    /* package */ CallLogCacheLollipopMr1(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void reset() {
+        mVoicemailQueryCache.clear();
+        mPhoneAccountLabelCache.clear();
+        mPhoneAccountColorCache.clear();
+        mPhoneAccountCallWithNoteCache.clear();
+
+        super.reset();
+    }
+
+    @Override
+    public boolean isVoicemailNumber(PhoneAccountHandle accountHandle, CharSequence number) {
+        if (TextUtils.isEmpty(number)) {
+            return false;
+        }
+
+        Pair<PhoneAccountHandle, CharSequence> key = new Pair<>(accountHandle, number);
+        if (mVoicemailQueryCache.containsKey(key)) {
+            return mVoicemailQueryCache.get(key);
+        } else {
+            Boolean isVoicemail =
+                    PhoneNumberUtil.isVoicemailNumber(mContext, accountHandle, number.toString());
+            mVoicemailQueryCache.put(key, isVoicemail);
+            return isVoicemail;
+        }
+    }
+
+    @Override
+    public String getAccountLabel(PhoneAccountHandle accountHandle) {
+        if (mPhoneAccountLabelCache.containsKey(accountHandle)) {
+            return mPhoneAccountLabelCache.get(accountHandle);
+        } else {
+            String label = PhoneAccountUtils.getAccountLabel(mContext, accountHandle);
+            mPhoneAccountLabelCache.put(accountHandle, label);
+            return label;
+        }
+    }
+
+    @Override
+    public int getAccountColor(PhoneAccountHandle accountHandle) {
+        if (mPhoneAccountColorCache.containsKey(accountHandle)) {
+            return mPhoneAccountColorCache.get(accountHandle);
+        } else {
+            Integer color = PhoneAccountUtils.getAccountColor(mContext, accountHandle);
+            mPhoneAccountColorCache.put(accountHandle, color);
+            return color;
+        }
+    }
+
+    @Override
+    public boolean doesAccountSupportCallSubject(PhoneAccountHandle accountHandle) {
+        if (mPhoneAccountCallWithNoteCache.containsKey(accountHandle)) {
+            return mPhoneAccountCallWithNoteCache.get(accountHandle);
+        } else {
+            Boolean supportsCallWithNote =
+                    PhoneAccountUtils.getAccountSupportsCallSubject(mContext, accountHandle);
+            mPhoneAccountCallWithNoteCache.put(accountHandle, supportsCallWithNote);
+            return supportsCallWithNote;
+        }
+    }
+}
diff --git a/src/com/android/dialer/compat/CallAudioStateCompat.java b/src/com/android/dialer/compat/CallAudioStateCompat.java
new file mode 100644
index 0000000..51009d0
--- /dev/null
+++ b/src/com/android/dialer/compat/CallAudioStateCompat.java
@@ -0,0 +1,331 @@
+/*
+ * Copyright (C) 2015 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.dialer.compat;
+
+import android.os.Build;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.telecom.CallAudioState;
+
+import com.android.contacts.common.compat.SdkVersionOverride;
+
+import java.util.Locale;
+
+/**
+ * Compatibility class for {@link CallAudioState}
+ */
+public class CallAudioStateCompat {
+
+    /**
+     * Direct the audio stream through the device's earpiece.
+     */
+    public static final int ROUTE_EARPIECE = CallAudioState.ROUTE_EARPIECE;
+
+    /**
+     * Direct the audio stream through Bluetooth.
+     */
+    public static final int ROUTE_BLUETOOTH = CallAudioState.ROUTE_BLUETOOTH;
+
+    /**
+     * Direct the audio stream through a wired headset.
+     */
+    public static final int ROUTE_WIRED_HEADSET = CallAudioState.ROUTE_WIRED_HEADSET;
+
+    /**
+     * Direct the audio stream through the device's speakerphone.
+     */
+    public static final int ROUTE_SPEAKER = CallAudioState.ROUTE_SPEAKER;
+
+    /**
+     * Direct the audio stream through the device's earpiece or wired headset if one is connected.
+     */
+    public static final int ROUTE_WIRED_OR_EARPIECE = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
+
+    private final CallAudioStateImpl mCallAudioState;
+
+    /**
+     * Constructor for a {@link CallAudioStateCompat} object.
+     *
+     * @param muted {@code true} if the call is muted, {@code false} otherwise.
+     * @param route The current audio route being used. Allowed values: {@link #ROUTE_EARPIECE}
+     * {@link #ROUTE_BLUETOOTH} {@link #ROUTE_WIRED_HEADSET} {@link #ROUTE_SPEAKER}
+     * @param supportedRouteMask Bit mask of all routes supported by this call. This should be a
+     * bitwise combination of the following values: {@link #ROUTE_EARPIECE} {@link #ROUTE_BLUETOOTH}
+     * {@link #ROUTE_WIRED_HEADSET} {@link #ROUTE_SPEAKER}
+     */
+    public CallAudioStateCompat(boolean muted, int route, int supportedRouteMask) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M)
+                < Build.VERSION_CODES.M) {
+            mCallAudioState = new CallAudioStateBase(muted, route, supportedRouteMask);
+        } else {
+            mCallAudioState = new CallAudioStateMarshmallow(muted, route, supportedRouteMask);
+        }
+    }
+
+    /**
+     * @return {@code true} if the call is muted, {@code false} otherwise.
+     */
+    public boolean isMuted() {
+        return mCallAudioState.isMuted();
+    }
+
+    /**
+     * @return The current audio route being used.
+     */
+    public int getRoute() {
+        return mCallAudioState.getRoute();
+    }
+
+    /**
+     * @return Bit mask of all routes supported by this call.
+     */
+    public int getSupportedRouteMask() {
+        return mCallAudioState.getSupportedRouteMask();
+    }
+
+    /**
+     * Converts the provided audio route into a human readable string representation.
+     *
+     * @param route to convert into a string.
+     * @return String representation of the provided audio route.
+     */
+    public static String audioRouteToString(int route) {
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M)
+                < Build.VERSION_CODES.M) {
+            return CallAudioStateBase.audioRouteToString(route);
+        }
+        return CallAudioStateMarshmallow.audioRouteToString(route);
+    }
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        CallAudioStateCompat that = (CallAudioStateCompat) o;
+
+        return mCallAudioState.equals(that.mCallAudioState);
+
+    }
+
+    @Override
+    public int hashCode() {
+        return mCallAudioState.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return mCallAudioState.toString();
+    }
+
+    private interface CallAudioStateImpl {
+        boolean isMuted();
+        int getRoute();
+        int getSupportedRouteMask();
+    }
+
+    /**
+     * CallAudioStateImpl to use if the Sdk version is lower than
+     * {@link android.os.Build.VERSION_CODES.M}
+     *
+     * Coped from {@link android.telecom.CallAudioState}
+     *
+     * Encapsulates the telecom audio state, including the current audio routing, supported audio
+     * routing and mute.
+     */
+    private static class CallAudioStateBase implements CallAudioStateImpl, Parcelable {
+
+        /**
+         * Bit mask of all possible audio routes.
+         */
+        private static final int ROUTE_ALL = ROUTE_EARPIECE | ROUTE_BLUETOOTH | ROUTE_WIRED_HEADSET
+                | ROUTE_SPEAKER;
+
+        private final boolean isMuted;
+        private final int route;
+        private final int supportedRouteMask;
+
+        /**
+         * Constructor for a {@link CallAudioStateBase} object.
+         *
+         * @param muted {@code true} if the call is muted, {@code false} otherwise.
+         * @param route The current audio route being used. Allowed values: {@link #ROUTE_EARPIECE}
+         *      {@link #ROUTE_BLUETOOTH}, {@link #ROUTE_WIRED_HEADSET}, {@link #ROUTE_SPEAKER}
+         * @param supportedRouteMask Bit mask of all routes supported by this call. This should be a
+         *      bitwise combination of the following values: {@link #ROUTE_EARPIECE},
+         *      {@link #ROUTE_BLUETOOTH}, {@link #ROUTE_WIRED_HEADSET}, {@link #ROUTE_SPEAKER}
+         */
+        public CallAudioStateBase(boolean muted, int route, int supportedRouteMask) {
+            this.isMuted = muted;
+            this.route = route;
+            this.supportedRouteMask = supportedRouteMask;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == null) {
+                return false;
+            }
+            if (!(obj instanceof CallAudioStateBase)) {
+                return false;
+            }
+            CallAudioStateBase state = (CallAudioStateBase) obj;
+            return isMuted() == state.isMuted() && getRoute() == state.getRoute() &&
+                    getSupportedRouteMask() == state.getSupportedRouteMask();
+        }
+
+        @Override
+        public String toString() {
+            return String.format(Locale.US,
+                    "[AudioState isMuted: %b, route: %s, supportedRouteMask: %s]",
+                    isMuted,
+                    audioRouteToString(route),
+                    audioRouteToString(supportedRouteMask));
+        }
+
+        /**
+         * @return {@code true} if the call is muted, {@code false} otherwise.
+         */
+        @Override
+        public boolean isMuted() {
+            return isMuted;
+        }
+
+        /**
+         * @return The current audio route being used.
+         */
+        public int getRoute() {
+            return route;
+        }
+
+        /**
+         * @return Bit mask of all routes supported by this call.
+         */
+        public int getSupportedRouteMask() {
+            return supportedRouteMask;
+        }
+
+        /**
+         * Converts the provided audio route into a human readable string representation.
+         *
+         * @param route to convert into a string.
+         * @return String representation of the provided audio route.
+         */
+        public static String audioRouteToString(int route) {
+            if (route == 0 || (route & ~ROUTE_ALL) != 0x0) {
+                return "UNKNOWN";
+            }
+
+            StringBuffer buffer = new StringBuffer();
+            if ((route & ROUTE_EARPIECE) == ROUTE_EARPIECE) {
+                listAppend(buffer, "EARPIECE");
+            }
+            if ((route & ROUTE_BLUETOOTH) == ROUTE_BLUETOOTH) {
+                listAppend(buffer, "BLUETOOTH");
+            }
+            if ((route & ROUTE_WIRED_HEADSET) == ROUTE_WIRED_HEADSET) {
+                listAppend(buffer, "WIRED_HEADSET");
+            }
+            if ((route & ROUTE_SPEAKER) == ROUTE_SPEAKER) {
+                listAppend(buffer, "SPEAKER");
+            }
+
+            return buffer.toString();
+        }
+
+        /**
+         * Responsible for creating AudioState objects for deserialized Parcels.
+         */
+        public static final Parcelable.Creator<CallAudioStateBase> CREATOR =
+                new Parcelable.Creator<CallAudioStateBase>() {
+
+                    @Override
+                    public CallAudioStateBase createFromParcel(Parcel source) {
+                        boolean isMuted = source.readByte() == 0 ? false : true;
+                        int route = source.readInt();
+                        int supportedRouteMask = source.readInt();
+                        return new CallAudioStateBase(isMuted, route, supportedRouteMask);
+                    }
+
+                    @Override
+                    public CallAudioStateBase[] newArray(int size) {
+                        return new CallAudioStateBase[size];
+                    }
+                };
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        /**
+         * Writes AudioState object into a serializeable Parcel.
+         */
+        @Override
+        public void writeToParcel(Parcel destination, int flags) {
+            destination.writeByte((byte) (isMuted ? 1 : 0));
+            destination.writeInt(route);
+            destination.writeInt(supportedRouteMask);
+        }
+
+        private static void listAppend(StringBuffer buffer, String str) {
+            if (buffer.length() > 0) {
+                buffer.append(", ");
+            }
+            buffer.append(str);
+        }
+    }
+
+    /**
+     * CallAudioStateImpl to use if the Sdk version is at least
+     * {@link android.os.Build.VERSION_CODES.M}
+     */
+    private static class CallAudioStateMarshmallow implements CallAudioStateImpl {
+
+        private final CallAudioState mCallAudioStateDelegate;
+
+        public CallAudioStateMarshmallow(boolean muted, int route, int supportedRouteMask) {
+            mCallAudioStateDelegate = new CallAudioState(muted, route, supportedRouteMask);
+        }
+
+        @Override
+        public boolean isMuted() {
+            return mCallAudioStateDelegate.isMuted();
+        }
+
+        @Override
+        public int getRoute() {
+            return mCallAudioStateDelegate.getRoute();
+        }
+
+        @Override
+        public int getSupportedRouteMask() {
+            return mCallAudioStateDelegate.getSupportedRouteMask();
+        }
+
+        public static String audioRouteToString(int route) {
+            return CallAudioState.audioRouteToString(route);
+        }
+    }
+}
diff --git a/src/com/android/dialer/compat/DialerCompatUtils.java b/src/com/android/dialer/compat/DialerCompatUtils.java
new file mode 100644
index 0000000..a9c9c53
--- /dev/null
+++ b/src/com/android/dialer/compat/DialerCompatUtils.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2015 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.dialer.compat;
+
+import com.android.contacts.common.compat.CompatUtils;
+
+public final class DialerCompatUtils {
+    /**
+     * Determines if this version has access to the
+     * {@link android.provider.CallLog.Calls.CACHED_PHOTO_URI} column
+     *
+     * @return {@code true} if {@link android.provider.CallLog.Calls.CACHED_PHOTO_URI} is available,
+     * {@code false} otherwise
+     */
+    public static boolean isCallsCachedPhotoUriCompatible() {
+        return CompatUtils.isMarshmallowCompatible();
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/dialer/compat/SettingsCompat.java b/src/com/android/dialer/compat/SettingsCompat.java
new file mode 100644
index 0000000..474a600
--- /dev/null
+++ b/src/com/android/dialer/compat/SettingsCompat.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2015 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.dialer.compat;
+
+import android.content.Context;
+import android.os.Build;
+import android.os.Build.VERSION_CODES;
+import android.provider.Settings;
+
+import com.android.contacts.common.compat.SdkVersionOverride;
+
+/**
+ * Compatibility class for {@link android.provider.Settings}
+ */
+public class SettingsCompat {
+
+    public static class System {
+
+        /**
+         * Compatibility version of {@link android.provider.Settings.System#canWrite(Context)}
+         *
+         * Note: Since checking preferences at runtime started in M, this method always returns
+         * {@code true} for SDK versions prior to 23. In those versions, the app wouldn't be
+         * installed if it didn't have the proper permission
+         */
+        public static boolean canWrite(Context context) {
+            if (SdkVersionOverride.getSdkVersion(VERSION_CODES.LOLLIPOP) >= Build.VERSION_CODES.M) {
+                return Settings.System.canWrite(context);
+            }
+            return true;
+        }
+    }
+
+}
diff --git a/src/com/android/dialer/compat/UserManagerCompat.java b/src/com/android/dialer/compat/UserManagerCompat.java
new file mode 100644
index 0000000..5767033
--- /dev/null
+++ b/src/com/android/dialer/compat/UserManagerCompat.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2015 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.dialer.compat;
+
+import android.content.Context;
+import android.os.Process;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import com.android.contacts.common.compat.CompatUtils;
+
+/**
+ * Compatibility class for {@link UserManager}.
+ */
+public class UserManagerCompat {
+    /**
+     * A user id constant to indicate the "system" user of the device. Copied from
+     * {@link UserHandle}.
+     */
+    private static final int USER_SYSTEM = 0;
+    /**
+     * Range of uids allocated for a user.
+     */
+    private static final int PER_USER_RANGE = 100000;
+
+    /**
+     * Used to check if this process is running under the system user. The system user is the
+     * initial user that is implicitly created on first boot and hosts most of the system services.
+     *
+     * @return whether this process is running under the system user.
+     */
+    public static boolean isSystemUser(UserManager userManager) {
+        if (CompatUtils.isMarshmallowCompatible()) {
+            return userManager.isSystemUser();
+        }
+        // Adapted from {@link UserManager} and {@link UserHandle}.
+        return (Process.myUid() / PER_USER_RANGE) == USER_SYSTEM;
+    }
+
+    /**
+     * Return whether the calling user is running in an "unlocked" state. A user
+     * is unlocked only after they've entered their credentials (such as a lock
+     * pattern or PIN), and credential-encrypted private app data storage is
+     * available.
+     *
+     * TODO b/26688153
+     *
+     * @param context the current context
+     * @return {@code true} if the user is unlocked, {@code false} otherwise
+     * @throws NullPointerException if context is null
+     */
+    public static boolean isUserUnlocked(Context context) {
+        if (CompatUtils.isNCompatible()) {
+            return UserManagerSdkCompat.isUserUnlocked(context);
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/dialer/contact/ContactUpdateService.java b/src/com/android/dialer/contact/ContactUpdateService.java
new file mode 100644
index 0000000..9edd198
--- /dev/null
+++ b/src/com/android/dialer/contact/ContactUpdateService.java
@@ -0,0 +1,51 @@
+/*
+ * 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.dialer.contact;
+
+import android.app.IntentService;
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.contacts.common.database.ContactUpdateUtils;
+
+/**
+ * Service for updating primary number on a contact.
+ */
+public class ContactUpdateService extends IntentService {
+
+    public static final String EXTRA_PHONE_NUMBER_DATA_ID = "phone_number_data_id";
+
+    public ContactUpdateService() {
+        super(ContactUpdateService.class.getSimpleName());
+        setIntentRedelivery(true);
+    }
+
+    /** Creates an intent that sets the selected data item as super primary (default) */
+    public static Intent createSetSuperPrimaryIntent(Context context, long dataId) {
+        Intent serviceIntent = new Intent(context, ContactUpdateService.class);
+        serviceIntent.putExtra(EXTRA_PHONE_NUMBER_DATA_ID, dataId);
+        return serviceIntent;
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        // Currently this service only handles one type of update.
+        long dataId = intent.getLongExtra(EXTRA_PHONE_NUMBER_DATA_ID, -1);
+
+        ContactUpdateUtils.setSuperPrimary(this, dataId);
+    }
+}
diff --git a/src/com/android/dialer/contactinfo/ContactInfoCache.java b/src/com/android/dialer/contactinfo/ContactInfoCache.java
new file mode 100644
index 0000000..1e24579
--- /dev/null
+++ b/src/com/android/dialer/contactinfo/ContactInfoCache.java
@@ -0,0 +1,333 @@
+/*
+ * Copyright (C) 2015 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.dialer.contactinfo;
+
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.util.ExpirableCache;
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.LinkedList;
+
+/**
+ * This is a cache of contact details for the phone numbers in the c all log. The key is the
+ * phone number with the country in which teh call was placed or received. The content of the
+ * cache is expired (but not purged) whenever the application comes to the foreground.
+ *
+ * This cache queues request for information and queries for information on a background thread,
+ * so {@code start()} and {@code stop()} must be called to initiate or halt that thread's exeuction
+ * as needed.
+ *
+ * TODO: Explore whether there is a pattern to remove external dependencies for starting and
+ * stopping the query thread.
+ */
+public class ContactInfoCache {
+    public interface OnContactInfoChangedListener {
+        public void onContactInfoChanged();
+    }
+
+    /*
+     * Handles requests for contact name and number type.
+     */
+    private class QueryThread extends Thread {
+        private volatile boolean mDone = false;
+
+        public QueryThread() {
+            super("ContactInfoCache.QueryThread");
+        }
+
+        public void stopProcessing() {
+            mDone = true;
+        }
+
+        @Override
+        public void run() {
+            boolean needRedraw = false;
+            while (true) {
+                // Check if thread is finished, and if so return immediately.
+                if (mDone) return;
+
+                // Obtain next request, if any is available.
+                // Keep synchronized section small.
+                ContactInfoRequest req = null;
+                synchronized (mRequests) {
+                    if (!mRequests.isEmpty()) {
+                        req = mRequests.removeFirst();
+                    }
+                }
+
+                if (req != null) {
+                    // Process the request. If the lookup succeeds, schedule a redraw.
+                    needRedraw |= queryContactInfo(req.number, req.countryIso, req.callLogInfo);
+                } else {
+                    // Throttle redraw rate by only sending them when there are
+                    // more requests.
+                    if (needRedraw) {
+                        needRedraw = false;
+                        mHandler.sendEmptyMessage(REDRAW);
+                    }
+
+                    // Wait until another request is available, or until this
+                    // thread is no longer needed (as indicated by being
+                    // interrupted).
+                    try {
+                        synchronized (mRequests) {
+                            mRequests.wait(1000);
+                        }
+                    } catch (InterruptedException ie) {
+                        // Ignore, and attempt to continue processing requests.
+                    }
+                }
+            }
+        }
+    }
+
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case REDRAW:
+                    mOnContactInfoChangedListener.onContactInfoChanged();
+                    break;
+                case START_THREAD:
+                    startRequestProcessing();
+                    break;
+            }
+        }
+    };
+
+    private static final int REDRAW = 1;
+    private static final int START_THREAD = 2;
+
+    private static final int CONTACT_INFO_CACHE_SIZE = 100;
+    private static final int START_PROCESSING_REQUESTS_DELAY_MS = 1000;
+
+
+    /**
+     * List of requests to update contact details. Each request contains a phone number to look up,
+     * and the contact info currently stored in the call log for this number.
+     *
+     * The requests are added when displaying contacts and are processed by a background thread.
+     */
+    private final LinkedList<ContactInfoRequest> mRequests;
+
+    private ExpirableCache<NumberWithCountryIso, ContactInfo> mCache;
+
+    private ContactInfoHelper mContactInfoHelper;
+    private QueryThread mContactInfoQueryThread;
+    private OnContactInfoChangedListener mOnContactInfoChangedListener;
+
+    public ContactInfoCache(ContactInfoHelper contactInfoHelper,
+            OnContactInfoChangedListener onContactInfoChangedListener) {
+        mContactInfoHelper = contactInfoHelper;
+        mOnContactInfoChangedListener = onContactInfoChangedListener;
+
+        mRequests = new LinkedList<ContactInfoRequest>();
+        mCache = ExpirableCache.create(CONTACT_INFO_CACHE_SIZE);
+    }
+
+    public ContactInfo getValue(String number, String countryIso, ContactInfo cachedContactInfo) {
+        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
+        ExpirableCache.CachedValue<ContactInfo> cachedInfo =
+                mCache.getCachedValue(numberCountryIso);
+        ContactInfo info = cachedInfo == null ? null : cachedInfo.getValue();
+        if (cachedInfo == null) {
+            mCache.put(numberCountryIso, ContactInfo.EMPTY);
+            // Use the cached contact info from the call log.
+            info = cachedContactInfo;
+            // The db request should happen on a non-UI thread.
+            // Request the contact details immediately since they are currently missing.
+            enqueueRequest(number, countryIso, cachedContactInfo, true);
+            // We will format the phone number when we make the background request.
+        } else {
+            if (cachedInfo.isExpired()) {
+                // The contact info is no longer up to date, we should request it. However, we
+                // do not need to request them immediately.
+                enqueueRequest(number, countryIso, cachedContactInfo, false);
+            } else if (!callLogInfoMatches(cachedContactInfo, info)) {
+                // The call log information does not match the one we have, look it up again.
+                // We could simply update the call log directly, but that needs to be done in a
+                // background thread, so it is easier to simply request a new lookup, which will, as
+                // a side-effect, update the call log.
+                enqueueRequest(number, countryIso, cachedContactInfo, false);
+            }
+
+            if (info == ContactInfo.EMPTY) {
+                // Use the cached contact info from the call log.
+                info = cachedContactInfo;
+            }
+        }
+        return info;
+    }
+
+    /**
+     * Queries the appropriate content provider for the contact associated with the number.
+     *
+     * Upon completion it also updates the cache in the call log, if it is different from
+     * {@code callLogInfo}.
+     *
+     * The number might be either a SIP address or a phone number.
+     *
+     * It returns true if it updated the content of the cache and we should therefore tell the
+     * view to update its content.
+     */
+    private boolean queryContactInfo(String number, String countryIso, ContactInfo callLogInfo) {
+        final ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso);
+
+        if (info == null) {
+            // The lookup failed, just return without requesting to update the view.
+            return false;
+        }
+
+        // Check the existing entry in the cache: only if it has changed we should update the
+        // view.
+        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
+        ContactInfo existingInfo = mCache.getPossiblyExpired(numberCountryIso);
+
+        final boolean isRemoteSource = info.sourceType != 0;
+
+        // Don't force redraw if existing info in the cache is equal to {@link ContactInfo#EMPTY}
+        // to avoid updating the data set for every new row that is scrolled into view.
+        // see (https://googleplex-android-review.git.corp.google.com/#/c/166680/)
+
+        // Exception: Photo uris for contacts from remote sources are not cached in the call log
+        // cache, so we have to force a redraw for these contacts regardless.
+        boolean updated = (existingInfo != ContactInfo.EMPTY || isRemoteSource) &&
+                !info.equals(existingInfo);
+
+        // Store the data in the cache so that the UI thread can use to display it. Store it
+        // even if it has not changed so that it is marked as not expired.
+        mCache.put(numberCountryIso, info);
+
+        // Update the call log even if the cache it is up-to-date: it is possible that the cache
+        // contains the value from a different call log entry.
+        mContactInfoHelper.updateCallLogContactInfo(number, countryIso, info, callLogInfo);
+        return updated;
+    }
+
+    /**
+     * After a delay, start the thread to begin processing requests. We perform lookups on a
+     * background thread, but this must be called to indicate the thread should be running.
+     */
+    public void start() {
+        // Schedule a thread-creation message if the thread hasn't been created yet, as an
+        // optimization to queue fewer messages.
+        if (mContactInfoQueryThread == null) {
+            // TODO: Check whether this delay before starting to process is necessary.
+            mHandler.sendEmptyMessageDelayed(START_THREAD, START_PROCESSING_REQUESTS_DELAY_MS);
+        }
+    }
+
+    /**
+     * Stops the thread and clears the queue of messages to process. This cleans up the thread
+     * for lookups so that it is not perpetually running.
+     */
+    public void stop() {
+        stopRequestProcessing();
+    }
+
+    /**
+     * Starts a background thread to process contact-lookup requests, unless one
+     * has already been started.
+     */
+    private synchronized void startRequestProcessing() {
+        // For unit-testing.
+        if (mRequestProcessingDisabled) return;
+
+        // If a thread is already started, don't start another.
+        if (mContactInfoQueryThread != null) {
+            return;
+        }
+
+        mContactInfoQueryThread = new QueryThread();
+        mContactInfoQueryThread.setPriority(Thread.MIN_PRIORITY);
+        mContactInfoQueryThread.start();
+    }
+
+    public void invalidate() {
+        mCache.expireAll();
+        stopRequestProcessing();
+    }
+
+    /**
+     * Stops the background thread that processes updates and cancels any
+     * pending requests to start it.
+     */
+    private synchronized void stopRequestProcessing() {
+        // Remove any pending requests to start the processing thread.
+        mHandler.removeMessages(START_THREAD);
+        if (mContactInfoQueryThread != null) {
+            // Stop the thread; we are finished with it.
+            mContactInfoQueryThread.stopProcessing();
+            mContactInfoQueryThread.interrupt();
+            mContactInfoQueryThread = null;
+        }
+    }
+
+    /**
+     * Enqueues a request to look up the contact details for the given phone number.
+     * <p>
+     * It also provides the current contact info stored in the call log for this number.
+     * <p>
+     * If the {@code immediate} parameter is true, it will start immediately the thread that looks
+     * up the contact information (if it has not been already started). Otherwise, it will be
+     * started with a delay. See {@link #START_PROCESSING_REQUESTS_DELAY_MILLIS}.
+     */
+    protected void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
+            boolean immediate) {
+        ContactInfoRequest request = new ContactInfoRequest(number, countryIso, callLogInfo);
+        synchronized (mRequests) {
+            if (!mRequests.contains(request)) {
+                mRequests.add(request);
+                mRequests.notifyAll();
+            }
+        }
+        if (immediate) {
+            startRequestProcessing();
+        }
+    }
+
+    /**
+     * Checks whether the contact info from the call log matches the one from the contacts db.
+     */
+    private boolean callLogInfoMatches(ContactInfo callLogInfo, ContactInfo info) {
+        // The call log only contains a subset of the fields in the contacts db. Only check those.
+        return TextUtils.equals(callLogInfo.name, info.name)
+                && callLogInfo.type == info.type
+                && TextUtils.equals(callLogInfo.label, info.label);
+    }
+
+    private volatile boolean mRequestProcessingDisabled = false;
+
+    /**
+     * Sets whether processing of requests for contact details should be enabled.
+     */
+    public void disableRequestProcessing() {
+        mRequestProcessingDisabled = true;
+    }
+
+    @VisibleForTesting
+    public void injectContactInfoForTest(
+            String number, String countryIso, ContactInfo contactInfo) {
+        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
+        mCache.put(numberCountryIso, contactInfo);
+    }
+}
diff --git a/src/com/android/dialer/contactinfo/ContactInfoRequest.java b/src/com/android/dialer/contactinfo/ContactInfoRequest.java
new file mode 100644
index 0000000..ec5c119
--- /dev/null
+++ b/src/com/android/dialer/contactinfo/ContactInfoRequest.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2015 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.dialer.contactinfo;
+
+import android.text.TextUtils;
+
+import com.android.dialer.calllog.ContactInfo;
+import com.google.common.base.Objects;
+
+/**
+ * A request for contact details for the given number, used by the ContactInfoCache.
+ */
+public final class ContactInfoRequest {
+    /** The number to look-up. */
+    public final String number;
+    /** The country in which a call to or from this number was placed or received. */
+    public final String countryIso;
+    /** The cached contact information stored in the call log. */
+    public final ContactInfo callLogInfo;
+
+    public ContactInfoRequest(String number, String countryIso, ContactInfo callLogInfo) {
+        this.number = number;
+        this.countryIso = countryIso;
+        this.callLogInfo = callLogInfo;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null) return false;
+        if (!(obj instanceof ContactInfoRequest)) return false;
+
+        ContactInfoRequest other = (ContactInfoRequest) obj;
+
+        if (!TextUtils.equals(number, other.number)) return false;
+        if (!TextUtils.equals(countryIso, other.countryIso)) return false;
+        if (!Objects.equal(callLogInfo, other.callLogInfo)) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((callLogInfo == null) ? 0 : callLogInfo.hashCode());
+        result = prime * result + ((countryIso == null) ? 0 : countryIso.hashCode());
+        result = prime * result + ((number == null) ? 0 : number.hashCode());
+        return result;
+    }
+}
diff --git a/src/com/android/dialer/contactinfo/NumberWithCountryIso.java b/src/com/android/dialer/contactinfo/NumberWithCountryIso.java
new file mode 100644
index 0000000..1383fb7
--- /dev/null
+++ b/src/com/android/dialer/contactinfo/NumberWithCountryIso.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2015 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.dialer.contactinfo;
+
+import android.text.TextUtils;
+
+/**
+ * Stores a phone number of a call with the country code where it originally occurred. This object
+ * is used as a key in the {@code ContactInfoCache}.
+ *
+ * The country does not necessarily specify the country of the phone number itself, but rather
+ * it is the country in which the user was in when the call was placed or received.
+ */
+public final class NumberWithCountryIso {
+    public final String number;
+    public final String countryIso;
+
+    public NumberWithCountryIso(String number, String countryIso) {
+        this.number = number;
+        this.countryIso = countryIso;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o == null) return false;
+        if (!(o instanceof NumberWithCountryIso)) return false;
+        NumberWithCountryIso other = (NumberWithCountryIso) o;
+        return TextUtils.equals(number, other.number)
+                && TextUtils.equals(countryIso, other.countryIso);
+    }
+
+    @Override
+    public int hashCode() {
+        int numberHashCode = number == null ? 0 : number.hashCode();
+        int countryHashCode = countryIso == null ? 0 : countryIso.hashCode();
+
+        return numberHashCode ^ countryHashCode;
+    }
+}
diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java
new file mode 100644
index 0000000..1f926c1
--- /dev/null
+++ b/src/com/android/dialer/database/DialerDatabaseHelper.java
@@ -0,0 +1,1122 @@
+/*
+ * Copyright (C) 2013 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.dialer.database;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteException;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.database.sqlite.SQLiteStatement;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.provider.BaseColumns;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Directory;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.common.util.StopWatch;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+import com.android.dialer.R;
+import com.android.dialer.dialpad.SmartDialNameMatcher;
+import com.android.dialer.dialpad.SmartDialPrefix;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * Database helper for smart dial. Designed as a singleton to make sure there is
+ * only one access point to the database. Provides methods to maintain, update,
+ * and query the database.
+ */
+public class DialerDatabaseHelper extends SQLiteOpenHelper {
+    private static final String TAG = "DialerDatabaseHelper";
+    private static final boolean DEBUG = false;
+    private boolean mIsTestInstance = false;
+
+    private static DialerDatabaseHelper sSingleton = null;
+
+    private static final Object mLock = new Object();
+    private static final AtomicBoolean sInUpdate = new AtomicBoolean(false);
+    private final Context mContext;
+
+    /**
+     * SmartDial DB version ranges:
+     * <pre>
+     *   0-98   KitKat
+     * </pre>
+     */
+    public static final int DATABASE_VERSION = 8;
+    public static final String DATABASE_NAME = "dialer.db";
+
+    /**
+     * Saves the last update time of smart dial databases to shared preferences.
+     */
+    private static final String DATABASE_LAST_CREATED_SHARED_PREF = "com.android.dialer";
+    private static final String LAST_UPDATED_MILLIS = "last_updated_millis";
+    private static final String DATABASE_VERSION_PROPERTY = "database_version";
+
+    private static final int MAX_ENTRIES = 20;
+
+    public interface Tables {
+        /** Saves a list of numbers to be blocked.*/
+        static final String FILTERED_NUMBER_TABLE = "filtered_numbers_table";
+        /** Saves the necessary smart dial information of all contacts. */
+        static final String SMARTDIAL_TABLE = "smartdial_table";
+        /** Saves all possible prefixes to refer to a contacts.*/
+        static final String PREFIX_TABLE = "prefix_table";
+        /** Database properties for internal use */
+        static final String PROPERTIES = "properties";
+    }
+
+    public static final Uri SMART_DIAL_UPDATED_URI =
+            Uri.parse("content://com.android.dialer/smart_dial_updated");
+
+    public interface SmartDialDbColumns {
+        static final String _ID = "id";
+        static final String DATA_ID = "data_id";
+        static final String NUMBER = "phone_number";
+        static final String CONTACT_ID = "contact_id";
+        static final String LOOKUP_KEY = "lookup_key";
+        static final String DISPLAY_NAME_PRIMARY = "display_name";
+        static final String PHOTO_ID = "photo_id";
+        static final String LAST_TIME_USED = "last_time_used";
+        static final String TIMES_USED = "times_used";
+        static final String STARRED = "starred";
+        static final String IS_SUPER_PRIMARY = "is_super_primary";
+        static final String IN_VISIBLE_GROUP = "in_visible_group";
+        static final String IS_PRIMARY = "is_primary";
+        static final String CARRIER_PRESENCE = "carrier_presence";
+        static final String LAST_SMARTDIAL_UPDATE_TIME = "last_smartdial_update_time";
+    }
+
+    public static interface PrefixColumns extends BaseColumns {
+        static final String PREFIX = "prefix";
+        static final String CONTACT_ID = "contact_id";
+    }
+
+    public interface PropertiesColumns {
+        String PROPERTY_KEY = "property_key";
+        String PROPERTY_VALUE = "property_value";
+    }
+
+    /** Query options for querying the contact database.*/
+    public static interface PhoneQuery {
+       static final Uri URI = Phone.CONTENT_URI.buildUpon().
+               appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+                       String.valueOf(Directory.DEFAULT)).
+               appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true").
+               build();
+
+       static final String[] PROJECTION = new String[] {
+            Phone._ID,                          // 0
+            Phone.TYPE,                         // 1
+            Phone.LABEL,                        // 2
+            Phone.NUMBER,                       // 3
+            Phone.CONTACT_ID,                   // 4
+            Phone.LOOKUP_KEY,                   // 5
+            Phone.DISPLAY_NAME_PRIMARY,         // 6
+            Phone.PHOTO_ID,                     // 7
+            Data.LAST_TIME_USED,                // 8
+            Data.TIMES_USED,                    // 9
+            Contacts.STARRED,                   // 10
+            Data.IS_SUPER_PRIMARY,              // 11
+            Contacts.IN_VISIBLE_GROUP,          // 12
+            Data.IS_PRIMARY,                    // 13
+            Data.CARRIER_PRESENCE,              // 14
+        };
+
+        static final int PHONE_ID = 0;
+        static final int PHONE_TYPE = 1;
+        static final int PHONE_LABEL = 2;
+        static final int PHONE_NUMBER = 3;
+        static final int PHONE_CONTACT_ID = 4;
+        static final int PHONE_LOOKUP_KEY = 5;
+        static final int PHONE_DISPLAY_NAME = 6;
+        static final int PHONE_PHOTO_ID = 7;
+        static final int PHONE_LAST_TIME_USED = 8;
+        static final int PHONE_TIMES_USED = 9;
+        static final int PHONE_STARRED = 10;
+        static final int PHONE_IS_SUPER_PRIMARY = 11;
+        static final int PHONE_IN_VISIBLE_GROUP = 12;
+        static final int PHONE_IS_PRIMARY = 13;
+        static final int PHONE_CARRIER_PRESENCE = 14;
+
+        /** Selects only rows that have been updated after a certain time stamp.*/
+        static final String SELECT_UPDATED_CLAUSE =
+                Phone.CONTACT_LAST_UPDATED_TIMESTAMP + " > ?";
+
+        /** Ignores contacts that have an unreasonably long lookup key. These are likely to be
+         * the result of multiple (> 50) merged raw contacts, and are likely to cause
+         * OutOfMemoryExceptions within SQLite, or cause memory allocation problems later on
+         * when iterating through the cursor set (see b/13133579)
+         */
+        static final String SELECT_IGNORE_LOOKUP_KEY_TOO_LONG_CLAUSE =
+                "length(" + Phone.LOOKUP_KEY + ") < 1000";
+
+        static final String SELECTION = SELECT_UPDATED_CLAUSE + " AND " +
+                SELECT_IGNORE_LOOKUP_KEY_TOO_LONG_CLAUSE;
+    }
+
+    /**
+     * Query for all contacts that have been updated since the last time the smart dial database
+     * was updated.
+     */
+    public static interface UpdatedContactQuery {
+        static final Uri URI = ContactsContract.Contacts.CONTENT_URI;
+
+        static final String[] PROJECTION = new String[] {
+                ContactsContract.Contacts._ID  // 0
+        };
+
+        static final int UPDATED_CONTACT_ID = 0;
+
+        static final String SELECT_UPDATED_CLAUSE =
+                ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP + " > ?";
+    }
+
+    /** Query options for querying the deleted contact database.*/
+    public static interface DeleteContactQuery {
+       static final Uri URI = ContactsContract.DeletedContacts.CONTENT_URI;
+
+       static final String[] PROJECTION = new String[] {
+            ContactsContract.DeletedContacts.CONTACT_ID,                          // 0
+            ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP,           // 1
+        };
+
+        static final int DELETED_CONTACT_ID = 0;
+        static final int DELECTED_TIMESTAMP = 1;
+
+        /** Selects only rows that have been deleted after a certain time stamp.*/
+        public static final String SELECT_UPDATED_CLAUSE =
+                ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP + " > ?";
+    }
+
+    /**
+     * Gets the sorting order for the smartdial table. This computes a SQL "ORDER BY" argument by
+     * composing contact status and recent contact details together.
+     */
+    private static interface SmartDialSortingOrder {
+        /** Current contacts - those contacted within the last 3 days (in milliseconds) */
+        static final long LAST_TIME_USED_CURRENT_MS = 3L * 24 * 60 * 60 * 1000;
+        /** Recent contacts - those contacted within the last 30 days (in milliseconds) */
+        static final long LAST_TIME_USED_RECENT_MS = 30L * 24 * 60 * 60 * 1000;
+
+        /** Time since last contact. */
+        static final String TIME_SINCE_LAST_USED_MS = "( ?1 - " +
+                Tables.SMARTDIAL_TABLE + "." + SmartDialDbColumns.LAST_TIME_USED + ")";
+
+        /** Contacts that have been used in the past 3 days rank higher than contacts that have
+         * been used in the past 30 days, which rank higher than contacts that have not been used
+         * in recent 30 days.
+         */
+        static final String SORT_BY_DATA_USAGE =
+                "(CASE WHEN " + TIME_SINCE_LAST_USED_MS + " < " + LAST_TIME_USED_CURRENT_MS +
+                " THEN 0 " +
+                " WHEN " + TIME_SINCE_LAST_USED_MS + " < " + LAST_TIME_USED_RECENT_MS +
+                " THEN 1 " +
+                " ELSE 2 END)";
+
+        /** This sort order is similar to that used by the ContactsProvider when returning a list
+         * of frequently called contacts.
+         */
+        static final String SORT_ORDER =
+                Tables.SMARTDIAL_TABLE + "." + SmartDialDbColumns.STARRED + " DESC, "
+                + Tables.SMARTDIAL_TABLE + "." + SmartDialDbColumns.IS_SUPER_PRIMARY + " DESC, "
+                + SORT_BY_DATA_USAGE + ", "
+                + Tables.SMARTDIAL_TABLE + "." + SmartDialDbColumns.TIMES_USED + " DESC, "
+                + Tables.SMARTDIAL_TABLE + "." + SmartDialDbColumns.IN_VISIBLE_GROUP + " DESC, "
+                + Tables.SMARTDIAL_TABLE + "." + SmartDialDbColumns.DISPLAY_NAME_PRIMARY + ", "
+                + Tables.SMARTDIAL_TABLE + "." + SmartDialDbColumns.CONTACT_ID + ", "
+                + Tables.SMARTDIAL_TABLE + "." + SmartDialDbColumns.IS_PRIMARY + " DESC";
+    }
+
+    /**
+     * Simple data format for a contact, containing only information needed for showing up in
+     * smart dial interface.
+     */
+    public static class ContactNumber {
+        public final long id;
+        public final long dataId;
+        public final String displayName;
+        public final String phoneNumber;
+        public final String lookupKey;
+        public final long photoId;
+        public final int carrierPresence;
+
+        public ContactNumber(long id, long dataID, String displayName, String phoneNumber,
+                String lookupKey, long photoId, int carrierPresence) {
+            this.dataId = dataID;
+            this.id = id;
+            this.displayName = displayName;
+            this.phoneNumber = phoneNumber;
+            this.lookupKey = lookupKey;
+            this.photoId = photoId;
+            this.carrierPresence = carrierPresence;
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hashCode(id, dataId, displayName, phoneNumber, lookupKey, photoId,
+                    carrierPresence);
+        }
+
+        @Override
+        public boolean equals(Object object) {
+            if (this == object) {
+                return true;
+            }
+            if (object instanceof ContactNumber) {
+                final ContactNumber that = (ContactNumber) object;
+                return Objects.equal(this.id, that.id)
+                        && Objects.equal(this.dataId, that.dataId)
+                        && Objects.equal(this.displayName, that.displayName)
+                        && Objects.equal(this.phoneNumber, that.phoneNumber)
+                        && Objects.equal(this.lookupKey, that.lookupKey)
+                        && Objects.equal(this.photoId, that.photoId)
+                        && Objects.equal(this.carrierPresence, that.carrierPresence);
+            }
+            return false;
+        }
+    }
+
+    /**
+     * Data format for finding duplicated contacts.
+     */
+    private class ContactMatch {
+        private final String lookupKey;
+        private final long id;
+
+        public ContactMatch(String lookupKey, long id) {
+            this.lookupKey = lookupKey;
+            this.id = id;
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hashCode(lookupKey, id);
+        }
+
+        @Override
+        public boolean equals(Object object) {
+            if (this == object) {
+                return true;
+            }
+            if (object instanceof ContactMatch) {
+                final ContactMatch that = (ContactMatch) object;
+                return Objects.equal(this.lookupKey, that.lookupKey)
+                        && Objects.equal(this.id, that.id);
+            }
+            return false;
+        }
+    }
+
+    /**
+     * Access function to get the singleton instance of DialerDatabaseHelper.
+     */
+    public static synchronized DialerDatabaseHelper getInstance(Context context) {
+        if (DEBUG) {
+            Log.v(TAG, "Getting Instance");
+        }
+        if (sSingleton == null) {
+            // Use application context instead of activity context because this is a singleton,
+            // and we don't want to leak the activity if the activity is not running but the
+            // dialer database helper is still doing work.
+            sSingleton = new DialerDatabaseHelper(context.getApplicationContext(),
+                    DATABASE_NAME);
+        }
+        return sSingleton;
+    }
+
+    /**
+     * Returns a new instance for unit tests. The database will be created in memory.
+     */
+    @VisibleForTesting
+    static DialerDatabaseHelper getNewInstanceForTest(Context context) {
+        return new DialerDatabaseHelper(context, null, true);
+    }
+
+    protected DialerDatabaseHelper(Context context, String databaseName, boolean isTestInstance) {
+        this(context, databaseName, DATABASE_VERSION);
+        mIsTestInstance = isTestInstance;
+    }
+
+    protected DialerDatabaseHelper(Context context, String databaseName) {
+        this(context, databaseName, DATABASE_VERSION);
+    }
+
+    protected DialerDatabaseHelper(Context context, String databaseName, int dbVersion) {
+        super(context, databaseName, null, dbVersion);
+        mContext = Preconditions.checkNotNull(context, "Context must not be null");
+    }
+
+    /**
+     * Creates tables in the database when database is created for the first time.
+     *
+     * @param db The database.
+     */
+    @Override
+    public void onCreate(SQLiteDatabase db) {
+        setupTables(db);
+    }
+
+    private void setupTables(SQLiteDatabase db) {
+        dropTables(db);
+        db.execSQL("CREATE TABLE " + Tables.SMARTDIAL_TABLE + " ("
+                + SmartDialDbColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+                + SmartDialDbColumns.DATA_ID + " INTEGER, "
+                + SmartDialDbColumns.NUMBER + " TEXT,"
+                + SmartDialDbColumns.CONTACT_ID + " INTEGER,"
+                + SmartDialDbColumns.LOOKUP_KEY + " TEXT,"
+                + SmartDialDbColumns.DISPLAY_NAME_PRIMARY + " TEXT, "
+                + SmartDialDbColumns.PHOTO_ID + " INTEGER, "
+                + SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME + " LONG, "
+                + SmartDialDbColumns.LAST_TIME_USED + " LONG, "
+                + SmartDialDbColumns.TIMES_USED + " INTEGER, "
+                + SmartDialDbColumns.STARRED + " INTEGER, "
+                + SmartDialDbColumns.IS_SUPER_PRIMARY + " INTEGER, "
+                + SmartDialDbColumns.IN_VISIBLE_GROUP + " INTEGER, "
+                + SmartDialDbColumns.IS_PRIMARY + " INTEGER, "
+                + SmartDialDbColumns.CARRIER_PRESENCE + " INTEGER NOT NULL DEFAULT 0"
+                + ");");
+
+        db.execSQL("CREATE TABLE " + Tables.PREFIX_TABLE + " ("
+                + PrefixColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+                + PrefixColumns.PREFIX + " TEXT COLLATE NOCASE, "
+                + PrefixColumns.CONTACT_ID + " INTEGER"
+                + ");");
+
+        db.execSQL("CREATE TABLE " + Tables.PROPERTIES + " ("
+                + PropertiesColumns.PROPERTY_KEY + " TEXT PRIMARY KEY, "
+                + PropertiesColumns.PROPERTY_VALUE + " TEXT "
+                + ");");
+
+        // This will need to also be updated in setupTablesForFilteredNumberTest and onUpgrade.
+        // Hardcoded so we know on glance what columns are updated in setupTables,
+        // and to be able to guarantee the state of the DB at each upgrade step.
+        db.execSQL("CREATE TABLE " + Tables.FILTERED_NUMBER_TABLE + " ("
+                + FilteredNumberColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+                + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT UNIQUE,"
+                + FilteredNumberColumns.NUMBER + " TEXT,"
+                + FilteredNumberColumns.COUNTRY_ISO + " TEXT,"
+                + FilteredNumberColumns.TIMES_FILTERED + " INTEGER,"
+                + FilteredNumberColumns.LAST_TIME_FILTERED + " LONG,"
+                + FilteredNumberColumns.CREATION_TIME + " LONG,"
+                + FilteredNumberColumns.TYPE + " INTEGER,"
+                + FilteredNumberColumns.SOURCE + " INTEGER"
+                + ");");
+        setProperty(db, DATABASE_VERSION_PROPERTY, String.valueOf(DATABASE_VERSION));
+        if (!mIsTestInstance) {
+            resetSmartDialLastUpdatedTime();
+        }
+    }
+
+    public void dropTables(SQLiteDatabase db) {
+        db.execSQL("DROP TABLE IF EXISTS " + Tables.PREFIX_TABLE);
+        db.execSQL("DROP TABLE IF EXISTS " + Tables.SMARTDIAL_TABLE);
+        db.execSQL("DROP TABLE IF EXISTS " + Tables.PROPERTIES);
+        db.execSQL("DROP TABLE IF EXISTS " + Tables.FILTERED_NUMBER_TABLE);
+    }
+
+    @Override
+    public void onUpgrade(SQLiteDatabase db, int oldNumber, int newNumber) {
+        // Disregard the old version and new versions provided by SQLiteOpenHelper, we will read
+        // our own from the database.
+
+        int oldVersion;
+
+        oldVersion = getPropertyAsInt(db, DATABASE_VERSION_PROPERTY, 0);
+
+        if (oldVersion == 0) {
+            Log.e(TAG, "Malformed database version..recreating database");
+        }
+
+        if (oldVersion < 4) {
+            setupTables(db);
+            return;
+        }
+
+        if (oldVersion < 7) {
+            db.execSQL("DROP TABLE IF EXISTS " + Tables.FILTERED_NUMBER_TABLE);
+            db.execSQL("CREATE TABLE " + Tables.FILTERED_NUMBER_TABLE + " ("
+                    + FilteredNumberColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT UNIQUE,"
+                    + FilteredNumberColumns.NUMBER + " TEXT,"
+                    + FilteredNumberColumns.COUNTRY_ISO + " TEXT,"
+                    + FilteredNumberColumns.TIMES_FILTERED + " INTEGER,"
+                    + FilteredNumberColumns.LAST_TIME_FILTERED + " LONG,"
+                    + FilteredNumberColumns.CREATION_TIME + " LONG,"
+                    + FilteredNumberColumns.TYPE + " INTEGER,"
+                    + FilteredNumberColumns.SOURCE + " INTEGER"
+                    + ");");
+            oldVersion = 7;
+        }
+
+        if (oldVersion < 8) {
+            upgradeToVersion8(db);
+            oldVersion = 8;
+        }
+
+        if (oldVersion != DATABASE_VERSION) {
+            throw new IllegalStateException(
+                    "error upgrading the database to version " + DATABASE_VERSION);
+        }
+
+        setProperty(db, DATABASE_VERSION_PROPERTY, String.valueOf(DATABASE_VERSION));
+    }
+
+    public void upgradeToVersion8(SQLiteDatabase db) {
+        db.execSQL("ALTER TABLE smartdial_table ADD carrier_presence INTEGER NOT NULL DEFAULT 0");
+    }
+
+    /**
+     * Stores a key-value pair in the {@link Tables#PROPERTIES} table.
+     */
+    public void setProperty(String key, String value) {
+        setProperty(getWritableDatabase(), key, value);
+    }
+
+    public void setProperty(SQLiteDatabase db, String key, String value) {
+        final ContentValues values = new ContentValues();
+        values.put(PropertiesColumns.PROPERTY_KEY, key);
+        values.put(PropertiesColumns.PROPERTY_VALUE, value);
+        db.replace(Tables.PROPERTIES, null, values);
+    }
+
+    /**
+     * Returns the value from the {@link Tables#PROPERTIES} table.
+     */
+    public String getProperty(String key, String defaultValue) {
+        return getProperty(getReadableDatabase(), key, defaultValue);
+    }
+
+    public String getProperty(SQLiteDatabase db, String key, String defaultValue) {
+        try {
+            String value = null;
+            final Cursor cursor = db.query(Tables.PROPERTIES,
+                    new String[] {PropertiesColumns.PROPERTY_VALUE},
+                            PropertiesColumns.PROPERTY_KEY + "=?",
+                    new String[] {key}, null, null, null);
+            if (cursor != null) {
+                try {
+                    if (cursor.moveToFirst()) {
+                        value = cursor.getString(0);
+                    }
+                } finally {
+                    cursor.close();
+                }
+            }
+            return value != null ? value : defaultValue;
+        } catch (SQLiteException e) {
+            return defaultValue;
+        }
+    }
+
+    public int getPropertyAsInt(SQLiteDatabase db, String key, int defaultValue) {
+        final String stored = getProperty(db, key, "");
+        try {
+            return Integer.parseInt(stored);
+        } catch (NumberFormatException e) {
+            return defaultValue;
+        }
+    }
+
+    private void resetSmartDialLastUpdatedTime() {
+        final SharedPreferences databaseLastUpdateSharedPref = mContext.getSharedPreferences(
+                DATABASE_LAST_CREATED_SHARED_PREF, Context.MODE_PRIVATE);
+        final SharedPreferences.Editor editor = databaseLastUpdateSharedPref.edit();
+        editor.putLong(LAST_UPDATED_MILLIS, 0);
+        editor.commit();
+    }
+
+    /**
+     * Starts the database upgrade process in the background.
+     */
+    public void startSmartDialUpdateThread() {
+        if (PermissionsUtil.hasContactsPermissions(mContext)) {
+            new SmartDialUpdateAsyncTask().execute();
+        }
+    }
+
+    private class SmartDialUpdateAsyncTask extends AsyncTask {
+        @Override
+        protected Object doInBackground(Object[] objects) {
+            if (DEBUG) {
+                Log.v(TAG, "Updating database");
+            }
+            updateSmartDialDatabase();
+            return null;
+        }
+
+        @Override
+        protected void onCancelled() {
+            if (DEBUG) {
+                Log.v(TAG, "Updating Cancelled");
+            }
+            super.onCancelled();
+        }
+
+        @Override
+        protected void onPostExecute(Object o) {
+            if (DEBUG) {
+                Log.v(TAG, "Updating Finished");
+            }
+            super.onPostExecute(o);
+        }
+    }
+    /**
+     * Removes rows in the smartdial database that matches the contacts that have been deleted
+     * by other apps since last update.
+     *
+     * @param db Database to operate on.
+     * @param deletedContactCursor Cursor containing rows of deleted contacts
+     */
+    @VisibleForTesting
+    void removeDeletedContacts(SQLiteDatabase db, Cursor deletedContactCursor) {
+        if (deletedContactCursor == null) {
+            return;
+        }
+
+        db.beginTransaction();
+        try {
+            while (deletedContactCursor.moveToNext()) {
+                final Long deleteContactId =
+                        deletedContactCursor.getLong(DeleteContactQuery.DELETED_CONTACT_ID);
+                db.delete(Tables.SMARTDIAL_TABLE,
+                        SmartDialDbColumns.CONTACT_ID + "=" + deleteContactId, null);
+                db.delete(Tables.PREFIX_TABLE,
+                        PrefixColumns.CONTACT_ID + "=" + deleteContactId, null);
+            }
+
+            db.setTransactionSuccessful();
+        } finally {
+            deletedContactCursor.close();
+            db.endTransaction();
+        }
+    }
+
+    private Cursor getDeletedContactCursor(String lastUpdateMillis) {
+        return mContext.getContentResolver().query(
+                DeleteContactQuery.URI,
+                DeleteContactQuery.PROJECTION,
+                DeleteContactQuery.SELECT_UPDATED_CLAUSE,
+                new String[] {lastUpdateMillis},
+                null);
+    }
+
+    /**
+     * Removes potentially corrupted entries in the database. These contacts may be added before
+     * the previous instance of the dialer was destroyed for some reason. For data integrity, we
+     * delete all of them.
+
+     * @param db Database pointer to the dialer database.
+     * @param last_update_time Time stamp of last successful update of the dialer database.
+     */
+    private void removePotentiallyCorruptedContacts(SQLiteDatabase db, String last_update_time) {
+        db.delete(Tables.PREFIX_TABLE,
+                PrefixColumns.CONTACT_ID + " IN " +
+                "(SELECT " + SmartDialDbColumns.CONTACT_ID + " FROM " + Tables.SMARTDIAL_TABLE +
+                " WHERE " + SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME + " > " +
+                last_update_time + ")",
+                null);
+        db.delete(Tables.SMARTDIAL_TABLE,
+                SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME + " > " + last_update_time, null);
+    }
+
+    /**
+     * Removes all entries in the smartdial contact database.
+     */
+    @VisibleForTesting
+    void removeAllContacts(SQLiteDatabase db) {
+        db.delete(Tables.SMARTDIAL_TABLE, null, null);
+        db.delete(Tables.PREFIX_TABLE, null, null);
+    }
+
+    /**
+     * Counts number of rows of the prefix table.
+     */
+    @VisibleForTesting
+    int countPrefixTableRows(SQLiteDatabase db) {
+        return (int)DatabaseUtils.longForQuery(db, "SELECT COUNT(1) FROM " + Tables.PREFIX_TABLE,
+                null);
+    }
+
+    /**
+     * Removes rows in the smartdial database that matches updated contacts.
+     *
+     * @param db Database pointer to the smartdial database
+     * @param updatedContactCursor Cursor pointing to the list of recently updated contacts.
+     */
+    @VisibleForTesting
+    void removeUpdatedContacts(SQLiteDatabase db, Cursor updatedContactCursor) {
+        db.beginTransaction();
+        try {
+            updatedContactCursor.moveToPosition(-1);
+            while (updatedContactCursor.moveToNext()) {
+                final Long contactId =
+                        updatedContactCursor.getLong(UpdatedContactQuery.UPDATED_CONTACT_ID);
+
+                db.delete(Tables.SMARTDIAL_TABLE, SmartDialDbColumns.CONTACT_ID + "=" +
+                        contactId, null);
+                db.delete(Tables.PREFIX_TABLE, PrefixColumns.CONTACT_ID + "=" +
+                        contactId, null);
+            }
+
+            db.setTransactionSuccessful();
+        } finally {
+            db.endTransaction();
+        }
+    }
+
+    /**
+     * Inserts updated contacts as rows to the smartdial table.
+     *
+     * @param db Database pointer to the smartdial database.
+     * @param updatedContactCursor Cursor pointing to the list of recently updated contacts.
+     * @param currentMillis Current time to be recorded in the smartdial table as update timestamp.
+     */
+    @VisibleForTesting
+    protected void insertUpdatedContactsAndNumberPrefix(SQLiteDatabase db,
+            Cursor updatedContactCursor, Long currentMillis) {
+        db.beginTransaction();
+        try {
+            final String sqlInsert = "INSERT INTO " + Tables.SMARTDIAL_TABLE + " (" +
+                    SmartDialDbColumns.DATA_ID + ", " +
+                    SmartDialDbColumns.NUMBER + ", " +
+                    SmartDialDbColumns.CONTACT_ID + ", " +
+                    SmartDialDbColumns.LOOKUP_KEY + ", " +
+                    SmartDialDbColumns.DISPLAY_NAME_PRIMARY + ", " +
+                    SmartDialDbColumns.PHOTO_ID + ", " +
+                    SmartDialDbColumns.LAST_TIME_USED + ", " +
+                    SmartDialDbColumns.TIMES_USED + ", " +
+                    SmartDialDbColumns.STARRED + ", " +
+                    SmartDialDbColumns.IS_SUPER_PRIMARY + ", " +
+                    SmartDialDbColumns.IN_VISIBLE_GROUP+ ", " +
+                    SmartDialDbColumns.IS_PRIMARY + ", " +
+                    SmartDialDbColumns.CARRIER_PRESENCE + ", " +
+                    SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME + ") " +
+                    " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+            final SQLiteStatement insert = db.compileStatement(sqlInsert);
+
+            final String numberSqlInsert = "INSERT INTO " + Tables.PREFIX_TABLE + " (" +
+                    PrefixColumns.CONTACT_ID + ", " +
+                    PrefixColumns.PREFIX  + ") " +
+                    " VALUES (?, ?)";
+            final SQLiteStatement numberInsert = db.compileStatement(numberSqlInsert);
+
+            updatedContactCursor.moveToPosition(-1);
+            while (updatedContactCursor.moveToNext()) {
+                insert.clearBindings();
+
+                // Handle string columns which can possibly be null first. In the case of certain
+                // null columns (due to malformed rows possibly inserted by third-party apps
+                // or sync adapters), skip the phone number row.
+                final String number = updatedContactCursor.getString(PhoneQuery.PHONE_NUMBER);
+                if (TextUtils.isEmpty(number)) {
+                    continue;
+                } else {
+                    insert.bindString(2, number);
+                }
+
+                final String lookupKey = updatedContactCursor.getString(
+                        PhoneQuery.PHONE_LOOKUP_KEY);
+                if (TextUtils.isEmpty(lookupKey)) {
+                    continue;
+                } else {
+                    insert.bindString(4, lookupKey);
+                }
+
+                final String displayName = updatedContactCursor.getString(
+                        PhoneQuery.PHONE_DISPLAY_NAME);
+                if (displayName == null) {
+                    insert.bindString(5, mContext.getResources().getString(R.string.missing_name));
+                } else {
+                    insert.bindString(5, displayName);
+                }
+                insert.bindLong(1, updatedContactCursor.getLong(PhoneQuery.PHONE_ID));
+                insert.bindLong(3, updatedContactCursor.getLong(PhoneQuery.PHONE_CONTACT_ID));
+                insert.bindLong(6, updatedContactCursor.getLong(PhoneQuery.PHONE_PHOTO_ID));
+                insert.bindLong(7, updatedContactCursor.getLong(PhoneQuery.PHONE_LAST_TIME_USED));
+                insert.bindLong(8, updatedContactCursor.getInt(PhoneQuery.PHONE_TIMES_USED));
+                insert.bindLong(9, updatedContactCursor.getInt(PhoneQuery.PHONE_STARRED));
+                insert.bindLong(10, updatedContactCursor.getInt(PhoneQuery.PHONE_IS_SUPER_PRIMARY));
+                insert.bindLong(11, updatedContactCursor.getInt(PhoneQuery.PHONE_IN_VISIBLE_GROUP));
+                insert.bindLong(12, updatedContactCursor.getInt(PhoneQuery.PHONE_IS_PRIMARY));
+                insert.bindLong(13, updatedContactCursor.getInt(PhoneQuery.PHONE_CARRIER_PRESENCE));
+                insert.bindLong(14, currentMillis);
+                insert.executeInsert();
+                final String contactPhoneNumber =
+                        updatedContactCursor.getString(PhoneQuery.PHONE_NUMBER);
+                final ArrayList<String> numberPrefixes =
+                        SmartDialPrefix.parseToNumberTokens(contactPhoneNumber);
+
+                for (String numberPrefix : numberPrefixes) {
+                    numberInsert.bindLong(1, updatedContactCursor.getLong(
+                            PhoneQuery.PHONE_CONTACT_ID));
+                    numberInsert.bindString(2, numberPrefix);
+                    numberInsert.executeInsert();
+                    numberInsert.clearBindings();
+                }
+            }
+
+            db.setTransactionSuccessful();
+        } finally {
+            db.endTransaction();
+        }
+    }
+
+    /**
+     * Inserts prefixes of contact names to the prefix table.
+     *
+     * @param db Database pointer to the smartdial database.
+     * @param nameCursor Cursor pointing to the list of distinct updated contacts.
+     */
+    @VisibleForTesting
+    void insertNamePrefixes(SQLiteDatabase db, Cursor nameCursor) {
+        final int columnIndexName = nameCursor.getColumnIndex(
+                SmartDialDbColumns.DISPLAY_NAME_PRIMARY);
+        final int columnIndexContactId = nameCursor.getColumnIndex(SmartDialDbColumns.CONTACT_ID);
+
+        db.beginTransaction();
+        try {
+            final String sqlInsert = "INSERT INTO " + Tables.PREFIX_TABLE + " (" +
+                    PrefixColumns.CONTACT_ID + ", " +
+                    PrefixColumns.PREFIX  + ") " +
+                    " VALUES (?, ?)";
+            final SQLiteStatement insert = db.compileStatement(sqlInsert);
+
+            while (nameCursor.moveToNext()) {
+                /** Computes a list of prefixes of a given contact name. */
+                final ArrayList<String> namePrefixes =
+                        SmartDialPrefix.generateNamePrefixes(nameCursor.getString(columnIndexName));
+
+                for (String namePrefix : namePrefixes) {
+                    insert.bindLong(1, nameCursor.getLong(columnIndexContactId));
+                    insert.bindString(2, namePrefix);
+                    insert.executeInsert();
+                    insert.clearBindings();
+                }
+            }
+
+            db.setTransactionSuccessful();
+        } finally {
+            db.endTransaction();
+        }
+    }
+
+    /**
+     * Updates the smart dial and prefix database.
+     * This method queries the Delta API to get changed contacts since last update, and updates the
+     * records in smartdial database and prefix database accordingly.
+     * It also queries the deleted contact database to remove newly deleted contacts since last
+     * update.
+     */
+    public void updateSmartDialDatabase() {
+        final SQLiteDatabase db = getWritableDatabase();
+
+        synchronized(mLock) {
+            if (DEBUG) {
+                Log.v(TAG, "Starting to update database");
+            }
+            final StopWatch stopWatch = DEBUG ? StopWatch.start("Updating databases") : null;
+
+            /** Gets the last update time on the database. */
+            final SharedPreferences databaseLastUpdateSharedPref = mContext.getSharedPreferences(
+                    DATABASE_LAST_CREATED_SHARED_PREF, Context.MODE_PRIVATE);
+            final String lastUpdateMillis = String.valueOf(
+                    databaseLastUpdateSharedPref.getLong(LAST_UPDATED_MILLIS, 0));
+
+            if (DEBUG) {
+                Log.v(TAG, "Last updated at " + lastUpdateMillis);
+            }
+
+            /** Sets the time after querying the database as the current update time. */
+            final Long currentMillis = System.currentTimeMillis();
+
+            if (DEBUG) {
+                stopWatch.lap("Queried the Contacts database");
+            }
+
+            /** Prevents the app from reading the dialer database when updating. */
+            sInUpdate.getAndSet(true);
+
+            /** Removes contacts that have been deleted. */
+            removeDeletedContacts(db, getDeletedContactCursor(lastUpdateMillis));
+            removePotentiallyCorruptedContacts(db, lastUpdateMillis);
+
+            if (DEBUG) {
+                stopWatch.lap("Finished deleting deleted entries");
+            }
+
+            /** If the database did not exist before, jump through deletion as there is nothing
+             * to delete.
+             */
+            if (!lastUpdateMillis.equals("0")) {
+                /** Removes contacts that have been updated. Updated contact information will be
+                 * inserted later. Note that this has to use a separate result set from
+                 * updatePhoneCursor, since it is possible for a contact to be updated (e.g.
+                 * phone number deleted), but have no results show up in updatedPhoneCursor (since
+                 * all of its phone numbers have been deleted).
+                 */
+                final Cursor updatedContactCursor = mContext.getContentResolver().query(
+                        UpdatedContactQuery.URI,
+                        UpdatedContactQuery.PROJECTION,
+                        UpdatedContactQuery.SELECT_UPDATED_CLAUSE,
+                        new String[] {lastUpdateMillis},
+                        null
+                        );
+                if (updatedContactCursor == null) {
+                    Log.e(TAG, "SmartDial query received null for cursor");
+                    return;
+                }
+                try {
+                    removeUpdatedContacts(db, updatedContactCursor);
+                } finally {
+                    updatedContactCursor.close();
+                }
+                if (DEBUG) {
+                    stopWatch.lap("Finished deleting entries belonging to updated contacts");
+                }
+            }
+
+            /** Queries the contact database to get all phone numbers that have been updated since the last
+             * update time.
+             */
+            final Cursor updatedPhoneCursor = mContext.getContentResolver().query(PhoneQuery.URI,
+                    PhoneQuery.PROJECTION, PhoneQuery.SELECTION,
+                    new String[]{lastUpdateMillis}, null);
+            if (updatedPhoneCursor == null) {
+                Log.e(TAG, "SmartDial query received null for cursor");
+                return;
+            }
+
+            try {
+                /** Inserts recently updated phone numbers to the smartdial database.*/
+                insertUpdatedContactsAndNumberPrefix(db, updatedPhoneCursor, currentMillis);
+                if (DEBUG) {
+                    stopWatch.lap("Finished building the smart dial table");
+                }
+            } finally {
+                updatedPhoneCursor.close();
+            }
+
+            /** Gets a list of distinct contacts which have been updated, and adds the name prefixes
+             * of these contacts to the prefix table.
+             */
+            final Cursor nameCursor = db.rawQuery(
+                    "SELECT DISTINCT " +
+                    SmartDialDbColumns.DISPLAY_NAME_PRIMARY + ", " + SmartDialDbColumns.CONTACT_ID +
+                    " FROM " + Tables.SMARTDIAL_TABLE +
+                    " WHERE " + SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME +
+                    " = " + Long.toString(currentMillis),
+                    new String[] {});
+            if (nameCursor != null) {
+                try {
+                    if (DEBUG) {
+                        stopWatch.lap("Queried the smart dial table for contact names");
+                    }
+
+                    /** Inserts prefixes of names into the prefix table.*/
+                    insertNamePrefixes(db, nameCursor);
+                    if (DEBUG) {
+                        stopWatch.lap("Finished building the name prefix table");
+                    }
+                } finally {
+                    nameCursor.close();
+                }
+            }
+
+            /** Creates index on contact_id for fast JOIN operation. */
+            db.execSQL("CREATE INDEX IF NOT EXISTS smartdial_contact_id_index ON " +
+                    Tables.SMARTDIAL_TABLE + " (" + SmartDialDbColumns.CONTACT_ID  + ");");
+            /** Creates index on last_smartdial_update_time for fast SELECT operation. */
+            db.execSQL("CREATE INDEX IF NOT EXISTS smartdial_last_update_index ON " +
+                    Tables.SMARTDIAL_TABLE + " (" +
+                    SmartDialDbColumns.LAST_SMARTDIAL_UPDATE_TIME + ");");
+            /** Creates index on sorting fields for fast sort operation. */
+            db.execSQL("CREATE INDEX IF NOT EXISTS smartdial_sort_index ON " +
+                    Tables.SMARTDIAL_TABLE + " (" +
+                    SmartDialDbColumns.STARRED + ", " +
+                    SmartDialDbColumns.IS_SUPER_PRIMARY + ", " +
+                    SmartDialDbColumns.LAST_TIME_USED + ", " +
+                    SmartDialDbColumns.TIMES_USED + ", " +
+                    SmartDialDbColumns.IN_VISIBLE_GROUP +  ", " +
+                    SmartDialDbColumns.DISPLAY_NAME_PRIMARY + ", " +
+                    SmartDialDbColumns.CONTACT_ID + ", " +
+                    SmartDialDbColumns.IS_PRIMARY +
+                    ");");
+            /** Creates index on prefix for fast SELECT operation. */
+            db.execSQL("CREATE INDEX IF NOT EXISTS nameprefix_index ON " +
+                    Tables.PREFIX_TABLE + " (" + PrefixColumns.PREFIX + ");");
+            /** Creates index on contact_id for fast JOIN operation. */
+            db.execSQL("CREATE INDEX IF NOT EXISTS nameprefix_contact_id_index ON " +
+                    Tables.PREFIX_TABLE + " (" + PrefixColumns.CONTACT_ID + ");");
+
+            if (DEBUG) {
+                stopWatch.lap(TAG + "Finished recreating index");
+            }
+
+            /** Updates the database index statistics.*/
+            db.execSQL("ANALYZE " + Tables.SMARTDIAL_TABLE);
+            db.execSQL("ANALYZE " + Tables.PREFIX_TABLE);
+            db.execSQL("ANALYZE smartdial_contact_id_index");
+            db.execSQL("ANALYZE smartdial_last_update_index");
+            db.execSQL("ANALYZE nameprefix_index");
+            db.execSQL("ANALYZE nameprefix_contact_id_index");
+            if (DEBUG) {
+                stopWatch.stopAndLog(TAG + "Finished updating index stats", 0);
+            }
+
+            sInUpdate.getAndSet(false);
+
+            final SharedPreferences.Editor editor = databaseLastUpdateSharedPref.edit();
+            editor.putLong(LAST_UPDATED_MILLIS, currentMillis);
+            editor.commit();
+
+            // Notify content observers that smart dial database has been updated.
+            mContext.getContentResolver().notifyChange(SMART_DIAL_UPDATED_URI, null, false);
+        }
+    }
+
+    /**
+     * Returns a list of candidate contacts where the query is a prefix of the dialpad index of
+     * the contact's name or phone number.
+     *
+     * @param query The prefix of a contact's dialpad index.
+     * @return A list of top candidate contacts that will be suggested to user to match their input.
+     */
+    public ArrayList<ContactNumber>  getLooseMatches(String query,
+            SmartDialNameMatcher nameMatcher) {
+        final boolean inUpdate = sInUpdate.get();
+        if (inUpdate) {
+            return Lists.newArrayList();
+        }
+
+        final SQLiteDatabase db = getReadableDatabase();
+
+        /** Uses SQL query wildcard '%' to represent prefix matching.*/
+        final String looseQuery = query + "%";
+
+        final ArrayList<ContactNumber> result = Lists.newArrayList();
+
+        final StopWatch stopWatch = DEBUG ? StopWatch.start(":Name Prefix query") : null;
+
+        final String currentTimeStamp = Long.toString(System.currentTimeMillis());
+
+        /** Queries the database to find contacts that have an index matching the query prefix. */
+        final Cursor cursor = db.rawQuery("SELECT " +
+                SmartDialDbColumns.DATA_ID + ", " +
+                SmartDialDbColumns.DISPLAY_NAME_PRIMARY + ", " +
+                SmartDialDbColumns.PHOTO_ID + ", " +
+                SmartDialDbColumns.NUMBER + ", " +
+                SmartDialDbColumns.CONTACT_ID + ", " +
+                SmartDialDbColumns.LOOKUP_KEY + ", " +
+                SmartDialDbColumns.CARRIER_PRESENCE +
+                " FROM " + Tables.SMARTDIAL_TABLE + " WHERE " +
+                SmartDialDbColumns.CONTACT_ID + " IN " +
+                    " (SELECT " + PrefixColumns.CONTACT_ID +
+                    " FROM " + Tables.PREFIX_TABLE +
+                    " WHERE " + Tables.PREFIX_TABLE + "." + PrefixColumns.PREFIX +
+                    " LIKE '" + looseQuery + "')" +
+                " ORDER BY " + SmartDialSortingOrder.SORT_ORDER,
+                new String[] {currentTimeStamp});
+        if (cursor == null) {
+            return result;
+        }
+        try {
+            if (DEBUG) {
+                stopWatch.lap("Prefix query completed");
+            }
+
+            /** Gets the column ID from the cursor.*/
+            final int columnDataId = 0;
+            final int columnDisplayNamePrimary = 1;
+            final int columnPhotoId = 2;
+            final int columnNumber = 3;
+            final int columnId = 4;
+            final int columnLookupKey = 5;
+            final int columnCarrierPresence = 6;
+            if (DEBUG) {
+                stopWatch.lap("Found column IDs");
+            }
+
+            final Set<ContactMatch> duplicates = new HashSet<ContactMatch>();
+            int counter = 0;
+            if (DEBUG) {
+                stopWatch.lap("Moved cursor to start");
+            }
+            /** Iterates the cursor to find top contact suggestions without duplication.*/
+            while ((cursor.moveToNext()) && (counter < MAX_ENTRIES)) {
+                final long dataID = cursor.getLong(columnDataId);
+                final String displayName = cursor.getString(columnDisplayNamePrimary);
+                final String phoneNumber = cursor.getString(columnNumber);
+                final long id = cursor.getLong(columnId);
+                final long photoId = cursor.getLong(columnPhotoId);
+                final String lookupKey = cursor.getString(columnLookupKey);
+                final int carrierPresence = cursor.getInt(columnCarrierPresence);
+
+                /** If a contact already exists and another phone number of the contact is being
+                 * processed, skip the second instance.
+                 */
+                final ContactMatch contactMatch = new ContactMatch(lookupKey, id);
+                if (duplicates.contains(contactMatch)) {
+                    continue;
+                }
+
+                /**
+                 * If the contact has either the name or number that matches the query, add to the
+                 * result.
+                 */
+                final boolean nameMatches = nameMatcher.matches(displayName);
+                final boolean numberMatches =
+                        (nameMatcher.matchesNumber(phoneNumber, query) != null);
+                if (nameMatches || numberMatches) {
+                    /** If a contact has not been added, add it to the result and the hash set.*/
+                    duplicates.add(contactMatch);
+                    result.add(new ContactNumber(id, dataID, displayName, phoneNumber, lookupKey,
+                            photoId, carrierPresence));
+                    counter++;
+                    if (DEBUG) {
+                        stopWatch.lap("Added one result: Name: " + displayName);
+                    }
+                }
+            }
+
+            if (DEBUG) {
+                stopWatch.stopAndLog(TAG + "Finished loading cursor", 0);
+            }
+        } finally {
+            cursor.close();
+        }
+        return result;
+    }
+}
diff --git a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
new file mode 100644
index 0000000..ff9b1be
--- /dev/null
+++ b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2015 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.dialer.database;
+
+import android.content.AsyncQueryHandler;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.database.sqlite.SQLiteDatabaseCorruptException;
+import android.net.Uri;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
+
+public class FilteredNumberAsyncQueryHandler extends AsyncQueryHandler {
+    private static final int NO_TOKEN = 0;
+
+    public FilteredNumberAsyncQueryHandler(ContentResolver cr) {
+        super(cr);
+    }
+
+    /**
+     * Methods for FilteredNumberAsyncQueryHandler result returns.
+     */
+    private static abstract class Listener {
+        protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
+        }
+        protected void onInsertComplete(int token, Object cookie, Uri uri) {
+        }
+        protected void onUpdateComplete(int token, Object cookie, int result) {
+        }
+        protected void onDeleteComplete(int token, Object cookie, int result) {
+        }
+    }
+
+    public interface OnCheckBlockedListener {
+        /**
+         * Invoked after querying if a number is blocked.
+         * @param id The ID of the row if blocked, null otherwise.
+         */
+        public void onCheckComplete(Integer id);
+    }
+
+    public interface OnBlockNumberListener {
+        /**
+         * Invoked after inserting a blocked number.
+         * @param uri The uri of the newly created row.
+         */
+        public void onBlockComplete(Uri uri);
+    }
+
+    public interface OnUnblockNumberListener {
+        /**
+         * Invoked after removing a blocked number
+         * @param rows The number of rows affected (expected value 1).
+         * @param values The deleted data (used for restoration).
+         */
+        public void onUnblockComplete(int rows, ContentValues values);
+    }
+
+    public interface OnHasBlockedNumbersListener {
+        /**
+         * @param hasBlockedNumbers {@code true} if any blocked numbers are stored.
+         *     {@code false} otherwise.
+         */
+        public void onHasBlockedNumbers(boolean hasBlockedNumbers);
+    }
+
+    @Override
+    protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
+        if (cookie != null) {
+            ((Listener) cookie).onQueryComplete(token, cookie, cursor);
+        }
+    }
+
+    @Override
+    protected void onInsertComplete(int token, Object cookie, Uri uri) {
+        if (cookie != null) {
+            ((Listener) cookie).onInsertComplete(token, cookie, uri);
+        }
+    }
+
+    @Override
+    protected void onUpdateComplete(int token, Object cookie, int result) {
+        if (cookie != null) {
+            ((Listener) cookie).onUpdateComplete(token, cookie, result);
+        }
+    }
+
+    @Override
+    protected void onDeleteComplete(int token, Object cookie, int result) {
+        if (cookie != null) {
+            ((Listener) cookie).onDeleteComplete(token, cookie, result);
+        }
+    }
+
+    private static Uri getContentUri(Integer id) {
+        Uri uri = FilteredNumber.CONTENT_URI;
+        if (id != null) {
+            uri = ContentUris.withAppendedId(uri, id);
+        }
+        return uri;
+    }
+
+    public final void incrementFilteredCount(Integer id) {
+        startUpdate(NO_TOKEN, null,
+                ContentUris.withAppendedId(FilteredNumber.CONTENT_URI_INCREMENT_FILTERED_COUNT, id),
+                null, null, null);
+    }
+
+    public final void hasBlockedNumbers(final OnHasBlockedNumbersListener listener) {
+        startQuery(NO_TOKEN,
+                new Listener() {
+                    @Override
+                    protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
+                        listener.onHasBlockedNumbers(cursor != null && cursor.getCount() > 0);
+                    }
+                },
+                getContentUri(null),
+                new String[]{ FilteredNumberColumns._ID },
+                FilteredNumberColumns.TYPE + "=" + FilteredNumberTypes.BLOCKED_NUMBER,
+                null,
+                null);
+    }
+
+    /**
+     * Check if this number has been blocked.
+     *
+     * @return {@code false} if the number was invalid and couldn't be checked,
+     *     {@code true} otherwise,
+     */
+    public final boolean isBlockedNumber(
+            final OnCheckBlockedListener listener, String number, String countryIso) {
+        final String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+        if (TextUtils.isEmpty(normalizedNumber)) {
+            return false;
+        }
+
+        startQuery(NO_TOKEN,
+                new Listener() {
+                    @Override
+                    protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
+                        if (cursor == null || cursor.getCount() != 1) {
+                            listener.onCheckComplete(null);
+                            return;
+                        }
+                        cursor.moveToFirst();
+                        if (cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns.TYPE))
+                                != FilteredNumberTypes.BLOCKED_NUMBER) {
+                            listener.onCheckComplete(null);
+                            return;
+                        }
+                        listener.onCheckComplete(
+                                cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns._ID)));
+                    }
+                },
+                getContentUri(null),
+                new String[]{ FilteredNumberColumns._ID, FilteredNumberColumns.TYPE },
+                FilteredNumberColumns.NORMALIZED_NUMBER + " = ?",
+                new String[]{ normalizedNumber },
+                null);
+
+        return true;
+    }
+
+    public final void blockNumber(
+            final OnBlockNumberListener listener, String number, String countryIso) {
+        blockNumber(listener, null, number, countryIso);
+    }
+
+    /**
+     * Add a number manually blocked by the user.
+     */
+    public final void blockNumber(
+            final OnBlockNumberListener listener,
+            String normalizedNumber,
+            String number,
+            String countryIso) {
+        if (normalizedNumber == null) {
+            normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+        }
+        ContentValues v = new ContentValues();
+        v.put(FilteredNumberColumns.NORMALIZED_NUMBER, normalizedNumber);
+        v.put(FilteredNumberColumns.NUMBER, number);
+        v.put(FilteredNumberColumns.COUNTRY_ISO, countryIso);
+        v.put(FilteredNumberColumns.TYPE, FilteredNumberTypes.BLOCKED_NUMBER);
+        v.put(FilteredNumberColumns.SOURCE, FilteredNumberSources.USER);
+        blockNumber(listener, v);
+    }
+
+    /**
+     * Block a number with specified ContentValues. Can be manually added or a restored row
+     * from performing the 'undo' action after unblocking.
+     */
+    public final void blockNumber(final OnBlockNumberListener listener, ContentValues values) {
+        startInsert(NO_TOKEN,
+                new Listener() {
+                    @Override
+                    public void onInsertComplete(int token, Object cookie, Uri uri) {
+                        if (listener != null ) {
+                            listener.onBlockComplete(uri);
+                        }
+                    }
+                }, getContentUri(null), values);
+    }
+
+    /**
+     * Removes row from database.
+     * Caller should call {@link FilteredNumberAsyncQueryHandler#startBlockedQuery} first.
+     * @param id The ID of row to remove, from {@link FilteredNumberAsyncQueryHandler#startBlockedQuery}.
+     */
+    public final void unblock(final OnUnblockNumberListener listener, Integer id) {
+        if (id == null) {
+            throw new IllegalArgumentException("Null id passed into unblock");
+        }
+        unblock(listener, getContentUri(id));
+    }
+
+    /**
+     * Removes row from database.
+     * @param uri The uri of row to remove, from
+     *         {@link FilteredNumberAsyncQueryHandler#blockNumber}.
+     */
+    public final void unblock(final OnUnblockNumberListener listener, final Uri uri) {
+        startQuery(NO_TOKEN, new Listener() {
+            @Override
+            public void onQueryComplete(int token, Object cookie, Cursor cursor) {
+                int rowsReturned = cursor == null ? 0 : cursor.getCount();
+                if (rowsReturned != 1) {
+                    throw new SQLiteDatabaseCorruptException
+                            ("Returned " + rowsReturned + " rows for uri "
+                                    + uri + "where 1 expected.");
+                }
+                cursor.moveToFirst();
+                final ContentValues values = new ContentValues();
+                DatabaseUtils.cursorRowToContentValues(cursor, values);
+                values.remove(FilteredNumberColumns._ID);
+
+                startDelete(NO_TOKEN, new Listener() {
+                    @Override
+                    public void onDeleteComplete(int token, Object cookie, int result) {
+                        if (listener != null) {
+                            listener.onUnblockComplete(result, values);
+                        }
+                    }
+                }, uri, null, null);
+            }
+        }, uri, null, null, null, null);
+    }
+}
diff --git a/src/com/android/dialer/database/FilteredNumberContract.java b/src/com/android/dialer/database/FilteredNumberContract.java
new file mode 100644
index 0000000..f396681
--- /dev/null
+++ b/src/com/android/dialer/database/FilteredNumberContract.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2015 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.dialer.database;
+
+import android.net.Uri;
+import android.provider.BaseColumns;
+
+import com.android.dialerbind.ObjectFactory;
+
+/**
+ * <p>
+ * The contract between the filtered number provider and applications. Contains
+ * definitions for the supported URIs and columns.
+ * Currently only accessible within Dialer.
+ * </p>
+ */
+public final class FilteredNumberContract {
+
+    /** The authority for the filtered numbers provider */
+    public static final String AUTHORITY = ObjectFactory.getFilteredNumberProviderAuthority();
+
+    /** A content:// style uri to the authority for the filtered numbers provider */
+    public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
+
+    /** The type of filtering to be applied, e.g. block the number or whitelist the number. */
+    public interface FilteredNumberTypes {
+        static final int UNDEFINED = 0;
+        /**
+         * Dialer will disconnect the call without sending the caller to voicemail.
+         */
+        static final int BLOCKED_NUMBER = 1;
+    }
+
+    /** The original source of the filtered number, e.g. the user manually added it. */
+    public interface FilteredNumberSources {
+        static final int UNDEFINED = 0;
+        /**
+         * The user manually added this number through Dialer (e.g. from the call log or InCallUI).
+         */
+        static final int USER = 1;
+    }
+
+    public interface FilteredNumberColumns {
+        // TYPE: INTEGER
+        static final String _ID = "_id";
+        /**
+         * Represents the number to be filtered, normalized to compare phone numbers for equality.
+         *
+         * TYPE: TEXT
+         */
+        static final String NORMALIZED_NUMBER = "normalized_number";
+        /**
+         * Represents the number to be filtered, for formatting and
+         * used with country iso for contact lookups.
+         *
+         * TYPE: TEXT
+         */
+        static final String NUMBER = "number";
+        /**
+         * The country code representing the country detected when
+         * the phone number was added to the database.
+         * Most numbers don't have the country code, so a best guess is provided by
+         * the country detector system. The country iso is also needed in order to format
+         * phone numbers correctly.
+         *
+         * TYPE: TEXT
+         */
+        static final String COUNTRY_ISO = "country_iso";
+        /**
+         * The number of times the number has been filtered by Dialer.
+         * When this number is incremented, LAST_TIME_FILTERED should also be updated to
+         * the current time.
+         *
+         * TYPE: INTEGER
+         */
+        static final String TIMES_FILTERED = "times_filtered";
+        /**
+         * Set to the current time when the phone number is filtered.
+         * When this is updated, TIMES_FILTERED should also be incremented.
+         *
+         * TYPE: LONG
+         */
+        static final String LAST_TIME_FILTERED = "last_time_filtered";
+        // TYPE: LONG
+        static final String CREATION_TIME = "creation_time";
+        /**
+         * Indicates the type of filtering to be applied.
+         *
+         * TYPE: INTEGER
+         * See {@link FilteredNumberTypes}
+         */
+        static final String TYPE = "type";
+        /**
+         * Integer representing the original source of the filtered number.
+         *
+         * TYPE: INTEGER
+         * See {@link FilteredNumberSources}
+         */
+        static final String SOURCE = "source";
+    }
+
+    /**
+     * <p>
+     * Constants for the table of filtered numbers.
+     * </p>
+     * <h3>Operations</h3>
+     * <dl>
+     * <dt><b>Insert</b></dt>
+     * <dd>Required fields: NUMBER, NORMALIZED_NUMBER, TYPE, SOURCE.
+     * A default value will be used for the other fields if left null.</dd>
+     * <dt><b>Update</b></dt>
+     * <dt><b>Delete</b></dt>
+     * <dt><b>Query</b></dt>
+     * <dd>{@link #CONTENT_URI} can be used for any query, append an ID to
+     * retrieve a specific filtered number entry.</dd>
+     * </dl>
+     */
+    public static class FilteredNumber implements BaseColumns {
+
+        public static final String FILTERED_NUMBERS_TABLE = "filtered_numbers_table";
+        public static final String FILTERED_NUMBERS_INCREMENT_FILTERED_COUNT =
+                "filtered_numbers_increment_filtered_count";
+
+        public static final Uri CONTENT_URI = Uri.withAppendedPath(
+                AUTHORITY_URI,
+                FILTERED_NUMBERS_TABLE);
+
+        public static final Uri CONTENT_URI_INCREMENT_FILTERED_COUNT = Uri.withAppendedPath(
+                AUTHORITY_URI,
+                FILTERED_NUMBERS_INCREMENT_FILTERED_COUNT);
+
+        /**
+         * This utility class cannot be instantiated.
+         */
+        private FilteredNumber () {}
+
+        /**
+         * The MIME type of {@link #CONTENT_URI} providing a directory of
+         * filtered numbers.
+         */
+        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/filtered_numbers_table";
+
+        /**
+         * The MIME type of a {@link #CONTENT_URI} single filtered number.
+         */
+        public static final String CONTENT_ITEM_TYPE =
+                "vnd.android.cursor.item/filtered_numbers_table";
+    }
+}
diff --git a/src/com/android/dialer/database/FilteredNumberProvider.java b/src/com/android/dialer/database/FilteredNumberProvider.java
new file mode 100644
index 0000000..3b63d4b
--- /dev/null
+++ b/src/com/android/dialer/database/FilteredNumberProvider.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2015 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.dialer.database;
+
+import android.content.ContentProvider;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.UriMatcher;
+import android.database.Cursor;
+import android.database.SQLException;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteQueryBuilder;
+import android.net.Uri;
+import android.os.Binder;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+import com.android.dialerbind.DatabaseHelperManager;
+import com.android.dialerbind.ObjectFactory;
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.Arrays;
+
+/**
+ * Filtered number content provider.
+ */
+public class FilteredNumberProvider extends ContentProvider {
+
+    private static String TAG = FilteredNumberProvider.class.getSimpleName();
+
+    private DialerDatabaseHelper mDialerDatabaseHelper;
+
+    private static final int FILTERED_NUMBERS_TABLE = 1;
+    private static final int FILTERED_NUMBERS_TABLE_ID = 2;
+    private static final int FILTERED_NUMBERS_INCREMENT_FILTERED_COUNT = 3;
+
+    private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
+
+    @Override
+    public boolean onCreate() {
+        mDialerDatabaseHelper = getDatabaseHelper(getContext());
+        if (mDialerDatabaseHelper == null) {
+            return false;
+        }
+        sUriMatcher.addURI(ObjectFactory.getFilteredNumberProviderAuthority(),
+                FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE,
+                FILTERED_NUMBERS_TABLE);
+        sUriMatcher.addURI(ObjectFactory.getFilteredNumberProviderAuthority(),
+                FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE + "/#",
+                FILTERED_NUMBERS_TABLE_ID);
+        sUriMatcher.addURI(ObjectFactory.getFilteredNumberProviderAuthority(),
+                FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_INCREMENT_FILTERED_COUNT
+                        + "/#",
+                FILTERED_NUMBERS_INCREMENT_FILTERED_COUNT);
+        return true;
+    }
+
+    @VisibleForTesting
+    protected DialerDatabaseHelper getDatabaseHelper(Context context) {
+        return DatabaseHelperManager.getDatabaseHelper(context);
+    }
+
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+                        String sortOrder) {
+        final SQLiteDatabase db = mDialerDatabaseHelper.getReadableDatabase();
+        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
+        qb.setTables(DialerDatabaseHelper.Tables.FILTERED_NUMBER_TABLE);
+        final int match = sUriMatcher.match(uri);
+        switch (match) {
+            case FILTERED_NUMBERS_TABLE:
+                break;
+            case FILTERED_NUMBERS_TABLE_ID:
+                qb.appendWhere(FilteredNumberColumns._ID + "=" + ContentUris.parseId(uri));
+                break;
+            default:
+                throw new IllegalArgumentException("Unknown uri: " + uri);
+        }
+        final Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, null);
+        if (c != null) {
+            c.setNotificationUri(getContext().getContentResolver(),
+                    FilteredNumberContract.FilteredNumber.CONTENT_URI);
+        } else {
+            Log.d(TAG, "CURSOR WAS NULL");
+        }
+        return c;
+    }
+
+    @Override
+    public String getType(Uri uri) {
+        return FilteredNumberContract.FilteredNumber.CONTENT_ITEM_TYPE;
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+        SQLiteDatabase db = mDialerDatabaseHelper.getWritableDatabase();
+        setDefaultValues(values);
+        long id = db.insert(DialerDatabaseHelper.Tables.FILTERED_NUMBER_TABLE, null, values);
+        if (id < 0) {
+            return null;
+        }
+        notifyChange(uri);
+        return ContentUris.withAppendedId(uri, id);
+    }
+
+    @VisibleForTesting
+    protected long getCurrentTimeMs() {
+        return System.currentTimeMillis();
+    }
+
+    private void setDefaultValues(ContentValues values) {
+        if (values.getAsString(FilteredNumberColumns.COUNTRY_ISO) == null) {
+            values.put(FilteredNumberColumns.COUNTRY_ISO,
+                    GeoUtil.getCurrentCountryIso(getContext()));
+        }
+        if (values.getAsInteger(FilteredNumberColumns.TIMES_FILTERED) == null) {
+            values.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 0);
+        }
+        if (values.getAsLong(FilteredNumberColumns.CREATION_TIME) == null) {
+            values.put(FilteredNumberColumns.CREATION_TIME, getCurrentTimeMs());
+        }
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        SQLiteDatabase db = mDialerDatabaseHelper.getWritableDatabase();
+        final int match = sUriMatcher.match(uri);
+        switch (match) {
+            case FILTERED_NUMBERS_TABLE:
+                break;
+            case FILTERED_NUMBERS_TABLE_ID:
+                selection = getSelectionWithId(selection, ContentUris.parseId(uri));
+                break;
+            default:
+                throw new IllegalArgumentException("Unknown uri: " + uri);
+        }
+        int rows = db.delete(DialerDatabaseHelper.Tables.FILTERED_NUMBER_TABLE,
+                selection,
+                selectionArgs);
+        if (rows > 0) {
+            notifyChange(uri);
+        }
+        return rows;
+    }
+
+    @Override
+    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+        SQLiteDatabase db = mDialerDatabaseHelper.getWritableDatabase();
+        final int match = sUriMatcher.match(uri);
+        switch (match) {
+            case FILTERED_NUMBERS_TABLE:
+                break;
+            case FILTERED_NUMBERS_TABLE_ID:
+                selection = getSelectionWithId(selection, ContentUris.parseId(uri));
+                break;
+            case FILTERED_NUMBERS_INCREMENT_FILTERED_COUNT:
+                final long id = ContentUris.parseId(uri);
+                try {
+                    db.execSQL(" UPDATE " + DialerDatabaseHelper.Tables.FILTERED_NUMBER_TABLE
+                            + " SET" + FilteredNumberColumns.TIMES_FILTERED + "="
+                            + FilteredNumberColumns.TIMES_FILTERED + "+1,"
+                            + FilteredNumberColumns.LAST_TIME_FILTERED + "="
+                            + getCurrentTimeMs()
+                            + " WHERE " + FilteredNumberColumns._ID + "=" + id);
+                } catch (SQLException e) {
+                    Log.d(TAG, "Could not update blocked statistics for " + id);
+                    return 0;
+                }
+                return 1;
+            default:
+                throw new IllegalArgumentException("Unknown uri: " + uri);
+        }
+        int rows = db.update(DialerDatabaseHelper.Tables.FILTERED_NUMBER_TABLE,
+                values,
+                selection,
+                selectionArgs);
+        if (rows > 0 ) {
+            notifyChange(uri);
+        }
+        return rows;
+    }
+
+    private String getSelectionWithId(String selection, long id) {
+        if (TextUtils.isEmpty(selection)) {
+            return FilteredNumberContract.FilteredNumberColumns._ID + "=" + id;
+        } else {
+            return selection + "AND " + FilteredNumberContract.FilteredNumberColumns._ID + "=" + id;
+        }
+    }
+
+    private void notifyChange(Uri uri) {
+        getContext().getContentResolver().notifyChange(uri, null);
+    }
+}
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
new file mode 100644
index 0000000..246b0d7
--- /dev/null
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -0,0 +1,1755 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.dialpad;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.media.AudioManager;
+import android.media.ToneGenerator;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Trace;
+import android.provider.Contacts.People;
+import android.provider.Contacts.Phones;
+import android.provider.Contacts.PhonesColumns;
+import android.provider.Settings;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.HapticFeedbackConstants;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.PopupMenu;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.dialog.CallSubjectDialog;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.common.util.PhoneNumberFormatter;
+import com.android.contacts.common.util.StopWatch;
+import com.android.contacts.common.widget.FloatingActionButtonController;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.NeededForReflection;
+import com.android.dialer.R;
+import com.android.dialer.SpecialCharSequenceMgr;
+import com.android.dialer.calllog.PhoneAccountUtils;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.IntentUtil.CallIntentBuilder;
+import com.android.dialer.util.TelecomUtil;
+import com.android.incallui.Call.LogState;
+import com.android.phone.common.CallLogAsync;
+import com.android.phone.common.animation.AnimUtils;
+import com.android.phone.common.dialpad.DialpadKeyButton;
+import com.android.phone.common.dialpad.DialpadView;
+
+import java.util.HashSet;
+import java.util.List;
+
+/**
+ * Fragment that displays a twelve-key phone dialpad.
+ */
+public class DialpadFragment extends Fragment
+        implements View.OnClickListener,
+        View.OnLongClickListener, View.OnKeyListener,
+        AdapterView.OnItemClickListener, TextWatcher,
+        PopupMenu.OnMenuItemClickListener,
+        DialpadKeyButton.OnPressedListener {
+    private static final String TAG = "DialpadFragment";
+
+    /**
+     * LinearLayout with getter and setter methods for the translationY property using floats,
+     * for animation purposes.
+     */
+    public static class DialpadSlidingRelativeLayout extends RelativeLayout {
+
+        public DialpadSlidingRelativeLayout(Context context) {
+            super(context);
+        }
+
+        public DialpadSlidingRelativeLayout(Context context, AttributeSet attrs) {
+            super(context, attrs);
+        }
+
+        public DialpadSlidingRelativeLayout(Context context, AttributeSet attrs, int defStyle) {
+            super(context, attrs, defStyle);
+        }
+
+        @NeededForReflection
+        public float getYFraction() {
+            final int height = getHeight();
+            if (height == 0) return 0;
+            return getTranslationY() / height;
+        }
+
+        @NeededForReflection
+        public void setYFraction(float yFraction) {
+            setTranslationY(yFraction * getHeight());
+        }
+    }
+
+    public interface OnDialpadQueryChangedListener {
+        void onDialpadQueryChanged(String query);
+    }
+
+    public interface HostInterface {
+        /**
+         * Notifies the parent activity that the space above the dialpad has been tapped with
+         * no query in the dialpad present. In most situations this will cause the dialpad to
+         * be dismissed, unless there happens to be content showing.
+         */
+        boolean onDialpadSpacerTouchWithEmptyQuery();
+    }
+
+    private static final boolean DEBUG = DialtactsActivity.DEBUG;
+
+    // This is the amount of screen the dialpad fragment takes up when fully displayed
+    private static final float DIALPAD_SLIDE_FRACTION = 0.67f;
+
+    private static final String EMPTY_NUMBER = "";
+    private static final char PAUSE = ',';
+    private static final char WAIT = ';';
+
+    /** The length of DTMF tones in milliseconds */
+    private static final int TONE_LENGTH_MS = 150;
+    private static final int TONE_LENGTH_INFINITE = -1;
+
+    /** The DTMF tone volume relative to other sounds in the stream */
+    private static final int TONE_RELATIVE_VOLUME = 80;
+
+    /** Stream type used to play the DTMF tones off call, and mapped to the volume control keys */
+    private static final int DIAL_TONE_STREAM_TYPE = AudioManager.STREAM_DTMF;
+
+
+    private OnDialpadQueryChangedListener mDialpadQueryListener;
+
+    private DialpadView mDialpadView;
+    private EditText mDigits;
+    private int mDialpadSlideInDuration;
+
+    /** Remembers if we need to clear digits field when the screen is completely gone. */
+    private boolean mClearDigitsOnStop;
+
+    private View mOverflowMenuButton;
+    private PopupMenu mOverflowPopupMenu;
+    private View mDelete;
+    private ToneGenerator mToneGenerator;
+    private final Object mToneGeneratorLock = new Object();
+    private View mSpacer;
+
+    private FloatingActionButtonController mFloatingActionButtonController;
+
+    /**
+     * Set of dialpad keys that are currently being pressed
+     */
+    private final HashSet<View> mPressedDialpadKeys = new HashSet<View>(12);
+
+    private ListView mDialpadChooser;
+    private DialpadChooserAdapter mDialpadChooserAdapter;
+
+    /**
+     * Regular expression prohibiting manual phone call. Can be empty, which means "no rule".
+     */
+    private String mProhibitedPhoneNumberRegexp;
+
+    private PseudoEmergencyAnimator mPseudoEmergencyAnimator;
+
+    // Last number dialed, retrieved asynchronously from the call DB
+    // in onCreate. This number is displayed when the user hits the
+    // send key and cleared in onPause.
+    private final CallLogAsync mCallLog = new CallLogAsync();
+    private String mLastNumberDialed = EMPTY_NUMBER;
+
+    // determines if we want to playback local DTMF tones.
+    private boolean mDTMFToneEnabled;
+
+    /** Identifier for the "Add Call" intent extra. */
+    private static final String ADD_CALL_MODE_KEY = "add_call_mode";
+
+    /**
+     * Identifier for intent extra for sending an empty Flash message for
+     * CDMA networks. This message is used by the network to simulate a
+     * press/depress of the "hookswitch" of a landline phone. Aka "empty flash".
+     *
+     * TODO: Using an intent extra to tell the phone to send this flash is a
+     * temporary measure. To be replaced with an Telephony/TelecomManager call in the future.
+     * TODO: Keep in sync with the string defined in OutgoingCallBroadcaster.java
+     * in Phone app until this is replaced with the Telephony/Telecom API.
+     */
+    private static final String EXTRA_SEND_EMPTY_FLASH
+            = "com.android.phone.extra.SEND_EMPTY_FLASH";
+
+    private String mCurrentCountryIso;
+
+    private CallStateReceiver mCallStateReceiver;
+
+    private class CallStateReceiver extends BroadcastReceiver {
+        /**
+         * Receive call state changes so that we can take down the
+         * "dialpad chooser" if the phone becomes idle while the
+         * chooser UI is visible.
+         */
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            // Log.i(TAG, "CallStateReceiver.onReceive");
+            String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
+            if ((TextUtils.equals(state, TelephonyManager.EXTRA_STATE_IDLE) ||
+                    TextUtils.equals(state, TelephonyManager.EXTRA_STATE_OFFHOOK))
+                    && isDialpadChooserVisible()) {
+                // Log.i(TAG, "Call ended with dialpad chooser visible!  Taking it down...");
+                // Note there's a race condition in the UI here: the
+                // dialpad chooser could conceivably disappear (on its
+                // own) at the exact moment the user was trying to select
+                // one of the choices, which would be confusing.  (But at
+                // least that's better than leaving the dialpad chooser
+                // onscreen, but useless...)
+                showDialpadChooser(false);
+            }
+        }
+    }
+
+    private boolean mWasEmptyBeforeTextChange;
+
+    /**
+     * This field is set to true while processing an incoming DIAL intent, in order to make sure
+     * that SpecialCharSequenceMgr actions can be triggered by user input but *not* by a
+     * tel: URI passed by some other app.  It will be set to false when all digits are cleared.
+     */
+    private boolean mDigitsFilledByIntent;
+
+    private boolean mStartedFromNewIntent = false;
+    private boolean mFirstLaunch = false;
+    private boolean mAnimate = false;
+
+    private static final String PREF_DIGITS_FILLED_BY_INTENT = "pref_digits_filled_by_intent";
+
+    private TelephonyManager getTelephonyManager() {
+        return (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
+    }
+
+    @Override
+    public Context getContext() {
+        return getActivity();
+    }
+
+    @Override
+    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+        mWasEmptyBeforeTextChange = TextUtils.isEmpty(s);
+    }
+
+    @Override
+    public void onTextChanged(CharSequence input, int start, int before, int changeCount) {
+        if (mWasEmptyBeforeTextChange != TextUtils.isEmpty(input)) {
+            final Activity activity = getActivity();
+            if (activity != null) {
+                activity.invalidateOptionsMenu();
+                updateMenuOverflowButton(mWasEmptyBeforeTextChange);
+            }
+        }
+
+        // DTMF Tones do not need to be played here any longer -
+        // the DTMF dialer handles that functionality now.
+    }
+
+    @Override
+    public void afterTextChanged(Editable input) {
+        // When DTMF dialpad buttons are being pressed, we delay SpecialCharSequenceMgr sequence,
+        // since some of SpecialCharSequenceMgr's behavior is too abrupt for the "touch-down"
+        // behavior.
+        if (!mDigitsFilledByIntent &&
+                SpecialCharSequenceMgr.handleChars(getActivity(), input.toString(), mDigits)) {
+            // A special sequence was entered, clear the digits
+            mDigits.getText().clear();
+        }
+
+        if (isDigitsEmpty()) {
+            mDigitsFilledByIntent = false;
+            mDigits.setCursorVisible(false);
+        }
+
+        if (mDialpadQueryListener != null) {
+            mDialpadQueryListener.onDialpadQueryChanged(mDigits.getText().toString());
+        }
+
+        updateDeleteButtonEnabledState();
+    }
+
+    @Override
+    public void onCreate(Bundle state) {
+        Trace.beginSection(TAG + " onCreate");
+        super.onCreate(state);
+
+        mFirstLaunch = state == null;
+
+        mCurrentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
+
+        mProhibitedPhoneNumberRegexp = getResources().getString(
+                R.string.config_prohibited_phone_number_regexp);
+
+        if (state != null) {
+            mDigitsFilledByIntent = state.getBoolean(PREF_DIGITS_FILLED_BY_INTENT);
+        }
+
+        mDialpadSlideInDuration = getResources().getInteger(R.integer.dialpad_slide_in_duration);
+
+        if (mCallStateReceiver == null) {
+            IntentFilter callStateIntentFilter = new IntentFilter(
+                    TelephonyManager.ACTION_PHONE_STATE_CHANGED);
+            mCallStateReceiver = new CallStateReceiver();
+            ((Context) getActivity()).registerReceiver(mCallStateReceiver, callStateIntentFilter);
+        }
+        Trace.endSection();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
+        Trace.beginSection(TAG + " onCreateView");
+        Trace.beginSection(TAG + " inflate view");
+        final View fragmentView = inflater.inflate(R.layout.dialpad_fragment, container,
+                false);
+        Trace.endSection();
+        Trace.beginSection(TAG + " buildLayer");
+        fragmentView.buildLayer();
+        Trace.endSection();
+
+        Trace.beginSection(TAG + " setup views");
+
+        mDialpadView = (DialpadView) fragmentView.findViewById(R.id.dialpad_view);
+        mDialpadView.setCanDigitsBeEdited(true);
+        mDigits = mDialpadView.getDigits();
+        mDigits.setKeyListener(UnicodeDialerKeyListener.INSTANCE);
+        mDigits.setOnClickListener(this);
+        mDigits.setOnKeyListener(this);
+        mDigits.setOnLongClickListener(this);
+        mDigits.addTextChangedListener(this);
+        mDigits.setElegantTextHeight(false);
+        PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(getActivity(), mDigits);
+        // Check for the presence of the keypad
+        View oneButton = fragmentView.findViewById(R.id.one);
+        if (oneButton != null) {
+            configureKeypadListeners(fragmentView);
+        }
+
+        mDelete = mDialpadView.getDeleteButton();
+
+        if (mDelete != null) {
+            mDelete.setOnClickListener(this);
+            mDelete.setOnLongClickListener(this);
+        }
+
+        mSpacer = fragmentView.findViewById(R.id.spacer);
+        mSpacer.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                if (isDigitsEmpty()) {
+                    if (getActivity() != null) {
+                        return ((HostInterface) getActivity()).onDialpadSpacerTouchWithEmptyQuery();
+                    }
+                    return true;
+                }
+                return false;
+            }
+        });
+
+        mDigits.setCursorVisible(false);
+
+        // Set up the "dialpad chooser" UI; see showDialpadChooser().
+        mDialpadChooser = (ListView) fragmentView.findViewById(R.id.dialpadChooser);
+        mDialpadChooser.setOnItemClickListener(this);
+
+        final View floatingActionButtonContainer =
+                fragmentView.findViewById(R.id.dialpad_floating_action_button_container);
+        final ImageButton floatingActionButton =
+                (ImageButton) fragmentView.findViewById(R.id.dialpad_floating_action_button);
+        floatingActionButton.setOnClickListener(this);
+        mFloatingActionButtonController = new FloatingActionButtonController(getActivity(),
+                floatingActionButtonContainer, floatingActionButton);
+        Trace.endSection();
+        Trace.endSection();
+        return fragmentView;
+    }
+
+    private boolean isLayoutReady() {
+        return mDigits != null;
+    }
+
+    @VisibleForTesting
+    public EditText getDigitsWidget() {
+        return mDigits;
+    }
+
+    /**
+     * @return true when {@link #mDigits} is actually filled by the Intent.
+     */
+    private boolean fillDigitsIfNecessary(Intent intent) {
+        // Only fills digits from an intent if it is a new intent.
+        // Otherwise falls back to the previously used number.
+        if (!mFirstLaunch && !mStartedFromNewIntent) {
+            return false;
+        }
+
+        final String action = intent.getAction();
+        if (Intent.ACTION_DIAL.equals(action) || Intent.ACTION_VIEW.equals(action)) {
+            Uri uri = intent.getData();
+            if (uri != null) {
+                if (PhoneAccount.SCHEME_TEL.equals(uri.getScheme())) {
+                    // Put the requested number into the input area
+                    String data = uri.getSchemeSpecificPart();
+                    // Remember it is filled via Intent.
+                    mDigitsFilledByIntent = true;
+                    final String converted = PhoneNumberUtils.convertKeypadLettersToDigits(
+                            PhoneNumberUtils.replaceUnicodeDigits(data));
+                    setFormattedDigits(converted, null);
+                    return true;
+                } else {
+                    if (!PermissionsUtil.hasContactsPermissions(getActivity())) {
+                        return false;
+                    }
+                    String type = intent.getType();
+                    if (People.CONTENT_ITEM_TYPE.equals(type)
+                            || Phones.CONTENT_ITEM_TYPE.equals(type)) {
+                        // Query the phone number
+                        Cursor c = getActivity().getContentResolver().query(intent.getData(),
+                                new String[] {PhonesColumns.NUMBER, PhonesColumns.NUMBER_KEY},
+                                null, null, null);
+                        if (c != null) {
+                            try {
+                                if (c.moveToFirst()) {
+                                    // Remember it is filled via Intent.
+                                    mDigitsFilledByIntent = true;
+                                    // Put the number into the input area
+                                    setFormattedDigits(c.getString(0), c.getString(1));
+                                    return true;
+                                }
+                            } finally {
+                                c.close();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Determines whether an add call operation is requested.
+     *
+     * @param intent The intent.
+     * @return {@literal true} if add call operation was requested.  {@literal false} otherwise.
+     */
+    public static boolean isAddCallMode(Intent intent) {
+        if (intent == null) {
+            return false;
+        }
+        final String action = intent.getAction();
+        if (Intent.ACTION_DIAL.equals(action) || Intent.ACTION_VIEW.equals(action)) {
+            // see if we are "adding a call" from the InCallScreen; false by default.
+            return intent.getBooleanExtra(ADD_CALL_MODE_KEY, false);
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Checks the given Intent and changes dialpad's UI state. For example, if the Intent requires
+     * the screen to enter "Add Call" mode, this method will show correct UI for the mode.
+     */
+    private void configureScreenFromIntent(Activity parent) {
+        // If we were not invoked with a DIAL intent,
+        if (!(parent instanceof DialtactsActivity)) {
+            setStartedFromNewIntent(false);
+            return;
+        }
+        // See if we were invoked with a DIAL intent. If we were, fill in the appropriate
+        // digits in the dialer field.
+        Intent intent = parent.getIntent();
+
+        if (!isLayoutReady()) {
+            // This happens typically when parent's Activity#onNewIntent() is called while
+            // Fragment#onCreateView() isn't called yet, and thus we cannot configure Views at
+            // this point. onViewCreate() should call this method after preparing layouts, so
+            // just ignore this call now.
+            Log.i(TAG,
+                    "Screen configuration is requested before onCreateView() is called. Ignored");
+            return;
+        }
+
+        boolean needToShowDialpadChooser = false;
+
+        // Be sure *not* to show the dialpad chooser if this is an
+        // explicit "Add call" action, though.
+        final boolean isAddCallMode = isAddCallMode(intent);
+        if (!isAddCallMode) {
+
+            // Don't show the chooser when called via onNewIntent() and phone number is present.
+            // i.e. User clicks a telephone link from gmail for example.
+            // In this case, we want to show the dialpad with the phone number.
+            final boolean digitsFilled = fillDigitsIfNecessary(intent);
+            if (!(mStartedFromNewIntent && digitsFilled)) {
+
+                final String action = intent.getAction();
+                if (Intent.ACTION_DIAL.equals(action) || Intent.ACTION_VIEW.equals(action)
+                        || Intent.ACTION_MAIN.equals(action)) {
+                    // If there's already an active call, bring up an intermediate UI to
+                    // make the user confirm what they really want to do.
+                    if (isPhoneInUse()) {
+                        needToShowDialpadChooser = true;
+                    }
+                }
+
+            }
+        }
+        showDialpadChooser(needToShowDialpadChooser);
+        setStartedFromNewIntent(false);
+    }
+
+    public void setStartedFromNewIntent(boolean value) {
+        mStartedFromNewIntent = value;
+    }
+
+    public void clearCallRateInformation() {
+        setCallRateInformation(null, null);
+    }
+
+    public void setCallRateInformation(String countryName, String displayRate) {
+        mDialpadView.setCallRateInformation(countryName, displayRate);
+    }
+
+    /**
+     * Sets formatted digits to digits field.
+     */
+    private void setFormattedDigits(String data, String normalizedNumber) {
+        final String formatted = getFormattedDigits(data, normalizedNumber, mCurrentCountryIso);
+        if (!TextUtils.isEmpty(formatted)) {
+            Editable digits = mDigits.getText();
+            digits.replace(0, digits.length(), formatted);
+            // for some reason this isn't getting called in the digits.replace call above..
+            // but in any case, this will make sure the background drawable looks right
+            afterTextChanged(digits);
+        }
+    }
+
+    /**
+     * Format the provided string of digits into one that represents a properly formatted phone
+     * number.
+     *
+     * @param dialString String of characters to format
+     * @param normalizedNumber the E164 format number whose country code is used if the given
+     *         phoneNumber doesn't have the country code.
+     * @param countryIso The country code representing the format to use if the provided normalized
+     *         number is null or invalid.
+     * @return the provided string of digits as a formatted phone number, retaining any
+     *         post-dial portion of the string.
+     */
+    @VisibleForTesting
+    static String getFormattedDigits(String dialString, String normalizedNumber, String countryIso) {
+        String number = PhoneNumberUtils.extractNetworkPortion(dialString);
+        // Also retrieve the post dial portion of the provided data, so that the entire dial
+        // string can be reconstituted later.
+        final String postDial = PhoneNumberUtils.extractPostDialPortion(dialString);
+
+        if (TextUtils.isEmpty(number)) {
+            return postDial;
+        }
+
+        number = PhoneNumberUtils.formatNumber(number, normalizedNumber, countryIso);
+
+        if (TextUtils.isEmpty(postDial)) {
+            return number;
+        }
+
+        return number.concat(postDial);
+    }
+
+    private void configureKeypadListeners(View fragmentView) {
+        final int[] buttonIds = new int[] {R.id.one, R.id.two, R.id.three, R.id.four, R.id.five,
+                R.id.six, R.id.seven, R.id.eight, R.id.nine, R.id.star, R.id.zero, R.id.pound};
+
+        DialpadKeyButton dialpadKey;
+
+        for (int i = 0; i < buttonIds.length; i++) {
+            dialpadKey = (DialpadKeyButton) fragmentView.findViewById(buttonIds[i]);
+            dialpadKey.setOnPressedListener(this);
+        }
+
+        // Long-pressing one button will initiate Voicemail.
+        final DialpadKeyButton one = (DialpadKeyButton) fragmentView.findViewById(R.id.one);
+        one.setOnLongClickListener(this);
+
+        // Long-pressing zero button will enter '+' instead.
+        final DialpadKeyButton zero = (DialpadKeyButton) fragmentView.findViewById(R.id.zero);
+        zero.setOnLongClickListener(this);
+    }
+
+    @Override
+    public void onStart() {
+        Trace.beginSection(TAG + " onStart");
+        super.onStart();
+        // if the mToneGenerator creation fails, just continue without it.  It is
+        // a local audio signal, and is not as important as the dtmf tone itself.
+        final long start = System.currentTimeMillis();
+        synchronized (mToneGeneratorLock) {
+            if (mToneGenerator == null) {
+                try {
+                    mToneGenerator = new ToneGenerator(DIAL_TONE_STREAM_TYPE, TONE_RELATIVE_VOLUME);
+                } catch (RuntimeException e) {
+                    Log.w(TAG, "Exception caught while creating local tone generator: " + e);
+                    mToneGenerator = null;
+                }
+            }
+        }
+        final long total = System.currentTimeMillis() - start;
+        if (total > 50) {
+            Log.i(TAG, "Time for ToneGenerator creation: " + total);
+        }
+        Trace.endSection();
+    };
+
+    @Override
+    public void onResume() {
+        Trace.beginSection(TAG + " onResume");
+        super.onResume();
+
+        final DialtactsActivity activity = (DialtactsActivity) getActivity();
+        mDialpadQueryListener = activity;
+
+        final StopWatch stopWatch = StopWatch.start("Dialpad.onResume");
+
+        // Query the last dialed number. Do it first because hitting
+        // the DB is 'slow'. This call is asynchronous.
+        queryLastOutgoingCall();
+
+        stopWatch.lap("qloc");
+
+        final ContentResolver contentResolver = activity.getContentResolver();
+
+        // retrieve the DTMF tone play back setting.
+        mDTMFToneEnabled = Settings.System.getInt(contentResolver,
+                Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1;
+
+        stopWatch.lap("dtwd");
+
+        stopWatch.lap("hptc");
+
+        mPressedDialpadKeys.clear();
+
+        configureScreenFromIntent(getActivity());
+
+        stopWatch.lap("fdin");
+
+        if (!isPhoneInUse()) {
+            // A sanity-check: the "dialpad chooser" UI should not be visible if the phone is idle.
+            showDialpadChooser(false);
+        }
+
+        stopWatch.lap("hnt");
+
+        updateDeleteButtonEnabledState();
+
+        stopWatch.lap("bes");
+
+        stopWatch.stopAndLog(TAG, 50);
+
+        // Populate the overflow menu in onResume instead of onCreate, so that if the SMS activity
+        // is disabled while Dialer is paused, the "Send a text message" option can be correctly
+        // removed when resumed.
+        mOverflowMenuButton = mDialpadView.getOverflowMenuButton();
+        mOverflowPopupMenu = buildOptionsMenu(mOverflowMenuButton);
+        mOverflowMenuButton.setOnTouchListener(mOverflowPopupMenu.getDragToOpenListener());
+        mOverflowMenuButton.setOnClickListener(this);
+        mOverflowMenuButton.setVisibility(isDigitsEmpty() ? View.INVISIBLE : View.VISIBLE);
+
+        if (mFirstLaunch) {
+            // The onHiddenChanged callback does not get called the first time the fragment is
+            // attached, so call it ourselves here.
+            onHiddenChanged(false);
+        }
+
+        mFirstLaunch = false;
+        Trace.endSection();
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+
+        // Make sure we don't leave this activity with a tone still playing.
+        stopTone();
+        mPressedDialpadKeys.clear();
+
+        // TODO: I wonder if we should not check if the AsyncTask that
+        // lookup the last dialed number has completed.
+        mLastNumberDialed = EMPTY_NUMBER;  // Since we are going to query again, free stale number.
+
+        SpecialCharSequenceMgr.cleanup();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+
+        synchronized (mToneGeneratorLock) {
+            if (mToneGenerator != null) {
+                mToneGenerator.release();
+                mToneGenerator = null;
+            }
+        }
+
+        if (mClearDigitsOnStop) {
+            mClearDigitsOnStop = false;
+            clearDialpad();
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(PREF_DIGITS_FILLED_BY_INTENT, mDigitsFilledByIntent);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (mPseudoEmergencyAnimator != null) {
+            mPseudoEmergencyAnimator.destroy();
+            mPseudoEmergencyAnimator = null;
+        }
+        ((Context) getActivity()).unregisterReceiver(mCallStateReceiver);
+    }
+
+    private void keyPressed(int keyCode) {
+        if (getView() == null || getView().getTranslationY() != 0) {
+            return;
+        }
+        switch (keyCode) {
+            case KeyEvent.KEYCODE_1:
+                playTone(ToneGenerator.TONE_DTMF_1, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_2:
+                playTone(ToneGenerator.TONE_DTMF_2, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_3:
+                playTone(ToneGenerator.TONE_DTMF_3, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_4:
+                playTone(ToneGenerator.TONE_DTMF_4, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_5:
+                playTone(ToneGenerator.TONE_DTMF_5, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_6:
+                playTone(ToneGenerator.TONE_DTMF_6, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_7:
+                playTone(ToneGenerator.TONE_DTMF_7, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_8:
+                playTone(ToneGenerator.TONE_DTMF_8, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_9:
+                playTone(ToneGenerator.TONE_DTMF_9, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_0:
+                playTone(ToneGenerator.TONE_DTMF_0, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_POUND:
+                playTone(ToneGenerator.TONE_DTMF_P, TONE_LENGTH_INFINITE);
+                break;
+            case KeyEvent.KEYCODE_STAR:
+                playTone(ToneGenerator.TONE_DTMF_S, TONE_LENGTH_INFINITE);
+                break;
+            default:
+                break;
+        }
+
+        getView().performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
+        KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
+        mDigits.onKeyDown(keyCode, event);
+
+        // If the cursor is at the end of the text we hide it.
+        final int length = mDigits.length();
+        if (length == mDigits.getSelectionStart() && length == mDigits.getSelectionEnd()) {
+            mDigits.setCursorVisible(false);
+        }
+    }
+
+    @Override
+    public boolean onKey(View view, int keyCode, KeyEvent event) {
+        switch (view.getId()) {
+            case R.id.digits:
+                if (keyCode == KeyEvent.KEYCODE_ENTER) {
+                    handleDialButtonPressed();
+                    return true;
+                }
+                break;
+        }
+        return false;
+    }
+
+    /**
+     * When a key is pressed, we start playing DTMF tone, do vibration, and enter the digit
+     * immediately. When a key is released, we stop the tone. Note that the "key press" event will
+     * be delivered by the system with certain amount of delay, it won't be synced with user's
+     * actual "touch-down" behavior.
+     */
+    @Override
+    public void onPressed(View view, boolean pressed) {
+        if (DEBUG) Log.d(TAG, "onPressed(). view: " + view + ", pressed: " + pressed);
+        if (pressed) {
+            switch (view.getId()) {
+                case R.id.one: {
+                    keyPressed(KeyEvent.KEYCODE_1);
+                    break;
+                }
+                case R.id.two: {
+                    keyPressed(KeyEvent.KEYCODE_2);
+                    break;
+                }
+                case R.id.three: {
+                    keyPressed(KeyEvent.KEYCODE_3);
+                    break;
+                }
+                case R.id.four: {
+                    keyPressed(KeyEvent.KEYCODE_4);
+                    break;
+                }
+                case R.id.five: {
+                    keyPressed(KeyEvent.KEYCODE_5);
+                    break;
+                }
+                case R.id.six: {
+                    keyPressed(KeyEvent.KEYCODE_6);
+                    break;
+                }
+                case R.id.seven: {
+                    keyPressed(KeyEvent.KEYCODE_7);
+                    break;
+                }
+                case R.id.eight: {
+                    keyPressed(KeyEvent.KEYCODE_8);
+                    break;
+                }
+                case R.id.nine: {
+                    keyPressed(KeyEvent.KEYCODE_9);
+                    break;
+                }
+                case R.id.zero: {
+                    keyPressed(KeyEvent.KEYCODE_0);
+                    break;
+                }
+                case R.id.pound: {
+                    keyPressed(KeyEvent.KEYCODE_POUND);
+                    break;
+                }
+                case R.id.star: {
+                    keyPressed(KeyEvent.KEYCODE_STAR);
+                    break;
+                }
+                default: {
+                    Log.wtf(TAG, "Unexpected onTouch(ACTION_DOWN) event from: " + view);
+                    break;
+                }
+            }
+            mPressedDialpadKeys.add(view);
+        } else {
+            mPressedDialpadKeys.remove(view);
+            if (mPressedDialpadKeys.isEmpty()) {
+                stopTone();
+            }
+        }
+    }
+
+    /**
+     * Called by the containing Activity to tell this Fragment to build an overflow options
+     * menu for display by the container when appropriate.
+     *
+     * @param invoker the View that invoked the options menu, to act as an anchor location.
+     */
+    private PopupMenu buildOptionsMenu(View invoker) {
+        final PopupMenu popupMenu = new PopupMenu(getActivity(), invoker) {
+            @Override
+            public void show() {
+                final Menu menu = getMenu();
+
+                boolean enable = !isDigitsEmpty();
+                for (int i = 0; i < menu.size(); i++) {
+                    MenuItem item = menu.getItem(i);
+                    item.setEnabled(enable);
+                    if (item.getItemId() == R.id.menu_call_with_note) {
+                        item.setVisible(CallUtil.isCallWithSubjectSupported(getContext()));
+                    }
+                }
+                super.show();
+            }
+        };
+        popupMenu.inflate(R.menu.dialpad_options);
+        popupMenu.setOnMenuItemClickListener(this);
+        return popupMenu;
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.dialpad_floating_action_button:
+                view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
+                handleDialButtonPressed();
+                break;
+            case R.id.deleteButton: {
+                keyPressed(KeyEvent.KEYCODE_DEL);
+                break;
+            }
+            case R.id.digits: {
+                if (!isDigitsEmpty()) {
+                    mDigits.setCursorVisible(true);
+                }
+                break;
+            }
+            case R.id.dialpad_overflow: {
+                mOverflowPopupMenu.show();
+                break;
+            }
+            default: {
+                Log.wtf(TAG, "Unexpected onClick() event from: " + view);
+                return;
+            }
+        }
+    }
+
+    @Override
+    public boolean onLongClick(View view) {
+        final Editable digits = mDigits.getText();
+        final int id = view.getId();
+        switch (id) {
+            case R.id.deleteButton: {
+                digits.clear();
+                return true;
+            }
+            case R.id.one: {
+                // '1' may be already entered since we rely on onTouch() event for numeric buttons.
+                // Just for safety we also check if the digits field is empty or not.
+                if (isDigitsEmpty() || TextUtils.equals(mDigits.getText(), "1")) {
+                    // We'll try to initiate voicemail and thus we want to remove irrelevant string.
+                    removePreviousDigitIfPossible('1');
+
+                    List<PhoneAccountHandle> subscriptionAccountHandles =
+                            PhoneAccountUtils.getSubscriptionPhoneAccounts(getActivity());
+                    boolean hasUserSelectedDefault = subscriptionAccountHandles.contains(
+                            TelecomUtil.getDefaultOutgoingPhoneAccount(getActivity(),
+                                    PhoneAccount.SCHEME_VOICEMAIL));
+                    boolean needsAccountDisambiguation = subscriptionAccountHandles.size() > 1
+                            && !hasUserSelectedDefault;
+
+                    if (needsAccountDisambiguation || isVoicemailAvailable()) {
+                        // On a multi-SIM phone, if the user has not selected a default
+                        // subscription, initiate a call to voicemail so they can select an account
+                        // from the "Call with" dialog.
+                        callVoicemail();
+                    } else if (getActivity() != null) {
+                        // Voicemail is unavailable maybe because Airplane mode is turned on.
+                        // Check the current status and show the most appropriate error message.
+                        final boolean isAirplaneModeOn =
+                                Settings.System.getInt(getActivity().getContentResolver(),
+                                Settings.System.AIRPLANE_MODE_ON, 0) != 0;
+                        if (isAirplaneModeOn) {
+                            DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
+                                    R.string.dialog_voicemail_airplane_mode_message);
+                            dialogFragment.show(getFragmentManager(),
+                                    "voicemail_request_during_airplane_mode");
+                        } else {
+                            DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
+                                    R.string.dialog_voicemail_not_ready_message);
+                            dialogFragment.show(getFragmentManager(), "voicemail_not_ready");
+                        }
+                    }
+                    return true;
+                }
+                return false;
+            }
+            case R.id.zero: {
+                if (mPressedDialpadKeys.contains(view)) {
+                    // If the zero key is currently pressed, then the long press occurred by touch
+                    // (and not via other means like certain accessibility input methods).
+                    // Remove the '0' that was input when the key was first pressed.
+                    removePreviousDigitIfPossible('0');
+                }
+
+                keyPressed(KeyEvent.KEYCODE_PLUS);
+
+                // Stop tone immediately
+                stopTone();
+                mPressedDialpadKeys.remove(view);
+
+                return true;
+            }
+            case R.id.digits: {
+                // Right now EditText does not show the "paste" option when cursor is not visible.
+                // To show that, make the cursor visible, and return false, letting the EditText
+                // show the option by itself.
+                mDigits.setCursorVisible(true);
+                return false;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Remove the digit just before the current position of the cursor, iff the following conditions
+     *  are true:
+     * 1) The cursor is not positioned at index 0.
+     * 2) The digit before the current cursor position matches the current digit.
+     *
+     * @param digit to remove from the digits view.
+     */
+    private void removePreviousDigitIfPossible(char digit) {
+        final int currentPosition = mDigits.getSelectionStart();
+        if (currentPosition > 0 && digit == mDigits.getText().charAt(currentPosition - 1)) {
+            mDigits.setSelection(currentPosition);
+            mDigits.getText().delete(currentPosition - 1, currentPosition);
+        }
+    }
+
+    public void callVoicemail() {
+        DialerUtils.startActivityWithErrorToast(getActivity(),
+                new CallIntentBuilder(CallUtil.getVoicemailUri())
+                        .setCallInitiationType(LogState.INITIATION_DIALPAD)
+                        .build());
+        hideAndClearDialpad(false);
+    }
+
+    private void hideAndClearDialpad(boolean animate) {
+        ((DialtactsActivity) getActivity()).hideDialpadFragment(animate, true);
+    }
+
+    public static class ErrorDialogFragment extends DialogFragment {
+        private int mTitleResId;
+        private int mMessageResId;
+
+        private static final String ARG_TITLE_RES_ID = "argTitleResId";
+        private static final String ARG_MESSAGE_RES_ID = "argMessageResId";
+
+        public static ErrorDialogFragment newInstance(int messageResId) {
+            return newInstance(0, messageResId);
+        }
+
+        public static ErrorDialogFragment newInstance(int titleResId, int messageResId) {
+            final ErrorDialogFragment fragment = new ErrorDialogFragment();
+            final Bundle args = new Bundle();
+            args.putInt(ARG_TITLE_RES_ID, titleResId);
+            args.putInt(ARG_MESSAGE_RES_ID, messageResId);
+            fragment.setArguments(args);
+            return fragment;
+        }
+
+        @Override
+        public void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            mTitleResId = getArguments().getInt(ARG_TITLE_RES_ID);
+            mMessageResId = getArguments().getInt(ARG_MESSAGE_RES_ID);
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+            if (mTitleResId != 0) {
+                builder.setTitle(mTitleResId);
+            }
+            if (mMessageResId != 0) {
+                builder.setMessage(mMessageResId);
+            }
+            builder.setPositiveButton(android.R.string.ok,
+                    new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialog, int which) {
+                                dismiss();
+                            }
+                    });
+            return builder.create();
+        }
+    }
+
+    /**
+     * In most cases, when the dial button is pressed, there is a
+     * number in digits area. Pack it in the intent, start the
+     * outgoing call broadcast as a separate task and finish this
+     * activity.
+     *
+     * When there is no digit and the phone is CDMA and off hook,
+     * we're sending a blank flash for CDMA. CDMA networks use Flash
+     * messages when special processing needs to be done, mainly for
+     * 3-way or call waiting scenarios. Presumably, here we're in a
+     * special 3-way scenario where the network needs a blank flash
+     * before being able to add the new participant.  (This is not the
+     * case with all 3-way calls, just certain CDMA infrastructures.)
+     *
+     * Otherwise, there is no digit, display the last dialed
+     * number. Don't finish since the user may want to edit it. The
+     * user needs to press the dial button again, to dial it (general
+     * case described above).
+     */
+    private void handleDialButtonPressed() {
+        if (isDigitsEmpty()) { // No number entered.
+            handleDialButtonClickWithEmptyDigits();
+        } else {
+            final String number = mDigits.getText().toString();
+
+            // "persist.radio.otaspdial" is a temporary hack needed for one carrier's automated
+            // test equipment.
+            // TODO: clean it up.
+            if (number != null
+                    && !TextUtils.isEmpty(mProhibitedPhoneNumberRegexp)
+                    && number.matches(mProhibitedPhoneNumberRegexp)) {
+                Log.i(TAG, "The phone number is prohibited explicitly by a rule.");
+                if (getActivity() != null) {
+                    DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
+                            R.string.dialog_phone_call_prohibited_message);
+                    dialogFragment.show(getFragmentManager(), "phone_prohibited_dialog");
+                }
+
+                // Clear the digits just in case.
+                clearDialpad();
+            } else {
+                final Intent intent = new CallIntentBuilder(number).
+                        setCallInitiationType(LogState.INITIATION_DIALPAD)
+                        .build();
+                DialerUtils.startActivityWithErrorToast(getActivity(), intent);
+                hideAndClearDialpad(false);
+            }
+        }
+    }
+
+    public void clearDialpad() {
+        if (mDigits != null) {
+            mDigits.getText().clear();
+        }
+    }
+
+    private void handleDialButtonClickWithEmptyDigits() {
+        if (phoneIsCdma() && isPhoneInUse()) {
+            // TODO: Move this logic into services/Telephony
+            //
+            // 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.
+     */
+    private void playTone(int tone) {
+        playTone(tone, TONE_LENGTH_MS);
+    }
+
+    /**
+     * Play the specified tone for the specified milliseconds
+     *
+     * The tone is played locally, using the audio stream for phone calls.
+     * Tones are played only if the "Audible touch tones" user preference
+     * is checked, and are NOT played if the device is in silent mode.
+     *
+     * The tone length can be -1, meaning "keep playing the tone." If the caller does so, it should
+     * call stopTone() afterward.
+     *
+     * @param tone a tone code from {@link ToneGenerator}
+     * @param durationMs tone length.
+     */
+    private void playTone(int tone, int durationMs) {
+        // if local tone playback is disabled, just return.
+        if (!mDTMFToneEnabled) {
+            return;
+        }
+
+        // Also do nothing if the phone is in silent mode.
+        // We need to re-check the ringer mode for *every* playTone()
+        // call, rather than keeping a local flag that's updated in
+        // onResume(), since it's possible to toggle silent mode without
+        // leaving the current activity (via the ENDCALL-longpress menu.)
+        AudioManager audioManager =
+                (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
+        int ringerMode = audioManager.getRingerMode();
+        if ((ringerMode == AudioManager.RINGER_MODE_SILENT)
+            || (ringerMode == AudioManager.RINGER_MODE_VIBRATE)) {
+            return;
+        }
+
+        synchronized (mToneGeneratorLock) {
+            if (mToneGenerator == null) {
+                Log.w(TAG, "playTone: mToneGenerator == null, tone: " + tone);
+                return;
+            }
+
+            // Start the new tone (will stop any playing tone)
+            mToneGenerator.startTone(tone, durationMs);
+        }
+    }
+
+    /**
+     * Stop the tone if it is played.
+     */
+    private void stopTone() {
+        // if local tone playback is disabled, just return.
+        if (!mDTMFToneEnabled) {
+            return;
+        }
+        synchronized (mToneGeneratorLock) {
+            if (mToneGenerator == null) {
+                Log.w(TAG, "stopTone: mToneGenerator == null");
+                return;
+            }
+            mToneGenerator.stopTone();
+        }
+    }
+
+    /**
+     * Brings up the "dialpad chooser" UI in place of the usual Dialer
+     * elements (the textfield/button and the dialpad underneath).
+     *
+     * We show this UI if the user brings up the Dialer while a call is
+     * already in progress, since there's a good chance we got here
+     * accidentally (and the user really wanted the in-call dialpad instead).
+     * So in this situation we display an intermediate UI that lets the user
+     * explicitly choose between the in-call dialpad ("Use touch tone
+     * keypad") and the regular Dialer ("Add call").  (Or, the option "Return
+     * to call in progress" just goes back to the in-call UI with no dialpad
+     * at all.)
+     *
+     * @param enabled If true, show the "dialpad chooser" instead
+     *                of the regular Dialer UI
+     */
+    private void showDialpadChooser(boolean enabled) {
+        if (getActivity() == null) {
+            return;
+        }
+        // Check if onCreateView() is already called by checking one of View objects.
+        if (!isLayoutReady()) {
+            return;
+        }
+
+        if (enabled) {
+            Log.d(TAG, "Showing dialpad chooser!");
+            if (mDialpadView != null) {
+                mDialpadView.setVisibility(View.GONE);
+            }
+
+            mFloatingActionButtonController.setVisible(false);
+            mDialpadChooser.setVisibility(View.VISIBLE);
+
+            // Instantiate the DialpadChooserAdapter and hook it up to the
+            // ListView.  We do this only once.
+            if (mDialpadChooserAdapter == null) {
+                mDialpadChooserAdapter = new DialpadChooserAdapter(getActivity());
+            }
+            mDialpadChooser.setAdapter(mDialpadChooserAdapter);
+        } else {
+            Log.d(TAG, "Displaying normal Dialer UI.");
+            if (mDialpadView != null) {
+                mDialpadView.setVisibility(View.VISIBLE);
+            } else {
+                mDigits.setVisibility(View.VISIBLE);
+            }
+
+            mFloatingActionButtonController.setVisible(true);
+            mDialpadChooser.setVisibility(View.GONE);
+        }
+    }
+
+    /**
+     * @return true if we're currently showing the "dialpad chooser" UI.
+     */
+    private boolean isDialpadChooserVisible() {
+        return mDialpadChooser.getVisibility() == View.VISIBLE;
+    }
+
+    /**
+     * Simple list adapter, binding to an icon + text label
+     * for each item in the "dialpad chooser" list.
+     */
+    private static class DialpadChooserAdapter extends BaseAdapter {
+        private LayoutInflater mInflater;
+
+        // Simple struct for a single "choice" item.
+        static class ChoiceItem {
+            String text;
+            Bitmap icon;
+            int id;
+
+            public ChoiceItem(String s, Bitmap b, int i) {
+                text = s;
+                icon = b;
+                id = i;
+            }
+        }
+
+        // IDs for the possible "choices":
+        static final int DIALPAD_CHOICE_USE_DTMF_DIALPAD = 101;
+        static final int DIALPAD_CHOICE_RETURN_TO_CALL = 102;
+        static final int DIALPAD_CHOICE_ADD_NEW_CALL = 103;
+
+        private static final int NUM_ITEMS = 3;
+        private ChoiceItem mChoiceItems[] = new ChoiceItem[NUM_ITEMS];
+
+        public DialpadChooserAdapter(Context context) {
+            // Cache the LayoutInflate to avoid asking for a new one each time.
+            mInflater = LayoutInflater.from(context);
+
+            // Initialize the possible choices.
+            // TODO: could this be specified entirely in XML?
+
+            // - "Use touch tone keypad"
+            mChoiceItems[0] = new ChoiceItem(
+                    context.getString(R.string.dialer_useDtmfDialpad),
+                    BitmapFactory.decodeResource(context.getResources(),
+                                                 R.drawable.ic_dialer_fork_tt_keypad),
+                    DIALPAD_CHOICE_USE_DTMF_DIALPAD);
+
+            // - "Return to call in progress"
+            mChoiceItems[1] = new ChoiceItem(
+                    context.getString(R.string.dialer_returnToInCallScreen),
+                    BitmapFactory.decodeResource(context.getResources(),
+                                                 R.drawable.ic_dialer_fork_current_call),
+                    DIALPAD_CHOICE_RETURN_TO_CALL);
+
+            // - "Add call"
+            mChoiceItems[2] = new ChoiceItem(
+                    context.getString(R.string.dialer_addAnotherCall),
+                    BitmapFactory.decodeResource(context.getResources(),
+                                                 R.drawable.ic_dialer_fork_add_call),
+                    DIALPAD_CHOICE_ADD_NEW_CALL);
+        }
+
+        @Override
+        public int getCount() {
+            return NUM_ITEMS;
+        }
+
+        /**
+         * Return the ChoiceItem for a given position.
+         */
+        @Override
+        public Object getItem(int position) {
+            return mChoiceItems[position];
+        }
+
+        /**
+         * Return a unique ID for each possible choice.
+         */
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        /**
+         * Make a view for each row.
+         */
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            // When convertView is non-null, we can reuse it (there's no need
+            // to reinflate it.)
+            if (convertView == null) {
+                convertView = mInflater.inflate(R.layout.dialpad_chooser_list_item, null);
+            }
+
+            TextView text = (TextView) convertView.findViewById(R.id.text);
+            text.setText(mChoiceItems[position].text);
+
+            ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
+            icon.setImageBitmap(mChoiceItems[position].icon);
+
+            return convertView;
+        }
+    }
+
+    /**
+     * Handle clicks from the dialpad chooser.
+     */
+    @Override
+    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
+        DialpadChooserAdapter.ChoiceItem item =
+                (DialpadChooserAdapter.ChoiceItem) parent.getItemAtPosition(position);
+        int itemId = item.id;
+        switch (itemId) {
+            case DialpadChooserAdapter.DIALPAD_CHOICE_USE_DTMF_DIALPAD:
+                // Log.i(TAG, "DIALPAD_CHOICE_USE_DTMF_DIALPAD");
+                // Fire off an intent to go back to the in-call UI
+                // with the dialpad visible.
+                returnToInCallScreen(true);
+                break;
+
+            case DialpadChooserAdapter.DIALPAD_CHOICE_RETURN_TO_CALL:
+                // Log.i(TAG, "DIALPAD_CHOICE_RETURN_TO_CALL");
+                // Fire off an intent to go back to the in-call UI
+                // (with the dialpad hidden).
+                returnToInCallScreen(false);
+                break;
+
+            case DialpadChooserAdapter.DIALPAD_CHOICE_ADD_NEW_CALL:
+                // Log.i(TAG, "DIALPAD_CHOICE_ADD_NEW_CALL");
+                // Ok, guess the user really did want to be here (in the
+                // regular Dialer) after all.  Bring back the normal Dialer UI.
+                showDialpadChooser(false);
+                break;
+
+            default:
+                Log.w(TAG, "onItemClick: unexpected itemId: " + itemId);
+                break;
+        }
+    }
+
+    /**
+     * Returns to the in-call UI (where there's presumably a call in
+     * progress) in response to the user selecting "use touch tone keypad"
+     * or "return to call" from the dialpad chooser.
+     */
+    private void returnToInCallScreen(boolean showDialpad) {
+        TelecomUtil.showInCallScreen(getActivity(), showDialpad);
+
+        // Finally, finish() ourselves so that we don't stay on the
+        // activity stack.
+        // Note that we do this whether or not the showCallScreenWithDialpad()
+        // call above had any effect or not!  (That call is a no-op if the
+        // phone is idle, which can happen if the current call ends while
+        // the dialpad chooser is up.  In this case we can't show the
+        // InCallScreen, and there's no point staying here in the Dialer,
+        // so we just take the user back where he came from...)
+        getActivity().finish();
+    }
+
+    /**
+     * @return true if the phone is "in use", meaning that at least one line
+     *              is active (ie. off hook or ringing or dialing, or on hold).
+     */
+    private boolean isPhoneInUse() {
+        final Context context = getActivity();
+        if (context != null) {
+            return TelecomUtil.isInCall(context);
+        }
+        return false;
+    }
+
+    /**
+     * @return true if the phone is a CDMA phone type
+     */
+    private boolean phoneIsCdma() {
+        return getTelephonyManager().getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA;
+    }
+
+    @Override
+    public boolean onMenuItemClick(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_2s_pause:
+                updateDialString(PAUSE);
+                return true;
+            case R.id.menu_add_wait:
+                updateDialString(WAIT);
+                return true;
+            case R.id.menu_call_with_note:
+                CallSubjectDialog.start(getActivity(), mDigits.getText().toString());
+                hideAndClearDialpad(false);
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    /**
+     * Updates the dial string (mDigits) after inserting a Pause character (,)
+     * or Wait character (;).
+     */
+    private void updateDialString(char newDigit) {
+        if (newDigit != WAIT && newDigit != PAUSE) {
+            throw new IllegalArgumentException(
+                    "Not expected for anything other than PAUSE & WAIT");
+        }
+
+        int selectionStart;
+        int selectionEnd;
+
+        // SpannableStringBuilder editable_text = new SpannableStringBuilder(mDigits.getText());
+        int anchor = mDigits.getSelectionStart();
+        int point = mDigits.getSelectionEnd();
+
+        selectionStart = Math.min(anchor, point);
+        selectionEnd = Math.max(anchor, point);
+
+        if (selectionStart == -1) {
+            selectionStart = selectionEnd = mDigits.length();
+        }
+
+        Editable digits = mDigits.getText();
+
+        if (canAddDigit(digits, selectionStart, selectionEnd, newDigit)) {
+            digits.replace(selectionStart, selectionEnd, Character.toString(newDigit));
+
+            if (selectionStart != selectionEnd) {
+              // Unselect: back to a regular cursor, just pass the character inserted.
+              mDigits.setSelection(selectionStart + 1);
+            }
+        }
+    }
+
+    /**
+     * Update the enabledness of the "Dial" and "Backspace" buttons if applicable.
+     */
+    private void updateDeleteButtonEnabledState() {
+        if (getActivity() == null) {
+            return;
+        }
+        final boolean digitsNotEmpty = !isDigitsEmpty();
+        mDelete.setEnabled(digitsNotEmpty);
+    }
+
+    /**
+     * Handle transitions for the menu button depending on the state of the digits edit text.
+     * Transition out when going from digits to no digits and transition in when the first digit
+     * is pressed.
+     * @param transitionIn True if transitioning in, False if transitioning out
+     */
+    private void updateMenuOverflowButton(boolean transitionIn) {
+        mOverflowMenuButton = mDialpadView.getOverflowMenuButton();
+        if (transitionIn) {
+            AnimUtils.fadeIn(mOverflowMenuButton, AnimUtils.DEFAULT_DURATION);
+        } else {
+            AnimUtils.fadeOut(mOverflowMenuButton, AnimUtils.DEFAULT_DURATION);
+        }
+    }
+
+    /**
+     * Check if voicemail is enabled/accessible.
+     *
+     * @return true if voicemail is enabled and accessible. Note that this can be false
+     * "temporarily" after the app boot.
+     */
+    private boolean isVoicemailAvailable() {
+        try {
+            PhoneAccountHandle defaultUserSelectedAccount =
+                    TelecomUtil.getDefaultOutgoingPhoneAccount(getActivity(),
+                            PhoneAccount.SCHEME_VOICEMAIL);
+            if (defaultUserSelectedAccount == null) {
+                // In a single-SIM phone, there is no default outgoing phone account selected by
+                // the user, so just call TelephonyManager#getVoicemailNumber directly.
+                return !TextUtils.isEmpty(getTelephonyManager().getVoiceMailNumber());
+            } else {
+                return !TextUtils.isEmpty(TelecomUtil.getVoicemailNumber(getActivity(),
+                        defaultUserSelectedAccount));
+            }
+        } catch (SecurityException se) {
+            // Possibly no READ_PHONE_STATE privilege.
+            Log.w(TAG, "SecurityException is thrown. Maybe privilege isn't sufficient.");
+        }
+        return false;
+    }
+
+    /**
+     * Returns true of the newDigit parameter can be added at the current selection
+     * point, otherwise returns false.
+     * Only prevents input of WAIT and PAUSE digits at an unsupported position.
+     * Fails early if start == -1 or start is larger than end.
+     */
+    @VisibleForTesting
+    /* package */ static boolean canAddDigit(CharSequence digits, int start, int end,
+                                             char newDigit) {
+        if(newDigit != WAIT && newDigit != PAUSE) {
+            throw new IllegalArgumentException(
+                    "Should not be called for anything other than PAUSE & WAIT");
+        }
+
+        // False if no selection, or selection is reversed (end < start)
+        if (start == -1 || end < start) {
+            return false;
+        }
+
+        // unsupported selection-out-of-bounds state
+        if (start > digits.length() || end > digits.length()) return false;
+
+        // Special digit cannot be the first digit
+        if (start == 0) return false;
+
+        if (newDigit == WAIT) {
+            // preceding char is ';' (WAIT)
+            if (digits.charAt(start - 1) == WAIT) return false;
+
+            // next char is ';' (WAIT)
+            if ((digits.length() > end) && (digits.charAt(end) == WAIT)) return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * @return true if the widget with the phone number digits is empty.
+     */
+    private boolean isDigitsEmpty() {
+        return mDigits.length() == 0;
+    }
+
+    /**
+     * Starts the asyn query to get the last dialed/outgoing
+     * number. When the background query finishes, mLastNumberDialed
+     * is set to the last dialed number or an empty string if none
+     * exists yet.
+     */
+    private void queryLastOutgoingCall() {
+        mLastNumberDialed = EMPTY_NUMBER;
+        if (!PermissionsUtil.hasPhonePermissions(getActivity())) {
+            return;
+        }
+        CallLogAsync.GetLastOutgoingCallArgs lastCallArgs =
+                new CallLogAsync.GetLastOutgoingCallArgs(
+                    getActivity(),
+                    new CallLogAsync.OnLastOutgoingCallComplete() {
+                        @Override
+                        public void lastOutgoingCall(String number) {
+                            // TODO: Filter out emergency numbers if
+                            // the carrier does not want redial for
+                            // these.
+                            // If the fragment has already been detached since the last time
+                            // we called queryLastOutgoingCall in onResume there is no point
+                            // doing anything here.
+                            if (getActivity() == null) return;
+                            mLastNumberDialed = number;
+                            updateDeleteButtonEnabledState();
+                        }
+                    });
+        mCallLog.getLastOutgoingCall(lastCallArgs);
+    }
+
+    private Intent newFlashIntent() {
+        final Intent intent = new CallIntentBuilder(EMPTY_NUMBER).build();
+        intent.putExtra(EXTRA_SEND_EMPTY_FLASH, true);
+        return intent;
+    }
+
+    @Override
+    public void onHiddenChanged(boolean hidden) {
+        super.onHiddenChanged(hidden);
+        final DialtactsActivity activity = (DialtactsActivity) getActivity();
+        final DialpadView dialpadView = (DialpadView) getView().findViewById(R.id.dialpad_view);
+        if (activity == null) return;
+        if (!hidden && !isDialpadChooserVisible()) {
+            if (mAnimate) {
+                dialpadView.animateShow();
+            }
+            mFloatingActionButtonController.setVisible(false);
+            mFloatingActionButtonController.scaleIn(mAnimate ? mDialpadSlideInDuration : 0);
+            activity.onDialpadShown();
+            mDigits.requestFocus();
+        }
+        if (hidden) {
+            if (mAnimate) {
+                mFloatingActionButtonController.scaleOut();
+            } else {
+                mFloatingActionButtonController.setVisible(false);
+            }
+        }
+    }
+
+    public void setAnimate(boolean value) {
+        mAnimate = value;
+    }
+
+    public boolean getAnimate() {
+        return mAnimate;
+    }
+
+    public void setYFraction(float yFraction) {
+        ((DialpadSlidingRelativeLayout) getView()).setYFraction(yFraction);
+    }
+
+    public int getDialpadHeight() {
+        if (mDialpadView == null) {
+            return 0;
+        }
+        return mDialpadView.getHeight();
+    }
+
+    public void process_quote_emergency_unquote(String query) {
+        if (PseudoEmergencyAnimator.PSEUDO_EMERGENCY_NUMBER.equals(query)) {
+            if (mPseudoEmergencyAnimator == null) {
+                mPseudoEmergencyAnimator = new PseudoEmergencyAnimator(
+                        new PseudoEmergencyAnimator.ViewProvider() {
+                            @Override
+                            public View getView() {
+                                return DialpadFragment.this.getView();
+                            }
+                        });
+            }
+            mPseudoEmergencyAnimator.start();
+        } else {
+            if (mPseudoEmergencyAnimator != null) {
+                mPseudoEmergencyAnimator.end();
+            }
+        }
+    }
+
+}
diff --git a/src/com/android/dialer/dialpad/LatinSmartDialMap.java b/src/com/android/dialer/dialpad/LatinSmartDialMap.java
new file mode 100644
index 0000000..ef1ec0a
--- /dev/null
+++ b/src/com/android/dialer/dialpad/LatinSmartDialMap.java
@@ -0,0 +1,413 @@
+package com.android.dialer.dialpad;
+
+public class LatinSmartDialMap implements SmartDialMap {
+
+    private static final char[] LATIN_LETTERS_TO_DIGITS = {
+        '2', '2', '2', // A,B,C -> 2
+        '3', '3', '3', // D,E,F -> 3
+        '4', '4', '4', // G,H,I -> 4
+        '5', '5', '5', // J,K,L -> 5
+        '6', '6', '6', // M,N,O -> 6
+        '7', '7', '7', '7', // P,Q,R,S -> 7
+        '8', '8', '8', // T,U,V -> 8
+        '9', '9', '9', '9' // W,X,Y,Z -> 9
+    };
+
+    @Override
+    public boolean isValidDialpadAlphabeticChar(char ch) {
+        return (ch >= 'a' && ch <= 'z');
+    }
+
+    @Override
+    public boolean isValidDialpadNumericChar(char ch) {
+        return (ch >= '0' && ch <= '9');
+    }
+
+    @Override
+    public boolean isValidDialpadCharacter(char ch) {
+        return (isValidDialpadAlphabeticChar(ch) || isValidDialpadNumericChar(ch));
+    }
+
+    /*
+     * The switch statement in this function was generated using the python code:
+     * from unidecode import unidecode
+     * for i in range(192, 564):
+     *     char = unichr(i)
+     *     decoded = unidecode(char)
+     *     # Unicode characters that decompose into multiple characters i.e.
+     *     #  into ss are not supported for now
+     *     if (len(decoded) == 1 and decoded.isalpha()):
+     *         print "case '" + char + "': return '" + unidecode(char) +  "';"
+     *
+     * This gives us a way to map characters containing accents/diacritics to their
+     * alphabetic equivalents. The unidecode library can be found at:
+     * http://pypi.python.org/pypi/Unidecode/0.04.1
+     *
+     * Also remaps all upper case latin characters to their lower case equivalents.
+     */
+    @Override
+    public char normalizeCharacter(char ch) {
+        switch (ch) {
+            case 'À': return 'a';
+            case 'Á': return 'a';
+            case 'Â': return 'a';
+            case 'Ã': return 'a';
+            case 'Ä': return 'a';
+            case 'Å': return 'a';
+            case 'Ç': return 'c';
+            case 'È': return 'e';
+            case 'É': return 'e';
+            case 'Ê': return 'e';
+            case 'Ë': return 'e';
+            case 'Ì': return 'i';
+            case 'Í': return 'i';
+            case 'Î': return 'i';
+            case 'Ï': return 'i';
+            case 'Ð': return 'd';
+            case 'Ñ': return 'n';
+            case 'Ò': return 'o';
+            case 'Ó': return 'o';
+            case 'Ô': return 'o';
+            case 'Õ': return 'o';
+            case 'Ö': return 'o';
+            case '×': return 'x';
+            case 'Ø': return 'o';
+            case 'Ù': return 'u';
+            case 'Ú': return 'u';
+            case 'Û': return 'u';
+            case 'Ü': return 'u';
+            case 'Ý': return 'u';
+            case 'à': return 'a';
+            case 'á': return 'a';
+            case 'â': return 'a';
+            case 'ã': return 'a';
+            case 'ä': return 'a';
+            case 'å': return 'a';
+            case 'ç': return 'c';
+            case 'è': return 'e';
+            case 'é': return 'e';
+            case 'ê': return 'e';
+            case 'ë': return 'e';
+            case 'ì': return 'i';
+            case 'í': return 'i';
+            case 'î': return 'i';
+            case 'ï': return 'i';
+            case 'ð': return 'd';
+            case 'ñ': return 'n';
+            case 'ò': return 'o';
+            case 'ó': return 'o';
+            case 'ô': return 'o';
+            case 'õ': return 'o';
+            case 'ö': return 'o';
+            case 'ø': return 'o';
+            case 'ù': return 'u';
+            case 'ú': return 'u';
+            case 'û': return 'u';
+            case 'ü': return 'u';
+            case 'ý': return 'y';
+            case 'ÿ': return 'y';
+            case 'Ā': return 'a';
+            case 'ā': return 'a';
+            case 'Ă': return 'a';
+            case 'ă': return 'a';
+            case 'Ą': return 'a';
+            case 'ą': return 'a';
+            case 'Ć': return 'c';
+            case 'ć': return 'c';
+            case 'Ĉ': return 'c';
+            case 'ĉ': return 'c';
+            case 'Ċ': return 'c';
+            case 'ċ': return 'c';
+            case 'Č': return 'c';
+            case 'č': return 'c';
+            case 'Ď': return 'd';
+            case 'ď': return 'd';
+            case 'Đ': return 'd';
+            case 'đ': return 'd';
+            case 'Ē': return 'e';
+            case 'ē': return 'e';
+            case 'Ĕ': return 'e';
+            case 'ĕ': return 'e';
+            case 'Ė': return 'e';
+            case 'ė': return 'e';
+            case 'Ę': return 'e';
+            case 'ę': return 'e';
+            case 'Ě': return 'e';
+            case 'ě': return 'e';
+            case 'Ĝ': return 'g';
+            case 'ĝ': return 'g';
+            case 'Ğ': return 'g';
+            case 'ğ': return 'g';
+            case 'Ġ': return 'g';
+            case 'ġ': return 'g';
+            case 'Ģ': return 'g';
+            case 'ģ': return 'g';
+            case 'Ĥ': return 'h';
+            case 'ĥ': return 'h';
+            case 'Ħ': return 'h';
+            case 'ħ': return 'h';
+            case 'Ĩ': return 'i';
+            case 'ĩ': return 'i';
+            case 'Ī': return 'i';
+            case 'ī': return 'i';
+            case 'Ĭ': return 'i';
+            case 'ĭ': return 'i';
+            case 'Į': return 'i';
+            case 'į': return 'i';
+            case 'İ': return 'i';
+            case 'ı': return 'i';
+            case 'Ĵ': return 'j';
+            case 'ĵ': return 'j';
+            case 'Ķ': return 'k';
+            case 'ķ': return 'k';
+            case 'ĸ': return 'k';
+            case 'Ĺ': return 'l';
+            case 'ĺ': return 'l';
+            case 'Ļ': return 'l';
+            case 'ļ': return 'l';
+            case 'Ľ': return 'l';
+            case 'ľ': return 'l';
+            case 'Ŀ': return 'l';
+            case 'ŀ': return 'l';
+            case 'Ł': return 'l';
+            case 'ł': return 'l';
+            case 'Ń': return 'n';
+            case 'ń': return 'n';
+            case 'Ņ': return 'n';
+            case 'ņ': return 'n';
+            case 'Ň': return 'n';
+            case 'ň': return 'n';
+            case 'Ō': return 'o';
+            case 'ō': return 'o';
+            case 'Ŏ': return 'o';
+            case 'ŏ': return 'o';
+            case 'Ő': return 'o';
+            case 'ő': return 'o';
+            case 'Ŕ': return 'r';
+            case 'ŕ': return 'r';
+            case 'Ŗ': return 'r';
+            case 'ŗ': return 'r';
+            case 'Ř': return 'r';
+            case 'ř': return 'r';
+            case 'Ś': return 's';
+            case 'ś': return 's';
+            case 'Ŝ': return 's';
+            case 'ŝ': return 's';
+            case 'Ş': return 's';
+            case 'ş': return 's';
+            case 'Š': return 's';
+            case 'š': return 's';
+            case 'Ţ': return 't';
+            case 'ţ': return 't';
+            case 'Ť': return 't';
+            case 'ť': return 't';
+            case 'Ŧ': return 't';
+            case 'ŧ': return 't';
+            case 'Ũ': return 'u';
+            case 'ũ': return 'u';
+            case 'Ū': return 'u';
+            case 'ū': return 'u';
+            case 'Ŭ': return 'u';
+            case 'ŭ': return 'u';
+            case 'Ů': return 'u';
+            case 'ů': return 'u';
+            case 'Ű': return 'u';
+            case 'ű': return 'u';
+            case 'Ų': return 'u';
+            case 'ų': return 'u';
+            case 'Ŵ': return 'w';
+            case 'ŵ': return 'w';
+            case 'Ŷ': return 'y';
+            case 'ŷ': return 'y';
+            case 'Ÿ': return 'y';
+            case 'Ź': return 'z';
+            case 'ź': return 'z';
+            case 'Ż': return 'z';
+            case 'ż': return 'z';
+            case 'Ž': return 'z';
+            case 'ž': return 'z';
+            case 'ſ': return 's';
+            case 'ƀ': return 'b';
+            case 'Ɓ': return 'b';
+            case 'Ƃ': return 'b';
+            case 'ƃ': return 'b';
+            case 'Ɔ': return 'o';
+            case 'Ƈ': return 'c';
+            case 'ƈ': return 'c';
+            case 'Ɖ': return 'd';
+            case 'Ɗ': return 'd';
+            case 'Ƌ': return 'd';
+            case 'ƌ': return 'd';
+            case 'ƍ': return 'd';
+            case 'Ɛ': return 'e';
+            case 'Ƒ': return 'f';
+            case 'ƒ': return 'f';
+            case 'Ɠ': return 'g';
+            case 'Ɣ': return 'g';
+            case 'Ɩ': return 'i';
+            case 'Ɨ': return 'i';
+            case 'Ƙ': return 'k';
+            case 'ƙ': return 'k';
+            case 'ƚ': return 'l';
+            case 'ƛ': return 'l';
+            case 'Ɯ': return 'w';
+            case 'Ɲ': return 'n';
+            case 'ƞ': return 'n';
+            case 'Ɵ': return 'o';
+            case 'Ơ': return 'o';
+            case 'ơ': return 'o';
+            case 'Ƥ': return 'p';
+            case 'ƥ': return 'p';
+            case 'ƫ': return 't';
+            case 'Ƭ': return 't';
+            case 'ƭ': return 't';
+            case 'Ʈ': return 't';
+            case 'Ư': return 'u';
+            case 'ư': return 'u';
+            case 'Ʊ': return 'y';
+            case 'Ʋ': return 'v';
+            case 'Ƴ': return 'y';
+            case 'ƴ': return 'y';
+            case 'Ƶ': return 'z';
+            case 'ƶ': return 'z';
+            case 'ƿ': return 'w';
+            case 'Ǎ': return 'a';
+            case 'ǎ': return 'a';
+            case 'Ǐ': return 'i';
+            case 'ǐ': return 'i';
+            case 'Ǒ': return 'o';
+            case 'ǒ': return 'o';
+            case 'Ǔ': return 'u';
+            case 'ǔ': return 'u';
+            case 'Ǖ': return 'u';
+            case 'ǖ': return 'u';
+            case 'Ǘ': return 'u';
+            case 'ǘ': return 'u';
+            case 'Ǚ': return 'u';
+            case 'ǚ': return 'u';
+            case 'Ǜ': return 'u';
+            case 'ǜ': return 'u';
+            case 'Ǟ': return 'a';
+            case 'ǟ': return 'a';
+            case 'Ǡ': return 'a';
+            case 'ǡ': return 'a';
+            case 'Ǥ': return 'g';
+            case 'ǥ': return 'g';
+            case 'Ǧ': return 'g';
+            case 'ǧ': return 'g';
+            case 'Ǩ': return 'k';
+            case 'ǩ': return 'k';
+            case 'Ǫ': return 'o';
+            case 'ǫ': return 'o';
+            case 'Ǭ': return 'o';
+            case 'ǭ': return 'o';
+            case 'ǰ': return 'j';
+            case 'Dz': return 'd';
+            case 'Ǵ': return 'g';
+            case 'ǵ': return 'g';
+            case 'Ƿ': return 'w';
+            case 'Ǹ': return 'n';
+            case 'ǹ': return 'n';
+            case 'Ǻ': return 'a';
+            case 'ǻ': return 'a';
+            case 'Ǿ': return 'o';
+            case 'ǿ': return 'o';
+            case 'Ȁ': return 'a';
+            case 'ȁ': return 'a';
+            case 'Ȃ': return 'a';
+            case 'ȃ': return 'a';
+            case 'Ȅ': return 'e';
+            case 'ȅ': return 'e';
+            case 'Ȇ': return 'e';
+            case 'ȇ': return 'e';
+            case 'Ȉ': return 'i';
+            case 'ȉ': return 'i';
+            case 'Ȋ': return 'i';
+            case 'ȋ': return 'i';
+            case 'Ȍ': return 'o';
+            case 'ȍ': return 'o';
+            case 'Ȏ': return 'o';
+            case 'ȏ': return 'o';
+            case 'Ȑ': return 'r';
+            case 'ȑ': return 'r';
+            case 'Ȓ': return 'r';
+            case 'ȓ': return 'r';
+            case 'Ȕ': return 'u';
+            case 'ȕ': return 'u';
+            case 'Ȗ': return 'u';
+            case 'ȗ': return 'u';
+            case 'Ș': return 's';
+            case 'ș': return 's';
+            case 'Ț': return 't';
+            case 'ț': return 't';
+            case 'Ȝ': return 'y';
+            case 'ȝ': return 'y';
+            case 'Ȟ': return 'h';
+            case 'ȟ': return 'h';
+            case 'Ȥ': return 'z';
+            case 'ȥ': return 'z';
+            case 'Ȧ': return 'a';
+            case 'ȧ': return 'a';
+            case 'Ȩ': return 'e';
+            case 'ȩ': return 'e';
+            case 'Ȫ': return 'o';
+            case 'ȫ': return 'o';
+            case 'Ȭ': return 'o';
+            case 'ȭ': return 'o';
+            case 'Ȯ': return 'o';
+            case 'ȯ': return 'o';
+            case 'Ȱ': return 'o';
+            case 'ȱ': return 'o';
+            case 'Ȳ': return 'y';
+            case 'ȳ': return 'y';
+            case 'A': return 'a';
+            case 'B': return 'b';
+            case 'C': return 'c';
+            case 'D': return 'd';
+            case 'E': return 'e';
+            case 'F': return 'f';
+            case 'G': return 'g';
+            case 'H': return 'h';
+            case 'I': return 'i';
+            case 'J': return 'j';
+            case 'K': return 'k';
+            case 'L': return 'l';
+            case 'M': return 'm';
+            case 'N': return 'n';
+            case 'O': return 'o';
+            case 'P': return 'p';
+            case 'Q': return 'q';
+            case 'R': return 'r';
+            case 'S': return 's';
+            case 'T': return 't';
+            case 'U': return 'u';
+            case 'V': return 'v';
+            case 'W': return 'w';
+            case 'X': return 'x';
+            case 'Y': return 'y';
+            case 'Z': return 'z';
+            default:
+                return ch;
+        }
+    }
+
+    @Override
+    public byte getDialpadIndex(char ch) {
+        if (ch >= '0' && ch <= '9') {
+            return (byte) (ch - '0');
+        } else if (ch >= 'a' && ch <= 'z') {
+            return (byte) (LATIN_LETTERS_TO_DIGITS[ch - 'a'] - '0');
+        } else {
+            return -1;
+        }
+    }
+
+    @Override
+    public char getDialpadNumericCharacter(char ch) {
+        if (ch >= 'a' && ch <= 'z') {
+            return LATIN_LETTERS_TO_DIGITS[ch - 'a'];
+        }
+        return ch;
+    }
+
+}
diff --git a/src/com/android/dialer/dialpad/PseudoEmergencyAnimator.java b/src/com/android/dialer/dialpad/PseudoEmergencyAnimator.java
new file mode 100644
index 0000000..d4f32b5
--- /dev/null
+++ b/src/com/android/dialer/dialpad/PseudoEmergencyAnimator.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2015 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.dialer.dialpad;
+
+import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
+import android.animation.ArgbEvaluator;
+import android.animation.ValueAnimator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
+import android.graphics.LightingColorFilter;
+import android.os.Handler;
+import android.os.Vibrator;
+import android.view.View;
+
+import com.android.dialer.R;
+
+/**
+ * Animates the dial button on "emergency" phone numbers.
+ */
+public class PseudoEmergencyAnimator {
+    public interface ViewProvider {
+        View getView();
+    }
+
+    public static final String PSEUDO_EMERGENCY_NUMBER = "01189998819991197253";
+
+    private static final int VIBRATE_LENGTH_MILLIS = 200;
+    private static final int ITERATION_LENGTH_MILLIS = 1000;
+    private static final int ANIMATION_ITERATION_COUNT = 6;
+
+    private ViewProvider mViewProvider;
+    private ValueAnimator mPseudoEmergencyColorAnimator;
+
+    PseudoEmergencyAnimator(ViewProvider viewProvider) {
+        mViewProvider = viewProvider;
+    }
+
+    public void destroy() {
+        end();
+        mViewProvider = null;
+    }
+
+    public void start() {
+        if (mPseudoEmergencyColorAnimator == null) {
+            Integer colorFrom = Color.BLUE;
+            Integer colorTo = Color.RED;
+            mPseudoEmergencyColorAnimator = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
+
+            mPseudoEmergencyColorAnimator.addUpdateListener(new AnimatorUpdateListener() {
+                @Override
+                public void onAnimationUpdate(ValueAnimator animator) {
+                    try {
+                        int color = (int) animator.getAnimatedValue();
+                        ColorFilter colorFilter =
+                                new LightingColorFilter(Color.BLACK, color);
+
+                        View floatingActionButtonContainer = getView().findViewById(
+                                R.id.dialpad_floating_action_button_container);
+                        if (floatingActionButtonContainer != null) {
+                            floatingActionButtonContainer.getBackground().setColorFilter(
+                                    colorFilter);
+                        }
+                    } catch (Exception e) {
+                        animator.cancel();
+                    }
+                }
+            });
+
+            mPseudoEmergencyColorAnimator.addListener(new AnimatorListener() {
+                @Override
+                public void onAnimationCancel(Animator animation) { }
+
+                @Override
+                public void onAnimationRepeat(Animator animation) {
+                    try {
+                        vibrate(VIBRATE_LENGTH_MILLIS);
+                    } catch (Exception e) {
+                        animation.cancel();
+                    }
+                }
+
+                @Override
+                public void onAnimationStart(Animator animation) { }
+
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    try {
+                        View floatingActionButtonContainer = getView().findViewById(
+                                R.id.dialpad_floating_action_button_container);
+                        if (floatingActionButtonContainer != null) {
+                            floatingActionButtonContainer.getBackground().clearColorFilter();
+                        }
+
+                        new Handler().postDelayed(new Runnable() {
+                            @Override public void run() {
+                                try {
+                                    vibrate(VIBRATE_LENGTH_MILLIS);
+                                } catch (Exception e) {
+                                    // ignored
+                                }
+                            }
+                        }, ITERATION_LENGTH_MILLIS);
+                    } catch (Exception e) {
+                        animation.cancel();
+                    }
+                }
+            });
+
+            mPseudoEmergencyColorAnimator.setDuration(VIBRATE_LENGTH_MILLIS);
+            mPseudoEmergencyColorAnimator.setRepeatMode(ValueAnimator.REVERSE);
+            mPseudoEmergencyColorAnimator.setRepeatCount(ANIMATION_ITERATION_COUNT);
+        }
+        if (!mPseudoEmergencyColorAnimator.isStarted()) {
+            mPseudoEmergencyColorAnimator.start();
+        }
+    }
+
+    public void end() {
+        if (mPseudoEmergencyColorAnimator != null && mPseudoEmergencyColorAnimator.isStarted()) {
+            mPseudoEmergencyColorAnimator.end();
+        }
+    }
+
+    private View getView() {
+        return mViewProvider == null ? null : mViewProvider.getView();
+    }
+
+    private Context getContext() {
+        View view = getView();
+        return view != null ? view.getContext() : null;
+    }
+
+    private void vibrate(long milliseconds) {
+        Context context = getContext();
+        if (context != null) {
+            Vibrator vibrator =
+                    (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+            if (vibrator != null) {
+                vibrator.vibrate(milliseconds);
+            }
+        }
+    }
+}
diff --git a/src/com/android/dialer/dialpad/SmartDialCursorLoader.java b/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
new file mode 100644
index 0000000..93b649b
--- /dev/null
+++ b/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2013 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.dialer.dialpad;
+
+import android.content.AsyncTaskLoader;
+import android.content.Context;
+import android.content.Loader.ForceLoadContentObserver;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+import android.util.Log;
+
+import com.android.contacts.common.list.PhoneNumberListAdapter.PhoneQuery;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.database.DialerDatabaseHelper;
+import com.android.dialer.database.DialerDatabaseHelper.ContactNumber;
+import com.android.dialerbind.DatabaseHelperManager;
+
+import java.util.ArrayList;
+
+/**
+ * Implements a Loader<Cursor> class to asynchronously load SmartDial search results.
+ */
+public class SmartDialCursorLoader extends AsyncTaskLoader<Cursor> {
+
+    private final String TAG = SmartDialCursorLoader.class.getSimpleName();
+    private final boolean DEBUG = false;
+
+    private final Context mContext;
+
+    private Cursor mCursor;
+
+    private String mQuery;
+    private SmartDialNameMatcher mNameMatcher;
+
+    private ForceLoadContentObserver mObserver;
+
+    public SmartDialCursorLoader(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    /**
+     * Configures the query string to be used to find SmartDial matches.
+     * @param query The query string user typed.
+     */
+    public void configureQuery(String query) {
+        if (DEBUG) {
+            Log.v(TAG, "Configure new query to be " + query);
+        }
+        mQuery = SmartDialNameMatcher.normalizeNumber(query, SmartDialPrefix.getMap());
+
+        /** Constructs a name matcher object for matching names. */
+        mNameMatcher = new SmartDialNameMatcher(mQuery, SmartDialPrefix.getMap());
+    }
+
+    /**
+     * Queries the SmartDial database and loads results in background.
+     * @return Cursor of contacts that matches the SmartDial query.
+     */
+    @Override
+    public Cursor loadInBackground() {
+        if (DEBUG) {
+            Log.v(TAG, "Load in background " + mQuery);
+        }
+
+        if (!PermissionsUtil.hasContactsPermissions(mContext)) {
+            return new MatrixCursor(PhoneQuery.PROJECTION_PRIMARY);
+        }
+
+        /** Loads results from the database helper. */
+        final DialerDatabaseHelper dialerDatabaseHelper = DatabaseHelperManager.getDatabaseHelper(
+                mContext);
+        final ArrayList<ContactNumber> allMatches = dialerDatabaseHelper.getLooseMatches(mQuery,
+                mNameMatcher);
+
+        if (DEBUG) {
+            Log.v(TAG, "Loaded matches " + String.valueOf(allMatches.size()));
+        }
+
+        /** Constructs a cursor for the returned array of results. */
+        final MatrixCursor cursor = new MatrixCursor(PhoneQuery.PROJECTION_PRIMARY);
+        Object[] row = new Object[PhoneQuery.PROJECTION_PRIMARY.length];
+        for (ContactNumber contact : allMatches) {
+            row[PhoneQuery.PHONE_ID] = contact.dataId;
+            row[PhoneQuery.PHONE_NUMBER] = contact.phoneNumber;
+            row[PhoneQuery.CONTACT_ID] = contact.id;
+            row[PhoneQuery.LOOKUP_KEY] = contact.lookupKey;
+            row[PhoneQuery.PHOTO_ID] = contact.photoId;
+            row[PhoneQuery.DISPLAY_NAME] = contact.displayName;
+            row[PhoneQuery.CARRIER_PRESENCE] = contact.carrierPresence;
+            cursor.addRow(row);
+        }
+        return cursor;
+    }
+
+    @Override
+    public void deliverResult(Cursor cursor) {
+        if (isReset()) {
+            /** The Loader has been reset; ignore the result and invalidate the data. */
+            releaseResources(cursor);
+            return;
+        }
+
+        /** Hold a reference to the old data so it doesn't get garbage collected. */
+        Cursor oldCursor = mCursor;
+        mCursor = cursor;
+
+        if (mObserver == null) {
+            mObserver = new ForceLoadContentObserver();
+            mContext.getContentResolver().registerContentObserver(
+                    DialerDatabaseHelper.SMART_DIAL_UPDATED_URI, true, mObserver);
+        }
+
+        if (isStarted()) {
+            /** If the Loader is in a started state, deliver the results to the client. */
+            super.deliverResult(cursor);
+        }
+
+        /** Invalidate the old data as we don't need it any more. */
+        if (oldCursor != null && oldCursor != cursor) {
+            releaseResources(oldCursor);
+        }
+    }
+
+    @Override
+    protected void onStartLoading() {
+        if (mCursor != null) {
+            /** Deliver any previously loaded data immediately. */
+            deliverResult(mCursor);
+        }
+        if (mCursor == null) {
+            /** Force loads every time as our results change with queries. */
+            forceLoad();
+        }
+    }
+
+    @Override
+    protected void onStopLoading() {
+        /** The Loader is in a stopped state, so we should attempt to cancel the current load. */
+        cancelLoad();
+    }
+
+    @Override
+    protected void onReset() {
+        /** Ensure the loader has been stopped. */
+        onStopLoading();
+
+        if (mObserver != null) {
+            mContext.getContentResolver().unregisterContentObserver(mObserver);
+            mObserver = null;
+        }
+
+        /** Release all previously saved query results. */
+        if (mCursor != null) {
+            releaseResources(mCursor);
+            mCursor = null;
+        }
+    }
+
+    @Override
+    public void onCanceled(Cursor cursor) {
+        super.onCanceled(cursor);
+
+        if (mObserver != null) {
+            mContext.getContentResolver().unregisterContentObserver(mObserver);
+            mObserver = null;
+        }
+
+        /** The load has been canceled, so we should release the resources associated with 'data'.*/
+        releaseResources(cursor);
+    }
+
+    private void releaseResources(Cursor cursor) {
+        if (cursor != null) {
+            cursor.close();
+        }
+    }
+}
diff --git a/src/com/android/dialer/dialpad/SmartDialMap.java b/src/com/android/dialer/dialpad/SmartDialMap.java
new file mode 100644
index 0000000..b51891a
--- /dev/null
+++ b/src/com/android/dialer/dialpad/SmartDialMap.java
@@ -0,0 +1,43 @@
+package com.android.dialer.dialpad;
+
+/**
+ * Note: These methods currently take characters as arguments. For future planned language support,
+ * they will need to be changed to use codepoints instead of characters.
+ *
+ * http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#codePointAt(int)
+ *
+ * If/when this change is made, LatinSmartDialMap(which operates on chars) will continue to work
+ * by simply casting from a codepoint to a character.
+ */
+public interface SmartDialMap {
+    /*
+     * Returns true if the provided character can be mapped to a key on the dialpad
+     */
+    public boolean isValidDialpadCharacter(char ch);
+
+    /*
+     * Returns true if the provided character is a letter, and can be mapped to a key on the dialpad
+     */
+    public boolean isValidDialpadAlphabeticChar(char ch);
+
+    /*
+     * Returns true if the provided character is a digit, and can be mapped to a key on the dialpad
+     */
+    public boolean isValidDialpadNumericChar(char ch);
+
+    /*
+     * Get the index of the key on the dialpad which the character corresponds to
+     */
+    public byte getDialpadIndex(char ch);
+
+    /*
+     * Get the actual numeric character on the dialpad which the character corresponds to
+     */
+    public char getDialpadNumericCharacter(char ch);
+
+    /*
+     * Converts uppercase characters to lower case ones, and on a best effort basis, strips accents
+     * from accented characters.
+     */
+    public char normalizeCharacter(char ch);
+}
diff --git a/src/com/android/dialer/dialpad/SmartDialMatchPosition.java b/src/com/android/dialer/dialpad/SmartDialMatchPosition.java
new file mode 100644
index 0000000..bab2c50
--- /dev/null
+++ b/src/com/android/dialer/dialpad/SmartDialMatchPosition.java
@@ -0,0 +1,70 @@
+/*
+ * 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.dialer.dialpad;
+
+import android.util.Log;
+
+import java.util.ArrayList;
+
+/**
+ * Stores information about a range of characters matched in a display name The integers
+ * start and end indicate that the range start to end (exclusive) correspond to some characters
+ * in the query. Used to highlight certain parts of the contact's display name to indicate that
+ * those ranges matched the user's query.
+ */
+public class SmartDialMatchPosition {
+    private static final String TAG = SmartDialMatchPosition.class.getSimpleName();
+
+    public int start;
+    public int end;
+
+    public SmartDialMatchPosition(int start, int end) {
+        this.start = start;
+        this.end = end;
+    }
+
+    private void advance(int toAdvance) {
+        this.start += toAdvance;
+        this.end += toAdvance;
+    }
+
+    /**
+     * Used by {@link SmartDialNameMatcher} to advance the positions of a match position found in
+     * a sub query.
+     *
+     * @param inList ArrayList of SmartDialMatchPositions to modify.
+     * @param toAdvance Offset to modify by.
+     */
+    public static void advanceMatchPositions(ArrayList<SmartDialMatchPosition> inList,
+            int toAdvance) {
+        for (int i = 0; i < inList.size(); i++) {
+            inList.get(i).advance(toAdvance);
+        }
+    }
+
+    /**
+     * Used mainly for debug purposes. Displays contents of an ArrayList of SmartDialMatchPositions.
+     *
+     * @param list ArrayList of SmartDialMatchPositions to print out in a human readable fashion.
+     */
+    public static void print(ArrayList<SmartDialMatchPosition> list) {
+        for (int i = 0; i < list.size(); i ++) {
+            SmartDialMatchPosition m = list.get(i);
+            Log.d(TAG, "[" + m.start + "," + m.end + "]");
+        }
+    }
+}
diff --git a/src/com/android/dialer/dialpad/SmartDialNameMatcher.java b/src/com/android/dialer/dialpad/SmartDialNameMatcher.java
new file mode 100644
index 0000000..a54fe16
--- /dev/null
+++ b/src/com/android/dialer/dialpad/SmartDialNameMatcher.java
@@ -0,0 +1,439 @@
+/*
+ * 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.dialer.dialpad;
+
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+
+import com.android.dialer.dialpad.SmartDialPrefix.PhoneNumberTokens;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+
+/**
+ * {@link #SmartDialNameMatcher} contains utility functions to remove accents from accented
+ * characters and normalize a phone number. It also contains the matching logic that determines if
+ * a contact's display name matches a numeric query. The boolean variable
+ * {@link #ALLOW_INITIAL_MATCH} controls the behavior of the matching logic and determines
+ * whether we allow matches like 57 - (J)ohn (S)mith.
+ */
+public class SmartDialNameMatcher {
+
+    private String mQuery;
+
+    // Whether or not we allow matches like 57 - (J)ohn (S)mith
+    private static final boolean ALLOW_INITIAL_MATCH = true;
+
+    // The maximum length of the initial we will match - typically set to 1 to minimize false
+    // positives
+    private static final int INITIAL_LENGTH_LIMIT = 1;
+
+    private final ArrayList<SmartDialMatchPosition> mMatchPositions = Lists.newArrayList();
+
+    public static final SmartDialMap LATIN_SMART_DIAL_MAP = new LatinSmartDialMap();
+
+    private final SmartDialMap mMap;
+
+    private String mNameMatchMask = "";
+    private String mPhoneNumberMatchMask = "";
+
+    @VisibleForTesting
+    public SmartDialNameMatcher(String query) {
+        this(query, LATIN_SMART_DIAL_MAP);
+    }
+
+    public SmartDialNameMatcher(String query, SmartDialMap map) {
+        mQuery = query;
+        mMap = map;
+    }
+
+    /**
+     * Constructs empty highlight mask. Bit 0 at a position means there is no match, Bit 1 means
+     * there is a match and should be highlighted in the TextView.
+     * @param builder StringBuilder object
+     * @param length Length of the desired mask.
+     */
+    private void constructEmptyMask(StringBuilder builder, int length) {
+        for (int i = 0; i < length; ++i) {
+            builder.append("0");
+        }
+    }
+
+    /**
+     * Replaces the 0-bit at a position with 1-bit, indicating that there is a match.
+     * @param builder StringBuilder object.
+     * @param matchPos Match Positions to mask as 1.
+     */
+    private void replaceBitInMask(StringBuilder builder, SmartDialMatchPosition matchPos) {
+        for (int i = matchPos.start; i < matchPos.end; ++i) {
+            builder.replace(i, i + 1, "1");
+        }
+    }
+
+    /**
+     * Strips a phone number of unnecessary characters (spaces, dashes, etc.)
+     *
+     * @param number Phone number we want to normalize
+     * @return Phone number consisting of digits from 0-9
+     */
+    public static String normalizeNumber(String number, SmartDialMap map) {
+        return normalizeNumber(number, 0, map);
+    }
+
+    /**
+     * Strips a phone number of unnecessary characters (spaces, dashes, etc.)
+     *
+     * @param number Phone number we want to normalize
+     * @param offset Offset to start from
+     * @return Phone number consisting of digits from 0-9
+     */
+    public static String normalizeNumber(String number, int offset, SmartDialMap map) {
+        final StringBuilder s = new StringBuilder();
+        for (int i = offset; i < number.length(); i++) {
+            char ch = number.charAt(i);
+            if (map.isValidDialpadNumericChar(ch)) {
+                s.append(ch);
+            }
+        }
+        return s.toString();
+    }
+
+    /**
+     * Matches a phone number against a query. Let the test application overwrite the NANP setting.
+     *
+     * @param phoneNumber - Raw phone number
+     * @param query - Normalized query (only contains numbers from 0-9)
+     * @param useNanp - Overwriting nanp setting boolean, used for testing.
+     * @return {@literal null} if the number and the query don't match, a valid
+     *         SmartDialMatchPosition with the matching positions otherwise
+     */
+    @VisibleForTesting
+    @Nullable
+    public SmartDialMatchPosition matchesNumber(String phoneNumber, String query, boolean useNanp) {
+        if (TextUtils.isEmpty(phoneNumber)) {
+            return null;
+        }
+        StringBuilder builder = new StringBuilder();
+        constructEmptyMask(builder, phoneNumber.length());
+        mPhoneNumberMatchMask = builder.toString();
+
+        // Try matching the number as is
+        SmartDialMatchPosition matchPos = matchesNumberWithOffset(phoneNumber, query, 0);
+        if (matchPos == null) {
+            final PhoneNumberTokens phoneNumberTokens =
+                    SmartDialPrefix.parsePhoneNumber(phoneNumber);
+
+            if (phoneNumberTokens == null) {
+                return matchPos;
+            }
+            if (phoneNumberTokens.countryCodeOffset != 0) {
+                matchPos = matchesNumberWithOffset(phoneNumber, query,
+                        phoneNumberTokens.countryCodeOffset);
+            }
+            if (matchPos == null && phoneNumberTokens.nanpCodeOffset != 0 && useNanp) {
+                matchPos = matchesNumberWithOffset(phoneNumber, query,
+                        phoneNumberTokens.nanpCodeOffset);
+            }
+        }
+        if (matchPos != null) {
+            replaceBitInMask(builder, matchPos);
+            mPhoneNumberMatchMask = builder.toString();
+        }
+        return matchPos;
+    }
+
+    /**
+     * Matches a phone number against the saved query, taking care of formatting characters and also
+     * taking into account country code prefixes and special NANP number treatment.
+     *
+     * @param phoneNumber - Raw phone number
+     * @return {@literal null} if the number and the query don't match, a valid
+     *         SmartDialMatchPosition with the matching positions otherwise
+     */
+    public SmartDialMatchPosition matchesNumber(String phoneNumber) {
+        return matchesNumber(phoneNumber, mQuery, true);
+    }
+
+    /**
+     * Matches a phone number against a query, taking care of formatting characters and also
+     * taking into account country code prefixes and special NANP number treatment.
+     *
+     * @param phoneNumber - Raw phone number
+     * @param query - Normalized query (only contains numbers from 0-9)
+     * @return {@literal null} if the number and the query don't match, a valid
+     *         SmartDialMatchPosition with the matching positions otherwise
+     */
+    public SmartDialMatchPosition matchesNumber(String phoneNumber, String query) {
+        return matchesNumber(phoneNumber, query, true);
+    }
+
+    /**
+     * Matches a phone number against a query, taking care of formatting characters
+     *
+     * @param phoneNumber - Raw phone number
+     * @param query - Normalized query (only contains numbers from 0-9)
+     * @param offset - The position in the number to start the match against (used to ignore
+     * leading prefixes/country codes)
+     * @return {@literal null} if the number and the query don't match, a valid
+     *         SmartDialMatchPosition with the matching positions otherwise
+     */
+    private SmartDialMatchPosition matchesNumberWithOffset(String phoneNumber, String query,
+            int offset) {
+        if (TextUtils.isEmpty(phoneNumber) || TextUtils.isEmpty(query)) {
+            return null;
+        }
+        int queryAt = 0;
+        int numberAt = offset;
+        for (int i = offset; i < phoneNumber.length(); i++) {
+            if (queryAt == query.length()) {
+                break;
+            }
+            char ch = phoneNumber.charAt(i);
+            if (mMap.isValidDialpadNumericChar(ch)) {
+                if (ch != query.charAt(queryAt)) {
+                    return null;
+                }
+                queryAt++;
+            } else {
+                if (queryAt == 0) {
+                    // Found a separator before any part of the query was matched, so advance the
+                    // offset to avoid prematurely highlighting separators before the rest of the
+                    // query.
+                    // E.g. don't highlight the first '-' if we're matching 1-510-111-1111 with
+                    // '510'.
+                    // However, if the current offset is 0, just include the beginning separators
+                    // anyway, otherwise the highlighting ends up looking weird.
+                    // E.g. if we're matching (510)-111-1111 with '510', we should include the
+                    // first '('.
+                    if (offset != 0) {
+                        offset++;
+                    }
+                }
+            }
+            numberAt++;
+        }
+        return new SmartDialMatchPosition(0 + offset, numberAt);
+    }
+
+    /**
+     * This function iterates through each token in the display name, trying to match the query
+     * to the numeric equivalent of the token.
+     *
+     * A token is defined as a range in the display name delimited by characters that have no
+     * latin alphabet equivalents (e.g. spaces - ' ', periods - ',', underscores - '_' or chinese
+     * characters - '王'). Transliteration from non-latin characters to latin character will be
+     * done on a best effort basis - e.g. 'Ü' - 'u'.
+     *
+     * For example,
+     * the display name "Phillips Thomas Jr" contains three tokens: "phillips", "thomas", and "jr".
+     *
+     * A match must begin at the start of a token.
+     * For example, typing 846(Tho) would match "Phillips Thomas", but 466(hom) would not.
+     *
+     * Also, a match can extend across tokens.
+     * For example, typing 37337(FredS) would match (Fred S)mith.
+     *
+     * @param displayName The normalized(no accented characters) display name we intend to match
+     * against.
+     * @param query The string of digits that we want to match the display name to.
+     * @param matchList An array list of {@link SmartDialMatchPosition}s that we add matched
+     * positions to.
+     * @return Returns true if a combination of the tokens in displayName match the query
+     * string contained in query. If the function returns true, matchList will contain an
+     * ArrayList of match positions (multiple matches correspond to initial matches).
+     */
+    @VisibleForTesting
+    boolean matchesCombination(String displayName, String query,
+            ArrayList<SmartDialMatchPosition> matchList) {
+        StringBuilder builder = new StringBuilder();
+        constructEmptyMask(builder, displayName.length());
+        mNameMatchMask = builder.toString();
+        final int nameLength = displayName.length();
+        final int queryLength = query.length();
+
+        if (nameLength < queryLength) {
+            return false;
+        }
+
+        if (queryLength == 0) {
+            return false;
+        }
+
+        // The current character index in displayName
+        // E.g. 3 corresponds to 'd' in "Fred Smith"
+        int nameStart = 0;
+
+        // The current character in the query we are trying to match the displayName against
+        int queryStart = 0;
+
+        // The start position of the current token we are inspecting
+        int tokenStart = 0;
+
+        // The number of non-alphabetic characters we've encountered so far in the current match.
+        // E.g. if we've currently matched 3733764849 to (Fred Smith W)illiam, then the
+        // seperatorCount should be 2. This allows us to correctly calculate offsets for the match
+        // positions
+        int seperatorCount = 0;
+
+        ArrayList<SmartDialMatchPosition> partial = new ArrayList<SmartDialMatchPosition>();
+        // Keep going until we reach the end of displayName
+        while (nameStart < nameLength && queryStart < queryLength) {
+            char ch = displayName.charAt(nameStart);
+            // Strip diacritics from accented characters if any
+            ch = mMap.normalizeCharacter(ch);
+            if (mMap.isValidDialpadCharacter(ch)) {
+                if (mMap.isValidDialpadAlphabeticChar(ch)) {
+                    ch = mMap.getDialpadNumericCharacter(ch);
+                }
+                if (ch != query.charAt(queryStart)) {
+                    // Failed to match the current character in the query.
+
+                    // Case 1: Failed to match the first character in the query. Skip to the next
+                    // token since there is no chance of this token matching the query.
+
+                    // Case 2: Previous characters in the query matched, but the current character
+                    // failed to match. This happened in the middle of a token. Skip to the next
+                    // token since there is no chance of this token matching the query.
+
+                    // Case 3: Previous characters in the query matched, but the current character
+                    // failed to match. This happened right at the start of the current token. In
+                    // this case, we should restart the query and try again with the current token.
+                    // Otherwise, we would fail to match a query like "964"(yog) against a name
+                    // Yo-Yoghurt because the query match would fail on the 3rd character, and
+                    // then skip to the end of the "Yoghurt" token.
+
+                    if (queryStart == 0 || mMap.isValidDialpadCharacter(mMap.normalizeCharacter(
+                            displayName.charAt(nameStart - 1)))) {
+                        // skip to the next token, in the case of 1 or 2.
+                        while (nameStart < nameLength &&
+                                mMap.isValidDialpadCharacter(mMap.normalizeCharacter(
+                                        displayName.charAt(nameStart)))) {
+                            nameStart++;
+                        }
+                        nameStart++;
+                    }
+
+                    // Restart the query and set the correct token position
+                    queryStart = 0;
+                    seperatorCount = 0;
+                    tokenStart = nameStart;
+                } else {
+                    if (queryStart == queryLength - 1) {
+
+                        // As much as possible, we prioritize a full token match over a sub token
+                        // one so if we find a full token match, we can return right away
+                        matchList.add(new SmartDialMatchPosition(
+                                tokenStart, queryLength + tokenStart + seperatorCount));
+                        for (SmartDialMatchPosition match : matchList) {
+                            replaceBitInMask(builder, match);
+                        }
+                        mNameMatchMask = builder.toString();
+                        return true;
+                    } else if (ALLOW_INITIAL_MATCH && queryStart < INITIAL_LENGTH_LIMIT) {
+                        // we matched the first character.
+                        // branch off and see if we can find another match with the remaining
+                        // characters in the query string and the remaining tokens
+                        // find the next separator in the query string
+                        int j;
+                        for (j = nameStart; j < nameLength; j++) {
+                            if (!mMap.isValidDialpadCharacter(mMap.normalizeCharacter(
+                                    displayName.charAt(j)))) {
+                                break;
+                            }
+                        }
+                        // this means there is at least one character left after the separator
+                        if (j < nameLength - 1) {
+                            final String remainder = displayName.substring(j + 1);
+                            final ArrayList<SmartDialMatchPosition> partialTemp =
+                                    Lists.newArrayList();
+                            if (matchesCombination(
+                                    remainder, query.substring(queryStart + 1), partialTemp)) {
+
+                                // store the list of possible match positions
+                                SmartDialMatchPosition.advanceMatchPositions(partialTemp, j + 1);
+                                partialTemp.add(0,
+                                        new SmartDialMatchPosition(nameStart, nameStart + 1));
+                                // we found a partial token match, store the data in a
+                                // temp buffer and return it if we end up not finding a full
+                                // token match
+                                partial = partialTemp;
+                            }
+                        }
+                    }
+                    nameStart++;
+                    queryStart++;
+                    // we matched the current character in the name against one in the query,
+                    // continue and see if the rest of the characters match
+                }
+            } else {
+                // found a separator, we skip this character and continue to the next one
+                nameStart++;
+                if (queryStart == 0) {
+                    // This means we found a separator before the start of a token,
+                    // so we should increment the token's start position to reflect its true
+                    // start position
+                    tokenStart = nameStart;
+                } else {
+                    // Otherwise this separator was found in the middle of a token being matched,
+                    // so increase the separator count
+                    seperatorCount++;
+                }
+            }
+        }
+        // if we have no complete match at this point, then we attempt to fall back to the partial
+        // token match(if any). If we don't allow initial matching (ALLOW_INITIAL_MATCH = false)
+        // then partial will always be empty.
+        if (!partial.isEmpty()) {
+            matchList.addAll(partial);
+            for (SmartDialMatchPosition match : matchList) {
+                replaceBitInMask(builder, match);
+            }
+            mNameMatchMask = builder.toString();
+            return true;
+        }
+        return false;
+    }
+
+    public boolean matches(String displayName) {
+        mMatchPositions.clear();
+        return matchesCombination(displayName, mQuery, mMatchPositions);
+    }
+
+    public ArrayList<SmartDialMatchPosition> getMatchPositions() {
+        // Return a clone of mMatchPositions so that the caller can use it without
+        // worrying about it changing
+        return new ArrayList<SmartDialMatchPosition>(mMatchPositions);
+    }
+
+    public void setQuery(String query) {
+        mQuery = query;
+    }
+
+    public String getNameMatchPositionsInString() {
+        return mNameMatchMask;
+    }
+
+    public String getNumberMatchPositionsInString() {
+        return mPhoneNumberMatchMask;
+    }
+
+    public String getQuery() {
+        return mQuery;
+    }
+}
diff --git a/src/com/android/dialer/dialpad/SmartDialPrefix.java b/src/com/android/dialer/dialpad/SmartDialPrefix.java
new file mode 100644
index 0000000..a0b51eb
--- /dev/null
+++ b/src/com/android/dialer/dialpad/SmartDialPrefix.java
@@ -0,0 +1,608 @@
+/*
+ * Copyright (C) 2013 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.dialer.dialpad;
+
+import android.content.Context;
+
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Smart Dial utility class to find prefixes of contacts. It contains both methods to find supported
+ * prefix combinations for contact names, and also methods to find supported prefix combinations for
+ * contacts' phone numbers. Each contact name is separated into several tokens, such as first name,
+ * middle name, family name etc. Each phone number is also separated into country code, NANP area
+ * code, and local number if such separation is possible.
+ */
+public class SmartDialPrefix {
+
+    /** The number of starting and ending tokens in a contact's name considered for initials.
+     * For example, if both constants are set to 2, and a contact's name is
+     * "Albert Ben Charles Daniel Ed Foster", the first two tokens "Albert" "Ben", and last two
+     * tokens "Ed" "Foster" can be replaced by their initials in contact name matching.
+     * Users can look up this contact by combinations of his initials such as "AF" "BF" "EF" "ABF"
+     * "BEF" "ABEF" etc, but can not use combinations such as "CF" "DF" "ACF" "ADF" etc.
+     */
+    private static final int LAST_TOKENS_FOR_INITIALS = 2;
+    private static final int FIRST_TOKENS_FOR_INITIALS = 2;
+
+    /** The country code of the user's sim card obtained by calling getSimCountryIso*/
+    private static final String PREF_USER_SIM_COUNTRY_CODE =
+            "DialtactsActivity_user_sim_country_code";
+    private static final String PREF_USER_SIM_COUNTRY_CODE_DEFAULT = null;
+    private static String sUserSimCountryCode = PREF_USER_SIM_COUNTRY_CODE_DEFAULT;
+
+    /** Indicates whether user is in NANP regions.*/
+    private static boolean sUserInNanpRegion = false;
+
+    /** Set of country names that use NANP code.*/
+    private static Set<String> sNanpCountries = null;
+
+    /** Set of supported country codes in front of the phone number. */
+    private static Set<String> sCountryCodes = null;
+
+    /** Dialpad mapping. */
+    private static final SmartDialMap mMap = new LatinSmartDialMap();
+
+    private static boolean sNanpInitialized = false;
+
+    /** Initializes the Nanp settings, and finds out whether user is in a NANP region.*/
+    public static void initializeNanpSettings(Context context){
+        final TelephonyManager manager = (TelephonyManager) context.getSystemService(
+                Context.TELEPHONY_SERVICE);
+        if (manager != null) {
+            sUserSimCountryCode = manager.getSimCountryIso();
+        }
+
+        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+
+        if (sUserSimCountryCode != null) {
+            /** Updates shared preferences with the latest country obtained from getSimCountryIso.*/
+            prefs.edit().putString(PREF_USER_SIM_COUNTRY_CODE, sUserSimCountryCode).apply();
+        } else {
+            /** Uses previously stored country code if loading fails. */
+            sUserSimCountryCode = prefs.getString(PREF_USER_SIM_COUNTRY_CODE,
+                    PREF_USER_SIM_COUNTRY_CODE_DEFAULT);
+        }
+        /** Queries the NANP country list to find out whether user is in a NANP region.*/
+        sUserInNanpRegion = isCountryNanp(sUserSimCountryCode);
+        sNanpInitialized = true;
+    }
+
+    /**
+     * Explicitly setting the user Nanp to the given boolean
+     */
+    @VisibleForTesting
+    public static void setUserInNanpRegion(boolean userInNanpRegion) {
+        sUserInNanpRegion = userInNanpRegion;
+    }
+
+    /**
+     * Class to record phone number parsing information.
+     */
+    public static class PhoneNumberTokens {
+        /** Country code of the phone number. */
+        final String countryCode;
+
+        /** Offset of national number after the country code. */
+        final int countryCodeOffset;
+
+        /** Offset of local number after NANP area code.*/
+        final int nanpCodeOffset;
+
+        public PhoneNumberTokens(String countryCode, int countryCodeOffset, int nanpCodeOffset) {
+            this.countryCode = countryCode;
+            this.countryCodeOffset = countryCodeOffset;
+            this.nanpCodeOffset = nanpCodeOffset;
+        }
+    }
+
+    /**
+     * Parses a contact's name into a list of separated tokens.
+     *
+     * @param contactName Contact's name stored in string.
+     * @return A list of name tokens, for example separated first names, last name, etc.
+     */
+    public static ArrayList<String> parseToIndexTokens(String contactName) {
+        final int length = contactName.length();
+        final ArrayList<String> result = Lists.newArrayList();
+        char c;
+        final StringBuilder currentIndexToken = new StringBuilder();
+        /**
+         * Iterates through the whole name string. If the current character is a valid character,
+         * append it to the current token. If the current character is not a valid character, for
+         * example space " ", mark the current token as complete and add it to the list of tokens.
+         */
+        for (int i = 0; i < length; i++) {
+            c = mMap.normalizeCharacter(contactName.charAt(i));
+            if (mMap.isValidDialpadCharacter(c)) {
+                /** Converts a character into the number on dialpad that represents the character.*/
+                currentIndexToken.append(mMap.getDialpadIndex(c));
+            } else {
+                if (currentIndexToken.length() != 0) {
+                    result.add(currentIndexToken.toString());
+                }
+                currentIndexToken.delete(0, currentIndexToken.length());
+            }
+        }
+
+        /** Adds the last token in case it has not been added.*/
+        if (currentIndexToken.length() != 0) {
+            result.add(currentIndexToken.toString());
+        }
+        return result;
+    }
+
+    /**
+     * Generates a list of strings that any prefix of any string in the list can be used to look
+     * up the contact's name.
+     *
+     * @param index The contact's name in string.
+     * @return A List of strings, whose prefix can be used to look up the contact.
+     */
+    public static ArrayList<String> generateNamePrefixes(String index) {
+        final ArrayList<String> result = Lists.newArrayList();
+
+        /** Parses the name into a list of tokens.*/
+        final ArrayList<String> indexTokens = parseToIndexTokens(index);
+
+        if (indexTokens.size() > 0) {
+            /** Adds the full token combinations to the list. For example, a contact with name
+             * "Albert Ben Ed Foster" can be looked up by any prefix of the following strings
+             * "Foster" "EdFoster" "BenEdFoster" and "AlbertBenEdFoster". This covers all cases of
+             * look up that contains only one token, and that spans multiple continuous tokens.
+             */
+            final StringBuilder fullNameToken = new StringBuilder();
+            for (int i = indexTokens.size() - 1; i >= 0; i--) {
+                fullNameToken.insert(0, indexTokens.get(i));
+                result.add(fullNameToken.toString());
+            }
+
+            /** Adds initial combinations to the list, with the number of initials restricted by
+             * {@link #LAST_TOKENS_FOR_INITIALS} and {@link #FIRST_TOKENS_FOR_INITIALS}.
+             * For example, a contact with name "Albert Ben Ed Foster" can be looked up by any
+             * prefix of the following strings "EFoster" "BFoster" "BEFoster" "AFoster" "ABFoster"
+             * "AEFoster" and "ABEFoster". This covers all cases of initial lookup.
+             */
+            ArrayList<String> fullNames = Lists.newArrayList();
+            fullNames.add(indexTokens.get(indexTokens.size() - 1));
+            final int recursiveNameStart = result.size();
+            int recursiveNameEnd = result.size();
+            String initial = "";
+            for (int i = indexTokens.size() - 2; i >= 0; i--) {
+                if ((i >= indexTokens.size() - LAST_TOKENS_FOR_INITIALS) ||
+                        (i < FIRST_TOKENS_FOR_INITIALS)) {
+                    initial = indexTokens.get(i).substring(0, 1);
+
+                    /** Recursively adds initial combinations to the list.*/
+                    for (int j = 0; j < fullNames.size(); ++j) {
+                        result.add(initial + fullNames.get(j));
+                    }
+                    for (int j = recursiveNameStart; j < recursiveNameEnd; ++j) {
+                       result.add(initial + result.get(j));
+                    }
+                    recursiveNameEnd = result.size();
+                    final String currentFullName = fullNames.get(fullNames.size() - 1);
+                    fullNames.add(indexTokens.get(i) +  currentFullName);
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Computes a list of number strings based on tokens of a given phone number. Any prefix
+     * of any string in the list can be used to look up the phone number. The list include the
+     * full phone number, the national number if there is a country code in the phone number, and
+     * the local number if there is an area code in the phone number following the NANP format.
+     * For example, if a user has phone number +41 71 394 8392, the list will contain 41713948392
+     * and 713948392. Any prefix to either of the strings can be used to look up the phone number.
+     * If a user has a phone number +1 555-302-3029 (NANP format), the list will contain
+     * 15553023029, 5553023029, and 3023029.
+     *
+     * @param number String of user's phone number.
+     * @return A list of strings where any prefix of any entry can be used to look up the number.
+     */
+    public static ArrayList<String> parseToNumberTokens(String number) {
+        final ArrayList<String> result = Lists.newArrayList();
+        if (!TextUtils.isEmpty(number)) {
+            /** Adds the full number to the list.*/
+            result.add(SmartDialNameMatcher.normalizeNumber(number, mMap));
+
+            final PhoneNumberTokens phoneNumberTokens = parsePhoneNumber(number);
+            if (phoneNumberTokens == null) {
+                return result;
+            }
+
+            if (phoneNumberTokens.countryCodeOffset != 0) {
+                result.add(SmartDialNameMatcher.normalizeNumber(number,
+                        phoneNumberTokens.countryCodeOffset, mMap));
+            }
+
+            if (phoneNumberTokens.nanpCodeOffset != 0) {
+                result.add(SmartDialNameMatcher.normalizeNumber(number,
+                        phoneNumberTokens.nanpCodeOffset, mMap));
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Parses a phone number to find out whether it has country code and NANP area code.
+     *
+     * @param number Raw phone number.
+     * @return a PhoneNumberToken instance with country code, NANP code information.
+     */
+    public static PhoneNumberTokens parsePhoneNumber(String number) {
+        String countryCode = "";
+        int countryCodeOffset = 0;
+        int nanpNumberOffset = 0;
+
+        if (!TextUtils.isEmpty(number)) {
+            String normalizedNumber = SmartDialNameMatcher.normalizeNumber(number, mMap);
+            if (number.charAt(0) == '+') {
+                /** If the number starts with '+', tries to find valid country code. */
+                for (int i = 1; i <= 1 + 3; i++) {
+                    if (number.length() <= i) {
+                        break;
+                    }
+                    countryCode = number.substring(1, i);
+                    if (isValidCountryCode(countryCode)) {
+                        countryCodeOffset = i;
+                        break;
+                    }
+                }
+            } else {
+                /** If the number does not start with '+', finds out whether it is in NANP
+                 * format and has '1' preceding the number.
+                 */
+                if ((normalizedNumber.length() == 11) && (normalizedNumber.charAt(0) == '1') &&
+                        (sUserInNanpRegion)) {
+                    countryCode = "1";
+                    countryCodeOffset = number.indexOf(normalizedNumber.charAt(1));
+                    if (countryCodeOffset == -1) {
+                        countryCodeOffset = 0;
+                    }
+                }
+            }
+
+            /** If user is in NANP region, finds out whether a number is in NANP format.*/
+            if (sUserInNanpRegion)  {
+                String areaCode = "";
+                if (countryCode.equals("") && normalizedNumber.length() == 10){
+                    /** if the number has no country code but fits the NANP format, extracts the
+                     * NANP area code, and finds out offset of the local number.
+                     */
+                    areaCode = normalizedNumber.substring(0, 3);
+                } else if (countryCode.equals("1") && normalizedNumber.length() == 11) {
+                    /** If the number has country code '1', finds out area code and offset of the
+                     * local number.
+                     */
+                    areaCode = normalizedNumber.substring(1, 4);
+                }
+                if (!areaCode.equals("")) {
+                    final int areaCodeIndex = number.indexOf(areaCode);
+                    if (areaCodeIndex != -1) {
+                        nanpNumberOffset = number.indexOf(areaCode) + 3;
+                    }
+                }
+            }
+        }
+        return new PhoneNumberTokens(countryCode, countryCodeOffset, nanpNumberOffset);
+    }
+
+    /**
+     * Checkes whether a country code is valid.
+     */
+    private static boolean isValidCountryCode(String countryCode) {
+        if (sCountryCodes == null) {
+            sCountryCodes = initCountryCodes();
+        }
+        return sCountryCodes.contains(countryCode);
+    }
+
+    private static Set<String> initCountryCodes() {
+        final HashSet<String> result = new HashSet<String>();
+        result.add("1");
+        result.add("7");
+        result.add("20");
+        result.add("27");
+        result.add("30");
+        result.add("31");
+        result.add("32");
+        result.add("33");
+        result.add("34");
+        result.add("36");
+        result.add("39");
+        result.add("40");
+        result.add("41");
+        result.add("43");
+        result.add("44");
+        result.add("45");
+        result.add("46");
+        result.add("47");
+        result.add("48");
+        result.add("49");
+        result.add("51");
+        result.add("52");
+        result.add("53");
+        result.add("54");
+        result.add("55");
+        result.add("56");
+        result.add("57");
+        result.add("58");
+        result.add("60");
+        result.add("61");
+        result.add("62");
+        result.add("63");
+        result.add("64");
+        result.add("65");
+        result.add("66");
+        result.add("81");
+        result.add("82");
+        result.add("84");
+        result.add("86");
+        result.add("90");
+        result.add("91");
+        result.add("92");
+        result.add("93");
+        result.add("94");
+        result.add("95");
+        result.add("98");
+        result.add("211");
+        result.add("212");
+        result.add("213");
+        result.add("216");
+        result.add("218");
+        result.add("220");
+        result.add("221");
+        result.add("222");
+        result.add("223");
+        result.add("224");
+        result.add("225");
+        result.add("226");
+        result.add("227");
+        result.add("228");
+        result.add("229");
+        result.add("230");
+        result.add("231");
+        result.add("232");
+        result.add("233");
+        result.add("234");
+        result.add("235");
+        result.add("236");
+        result.add("237");
+        result.add("238");
+        result.add("239");
+        result.add("240");
+        result.add("241");
+        result.add("242");
+        result.add("243");
+        result.add("244");
+        result.add("245");
+        result.add("246");
+        result.add("247");
+        result.add("248");
+        result.add("249");
+        result.add("250");
+        result.add("251");
+        result.add("252");
+        result.add("253");
+        result.add("254");
+        result.add("255");
+        result.add("256");
+        result.add("257");
+        result.add("258");
+        result.add("260");
+        result.add("261");
+        result.add("262");
+        result.add("263");
+        result.add("264");
+        result.add("265");
+        result.add("266");
+        result.add("267");
+        result.add("268");
+        result.add("269");
+        result.add("290");
+        result.add("291");
+        result.add("297");
+        result.add("298");
+        result.add("299");
+        result.add("350");
+        result.add("351");
+        result.add("352");
+        result.add("353");
+        result.add("354");
+        result.add("355");
+        result.add("356");
+        result.add("357");
+        result.add("358");
+        result.add("359");
+        result.add("370");
+        result.add("371");
+        result.add("372");
+        result.add("373");
+        result.add("374");
+        result.add("375");
+        result.add("376");
+        result.add("377");
+        result.add("378");
+        result.add("379");
+        result.add("380");
+        result.add("381");
+        result.add("382");
+        result.add("385");
+        result.add("386");
+        result.add("387");
+        result.add("389");
+        result.add("420");
+        result.add("421");
+        result.add("423");
+        result.add("500");
+        result.add("501");
+        result.add("502");
+        result.add("503");
+        result.add("504");
+        result.add("505");
+        result.add("506");
+        result.add("507");
+        result.add("508");
+        result.add("509");
+        result.add("590");
+        result.add("591");
+        result.add("592");
+        result.add("593");
+        result.add("594");
+        result.add("595");
+        result.add("596");
+        result.add("597");
+        result.add("598");
+        result.add("599");
+        result.add("670");
+        result.add("672");
+        result.add("673");
+        result.add("674");
+        result.add("675");
+        result.add("676");
+        result.add("677");
+        result.add("678");
+        result.add("679");
+        result.add("680");
+        result.add("681");
+        result.add("682");
+        result.add("683");
+        result.add("685");
+        result.add("686");
+        result.add("687");
+        result.add("688");
+        result.add("689");
+        result.add("690");
+        result.add("691");
+        result.add("692");
+        result.add("800");
+        result.add("808");
+        result.add("850");
+        result.add("852");
+        result.add("853");
+        result.add("855");
+        result.add("856");
+        result.add("870");
+        result.add("878");
+        result.add("880");
+        result.add("881");
+        result.add("882");
+        result.add("883");
+        result.add("886");
+        result.add("888");
+        result.add("960");
+        result.add("961");
+        result.add("962");
+        result.add("963");
+        result.add("964");
+        result.add("965");
+        result.add("966");
+        result.add("967");
+        result.add("968");
+        result.add("970");
+        result.add("971");
+        result.add("972");
+        result.add("973");
+        result.add("974");
+        result.add("975");
+        result.add("976");
+        result.add("977");
+        result.add("979");
+        result.add("992");
+        result.add("993");
+        result.add("994");
+        result.add("995");
+        result.add("996");
+        result.add("998");
+        return result;
+    }
+
+    public static SmartDialMap getMap() {
+        return mMap;
+    }
+
+    /**
+     * Indicates whether the given country uses NANP numbers
+     * @see <a href="https://en.wikipedia.org/wiki/North_American_Numbering_Plan">
+     *     https://en.wikipedia.org/wiki/North_American_Numbering_Plan</a>
+     *
+     * @param country ISO 3166 country code (case doesn't matter)
+     * @return True if country uses NANP numbers (e.g. US, Canada), false otherwise
+     */
+    @VisibleForTesting
+    public static boolean isCountryNanp(String country) {
+        if (TextUtils.isEmpty(country)) {
+            return false;
+        }
+        if (sNanpCountries == null) {
+            sNanpCountries = initNanpCountries();
+        }
+        return sNanpCountries.contains(country.toUpperCase());
+    }
+
+    private static Set<String> initNanpCountries() {
+        final HashSet<String> result = new HashSet<String>();
+        result.add("US"); // United States
+        result.add("CA"); // Canada
+        result.add("AS"); // American Samoa
+        result.add("AI"); // Anguilla
+        result.add("AG"); // Antigua and Barbuda
+        result.add("BS"); // Bahamas
+        result.add("BB"); // Barbados
+        result.add("BM"); // Bermuda
+        result.add("VG"); // British Virgin Islands
+        result.add("KY"); // Cayman Islands
+        result.add("DM"); // Dominica
+        result.add("DO"); // Dominican Republic
+        result.add("GD"); // Grenada
+        result.add("GU"); // Guam
+        result.add("JM"); // Jamaica
+        result.add("PR"); // Puerto Rico
+        result.add("MS"); // Montserrat
+        result.add("MP"); // Northern Mariana Islands
+        result.add("KN"); // Saint Kitts and Nevis
+        result.add("LC"); // Saint Lucia
+        result.add("VC"); // Saint Vincent and the Grenadines
+        result.add("TT"); // Trinidad and Tobago
+        result.add("TC"); // Turks and Caicos Islands
+        result.add("VI"); // U.S. Virgin Islands
+        return result;
+    }
+
+    /**
+     * Returns whether the user is in a region that uses Nanp format based on the sim location.
+     *
+     * @return Whether user is in Nanp region.
+     */
+    public static boolean getUserInNanpRegion() {
+        return sUserInNanpRegion;
+    }
+}
diff --git a/src/com/android/dialer/dialpad/UnicodeDialerKeyListener.java b/src/com/android/dialer/dialpad/UnicodeDialerKeyListener.java
new file mode 100644
index 0000000..740b456
--- /dev/null
+++ b/src/com/android/dialer/dialpad/UnicodeDialerKeyListener.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.dialer.dialpad;
+
+import android.telephony.PhoneNumberUtils;
+import android.text.Spanned;
+import android.text.method.DialerKeyListener;
+
+/**
+ * {@link DialerKeyListener} with Unicode support. Converts any Unicode(e.g. Arabic) characters
+ * that represent digits into digits before filtering the results so that we can support
+ * pasted digits from Unicode languages.
+ */
+public class UnicodeDialerKeyListener extends DialerKeyListener {
+    public static final UnicodeDialerKeyListener INSTANCE = new UnicodeDialerKeyListener();
+
+    @Override
+    public CharSequence filter(CharSequence source, int start, int end,
+            Spanned dest, int dstart, int dend) {
+        final String converted = PhoneNumberUtils.convertKeypadLettersToDigits(
+                PhoneNumberUtils.replaceUnicodeDigits(source.toString()));
+        // PhoneNumberUtils.replaceUnicodeDigits performs a character for character replacement,
+        // so we can assume that start and end positions should remain unchanged.
+        CharSequence result = super.filter(converted, start, end, dest, dstart, dend);
+        if (result == null) {
+            if (source.equals(converted)) {
+                // There was no conversion or filtering performed. Just return null according to
+                // the behavior of DialerKeyListener.
+                return null;
+            } else {
+                // filter returns null if the charsequence is to be returned unchanged/unfiltered.
+                // But in this case we do want to return a modified character string (even if
+                // none of the characters in the modified string are filtered). So if
+                // result == null we return the unfiltered but converted numeric string instead.
+                return converted.subSequence(start, end);
+            }
+        }
+        return result;
+    }
+}
diff --git a/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java b/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java
new file mode 100644
index 0000000..de4fe99
--- /dev/null
+++ b/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java
@@ -0,0 +1,317 @@
+/*
+ * Copyright (C) 2015 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.dialer.filterednumber;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.FragmentManager;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.design.widget.Snackbar;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.Toast;
+
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.R;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnBlockNumberListener;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnUnblockNumberListener;
+import com.android.dialer.voicemail.VisualVoicemailEnabledChecker;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
+
+/**
+ * Fragment for confirming and enacting blocking/unblocking a number. Also invokes snackbar
+ * providing undo functionality.
+ */
+public class BlockNumberDialogFragment extends DialogFragment {
+
+    /**
+     * Use a callback interface to update UI after success/undo. Favor this approach over other
+     * more standard paradigms because of the variety of scenarios in which the DialogFragment
+     * can be invoked (by an Activity, by a fragment, by an adapter, by an adapter list item).
+     * Because of this, we do NOT support retaining state on rotation, and will dismiss the dialog
+     * upon rotation instead.
+     */
+    public interface Callback {
+        /**
+         * Called when a number is successfully added to the set of filtered numbers
+         */
+        void onFilterNumberSuccess();
+
+        /**
+         * Called when a number is successfully removed from the set of filtered numbers
+         */
+        void onUnfilterNumberSuccess();
+
+        /**
+         * Called when the action of filtering or unfiltering a number is undone
+         */
+        void onChangeFilteredNumberUndo();
+    }
+
+    private static final String BLOCK_DIALOG_FRAGMENT = "BlockNumberDialog";
+
+    private static final String ARG_BLOCK_ID = "argBlockId";
+    private static final String ARG_NUMBER = "argNumber";
+    private static final String ARG_COUNTRY_ISO = "argCountryIso";
+    private static final String ARG_DISPLAY_NUMBER = "argDisplayNumber";
+    private static final String ARG_PARENT_VIEW_ID = "parentViewId";
+
+    private String mNumber;
+    private String mDisplayNumber;
+    private String mCountryIso;
+
+    private FilteredNumberAsyncQueryHandler mHandler;
+    private View mParentView;
+    private VisualVoicemailEnabledChecker mVoicemailEnabledChecker;
+    private Callback mCallback;
+
+    public static void show(
+            Integer blockId,
+            String number,
+            String countryIso,
+            String displayNumber,
+            Integer parentViewId,
+            FragmentManager fragmentManager,
+            Callback callback) {
+        final BlockNumberDialogFragment newFragment = BlockNumberDialogFragment.newInstance(
+                blockId, number, countryIso, displayNumber, parentViewId);
+
+        newFragment.setCallback(callback);
+        newFragment.show(fragmentManager, BlockNumberDialogFragment.BLOCK_DIALOG_FRAGMENT);
+    }
+
+    private static BlockNumberDialogFragment newInstance(
+            Integer blockId,
+            String number,
+            String countryIso,
+            String displayNumber,
+            Integer parentViewId) {
+        final BlockNumberDialogFragment fragment = new BlockNumberDialogFragment();
+        final Bundle args = new Bundle();
+        if (blockId != null) {
+            args.putInt(ARG_BLOCK_ID, blockId.intValue());
+        }
+        if (parentViewId != null) {
+            args.putInt(ARG_PARENT_VIEW_ID, parentViewId.intValue());
+        }
+        args.putString(ARG_NUMBER, number);
+        args.putString(ARG_COUNTRY_ISO, countryIso);
+        args.putString(ARG_DISPLAY_NUMBER, displayNumber);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    public Context getContext() {
+        return getActivity();
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        super.onCreateDialog(savedInstanceState);
+        final boolean isBlocked = getArguments().containsKey(ARG_BLOCK_ID);
+
+        mNumber = getArguments().getString(ARG_NUMBER);
+        mDisplayNumber = getArguments().getString(ARG_DISPLAY_NUMBER);
+        mCountryIso = getArguments().getString(ARG_COUNTRY_ISO);
+
+        if (TextUtils.isEmpty(mDisplayNumber)) {
+            mDisplayNumber = mNumber;
+        }
+
+        mHandler = new FilteredNumberAsyncQueryHandler(getContext().getContentResolver());
+        mVoicemailEnabledChecker = new VisualVoicemailEnabledChecker(getActivity(), null);
+      	/**
+         * Choose not to update VoicemailEnabledChecker, as checks should already been done in
+         * all current use cases.
+         */
+        mParentView = getActivity().findViewById(getArguments().getInt(ARG_PARENT_VIEW_ID));
+
+        CharSequence title;
+        String okText;
+        String message;
+        if (isBlocked) {
+            title = ContactDisplayUtils.getTtsSpannedPhoneNumber(getResources(),
+                    R.string.unblock_number_confirmation_title,
+                    mDisplayNumber);
+            okText = getString(R.string.unblock_number_ok);
+            message = getString(R.string.unblock_number_confirmation_message);
+        } else {
+            title = ContactDisplayUtils.getTtsSpannedPhoneNumber(getResources(),
+                    R.string.block_number_confirmation_title,
+                    mDisplayNumber);
+            okText = getString(R.string.block_number_ok);
+            if (mVoicemailEnabledChecker.isVisualVoicemailEnabled()) {
+                message = getString(R.string.block_number_confirmation_message_vvm);
+            } else {
+                message = getString(R.string.block_number_confirmation_message_no_vvm);
+            }
+        }
+
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
+                .setTitle(title)
+                .setMessage(message)
+                .setPositiveButton(okText, new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int id) {
+                        if (isBlocked) {
+                            unblockNumber();
+                        } else {
+                            blockNumber();
+                        }
+                    }
+                })
+                .setNegativeButton(android.R.string.cancel, null);
+        return builder.create();
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        if (!FilteredNumbersUtil.canBlockNumber(getActivity(), mNumber, mCountryIso)) {
+            dismiss();
+            Toast.makeText(getContext(),
+                    ContactDisplayUtils.getTtsSpannedPhoneNumber(
+                            getResources(), R.string.invalidNumber, mDisplayNumber),
+                    Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    @Override
+    public void onPause() {
+        // Dismiss on rotation.
+        dismiss();
+        mCallback = null;
+
+        super.onPause();
+    }
+
+    public void setCallback(Callback callback) {
+        mCallback = callback;
+    }
+
+    private CharSequence getBlockedMessage() {
+        return ContactDisplayUtils.getTtsSpannedPhoneNumber(getResources(),
+                R.string.snackbar_number_blocked, mDisplayNumber);
+    }
+
+    private CharSequence getUnblockedMessage() {
+        return ContactDisplayUtils.getTtsSpannedPhoneNumber(getResources(),
+                R.string.snackbar_number_unblocked, mDisplayNumber);
+    }
+
+    private int getActionTextColor() {
+        return getContext().getResources().getColor(R.color.dialer_snackbar_action_text_color);
+    }
+
+    private void blockNumber() {
+        final CharSequence message = getBlockedMessage();
+        final CharSequence undoMessage = getUnblockedMessage();
+        final Callback callback = mCallback;
+        final int actionTextColor = getActionTextColor();
+        final Context context = getContext();
+
+        final OnUnblockNumberListener onUndoListener = new OnUnblockNumberListener() {
+            @Override
+            public void onUnblockComplete(int rows, ContentValues values) {
+                Snackbar.make(mParentView, undoMessage, Snackbar.LENGTH_LONG).show();
+                if (callback != null) {
+                    callback.onChangeFilteredNumberUndo();
+                }
+            }
+        };
+
+        final OnBlockNumberListener onBlockNumberListener = new OnBlockNumberListener() {
+            @Override
+            public void onBlockComplete(final Uri uri) {
+                final View.OnClickListener undoListener = new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        // Delete the newly created row on 'undo'.
+                        Logger.logInteraction(InteractionEvent.UNDO_BLOCK_NUMBER);
+                        mHandler.unblock(onUndoListener, uri);
+                    }
+                };
+
+                Snackbar.make(mParentView, message, Snackbar.LENGTH_LONG)
+                        .setAction(R.string.block_number_undo, undoListener)
+                        .setActionTextColor(actionTextColor)
+                        .show();
+
+                if (callback != null) {
+                    callback.onFilterNumberSuccess();
+                }
+
+                if (context != null && FilteredNumbersUtil.hasRecentEmergencyCall(context)) {
+                    FilteredNumbersUtil.maybeNotifyCallBlockingDisabled(context);
+                }
+            }
+        };
+
+        mHandler.blockNumber(
+                onBlockNumberListener,
+                mNumber,
+                mCountryIso);
+    }
+
+    private void unblockNumber() {
+        final CharSequence message = getUnblockedMessage();
+        final CharSequence undoMessage = getBlockedMessage();
+        final Callback callback = mCallback;
+        final int actionTextColor = getActionTextColor();
+
+        final OnBlockNumberListener onUndoListener = new OnBlockNumberListener() {
+            @Override
+            public void onBlockComplete(final Uri uri) {
+                Snackbar.make(mParentView, undoMessage, Snackbar.LENGTH_LONG).show();
+                if (callback != null) {
+                    callback.onChangeFilteredNumberUndo();
+                }
+            }
+        };
+
+        mHandler.unblock(new OnUnblockNumberListener() {
+            @Override
+            public void onUnblockComplete(int rows, final ContentValues values) {
+                final View.OnClickListener undoListener = new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        // Re-insert the row on 'undo', with a new ID.
+                        Logger.logInteraction(InteractionEvent.UNDO_UNBLOCK_NUMBER);
+                        mHandler.blockNumber(onUndoListener, values);
+                    }
+                };
+
+                Snackbar.make(mParentView, message, Snackbar.LENGTH_LONG)
+                        .setAction(R.string.block_number_undo, undoListener)
+                        .setActionTextColor(actionTextColor)
+                        .show();
+
+                if (callback != null) {
+                    callback.onUnfilterNumberSuccess();
+                }
+            }
+        }, getArguments().getInt(ARG_BLOCK_ID));
+    }
+}
diff --git a/src/com/android/dialer/filterednumber/BlockedNumbersAdapter.java b/src/com/android/dialer/filterednumber/BlockedNumbersAdapter.java
new file mode 100644
index 0000000..10a4f5a
--- /dev/null
+++ b/src/com/android/dialer/filterednumber/BlockedNumbersAdapter.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2015 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.dialer.filterednumber;
+
+import android.app.FragmentManager;
+import android.content.Context;
+import android.database.Cursor;
+import android.telephony.PhoneNumberUtils;
+import android.view.View;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.GeoUtil;
+import com.android.dialer.R;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
+
+public class BlockedNumbersAdapter extends NumbersAdapter {
+
+    private BlockedNumbersAdapter(
+            Context context,
+            FragmentManager fragmentManager,
+            ContactInfoHelper contactInfoHelper,
+            ContactPhotoManager contactPhotoManager) {
+        super(context, fragmentManager, contactInfoHelper, contactPhotoManager);
+    }
+
+    public static BlockedNumbersAdapter newBlockedNumbersAdapter(
+            Context context, FragmentManager fragmentManager) {
+        return new BlockedNumbersAdapter(
+                context,
+                fragmentManager,
+                new ContactInfoHelper(context, GeoUtil.getCurrentCountryIso(context)),
+                ContactPhotoManager.getInstance(context));
+    }
+
+    @Override
+    public void bindView(View view, final Context context, Cursor cursor) {
+        super.bindView(view, context, cursor);
+        final Integer id = cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns._ID));
+        final String countryIso = cursor.getString(cursor.getColumnIndex(
+                FilteredNumberColumns.COUNTRY_ISO));
+        final String number = cursor.getString(cursor.getColumnIndex(FilteredNumberColumns.NUMBER));
+        final String normalizedNumber = cursor.getString(cursor.getColumnIndex(
+                FilteredNumberColumns.NORMALIZED_NUMBER));
+
+        final View deleteButton = view.findViewById(R.id.delete_button);
+        deleteButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                BlockNumberDialogFragment.show(
+                        id,
+                        number,
+                        countryIso,
+                        PhoneNumberUtils.formatNumber(number, countryIso),
+                        R.id.blocked_numbers_activity_container,
+                        getFragmentManager(),
+                        new BlockNumberDialogFragment.Callback() {
+                            @Override
+                            public void onFilterNumberSuccess() {}
+
+                            @Override
+                            public void onUnfilterNumberSuccess() {
+                                Logger.logInteraction(
+                                        InteractionEvent.UNBLOCK_NUMBER_MANAGEMENT_SCREEN);
+                            }
+
+                            @Override
+                            public void onChangeFilteredNumberUndo() {}
+                        });
+            }
+        });
+
+        updateView(view, number, countryIso);
+    }
+
+    @Override
+    public boolean isEmpty() {
+        // Always return false, so that the header with blocking-related options always shows.
+        return false;
+    }
+}
diff --git a/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java b/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java
new file mode 100644
index 0000000..e231c6a
--- /dev/null
+++ b/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright (C) 2015 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.dialer.filterednumber;
+
+import android.app.ListFragment;
+import android.app.LoaderManager;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.content.Loader;
+import android.database.Cursor;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Bundle;
+import android.support.v4.app.ActivityCompat;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
+import com.android.dialer.R;
+import com.android.dialer.database.FilteredNumberContract;
+import com.android.dialer.filterednumber.FilteredNumbersUtil.CheckForSendToVoicemailContactListener;
+import com.android.dialer.filterednumber.FilteredNumbersUtil.ImportSendToVoicemailContactsListener;
+import com.android.dialer.voicemail.VisualVoicemailEnabledChecker;
+
+public class BlockedNumbersFragment extends ListFragment
+        implements LoaderManager.LoaderCallbacks<Cursor>, View.OnClickListener,
+        VisualVoicemailEnabledChecker.Callback {
+    private static final char ADD_BLOCKED_NUMBER_ICON_LETTER = '+';
+
+    private BlockedNumbersAdapter mAdapter;
+    private VisualVoicemailEnabledChecker mVoicemailEnabledChecker;
+
+    private View mImportSettings;
+    private View mBlockedNumbersDisabledForEmergency;
+    private View mBlockedNumberListDivider;
+
+    @Override
+    public Context getContext() {
+        return getActivity();
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        LayoutInflater inflater =
+                (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        getListView().addHeaderView(inflater.inflate(R.layout.blocked_number_header, null));
+        getListView().addFooterView(inflater.inflate(R.layout.blocked_number_footer, null));
+        //replace the icon for add number with LetterTileDrawable(), so it will have identical style
+        ImageView addNumberIcon = (ImageView) getActivity().findViewById(R.id.add_number_icon);
+        LetterTileDrawable drawable = new LetterTileDrawable(getResources());
+        drawable.setLetter(ADD_BLOCKED_NUMBER_ICON_LETTER);
+        drawable.setColor(ActivityCompat.getColor(getActivity(),
+                R.color.add_blocked_number_icon_color));
+        drawable.setIsCircular(true);
+        addNumberIcon.setImageDrawable(drawable);
+
+        if (mAdapter == null) {
+            mAdapter = BlockedNumbersAdapter.newBlockedNumbersAdapter(
+                    getContext(), getActivity().getFragmentManager());
+        }
+        setListAdapter(mAdapter);
+
+        mImportSettings = getListView().findViewById(R.id.import_settings);
+        mBlockedNumbersDisabledForEmergency =
+                getListView().findViewById(R.id.blocked_numbers_disabled_for_emergency);
+        mBlockedNumberListDivider = getActivity().findViewById(R.id.blocked_number_list_divider);
+        getListView().findViewById(R.id.import_button).setOnClickListener(this);;
+        getListView().findViewById(R.id.view_numbers_button).setOnClickListener(this);
+        getListView().findViewById(R.id.add_number_linear_layout).setOnClickListener(this);
+
+        mVoicemailEnabledChecker = new VisualVoicemailEnabledChecker(getContext(),this);
+        mVoicemailEnabledChecker.asyncUpdate();
+        updateActiveVoicemailProvider();
+    }
+
+    @Override
+    public void onDestroy() {
+        setListAdapter(null);
+        super.onDestroy();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
+        ColorDrawable backgroundDrawable = new ColorDrawable(
+                ActivityCompat.getColor(getActivity(), R.color.dialer_theme_color));
+        actionBar.setBackgroundDrawable(backgroundDrawable);
+        actionBar.setDisplayShowCustomEnabled(false);
+        actionBar.setDisplayHomeAsUpEnabled(true);
+        actionBar.setDisplayShowHomeEnabled(true);
+        actionBar.setDisplayShowTitleEnabled(true);
+        actionBar.setTitle(R.string.manage_blocked_numbers_label);
+
+        FilteredNumbersUtil.checkForSendToVoicemailContact(
+            getActivity(), new CheckForSendToVoicemailContactListener() {
+                @Override
+                public void onComplete(boolean hasSendToVoicemailContact) {
+                    final int visibility = hasSendToVoicemailContact ? View.VISIBLE : View.GONE;
+                    mImportSettings.setVisibility(visibility);
+                }
+            });
+
+        if (FilteredNumbersUtil.hasRecentEmergencyCall(getContext())) {
+            mBlockedNumbersDisabledForEmergency.setVisibility(View.VISIBLE);
+        } else {
+            mBlockedNumbersDisabledForEmergency.setVisibility(View.GONE);
+        }
+
+        mVoicemailEnabledChecker.asyncUpdate();
+    }
+
+    @Override
+    public View onCreateView(
+            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        return inflater.inflate(R.layout.blocked_number_fragment, container, false);
+    }
+
+    @Override
+    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+        final String[] projection = {
+            FilteredNumberContract.FilteredNumberColumns._ID,
+            FilteredNumberContract.FilteredNumberColumns.COUNTRY_ISO,
+            FilteredNumberContract.FilteredNumberColumns.NUMBER,
+            FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER
+        };
+        final String selection = FilteredNumberContract.FilteredNumberColumns.TYPE
+                + "=" + FilteredNumberContract.FilteredNumberTypes.BLOCKED_NUMBER;
+        final CursorLoader cursorLoader = new CursorLoader(
+                getContext(), FilteredNumberContract.FilteredNumber.CONTENT_URI, projection,
+                selection, null, null);
+        return cursorLoader;
+    }
+
+    @Override
+    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+        mAdapter.swapCursor(data);
+        if (data.getCount() == 0) {
+            mBlockedNumberListDivider.setVisibility(View.INVISIBLE);
+        } else {
+            mBlockedNumberListDivider.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    public void onLoaderReset(Loader<Cursor> loader) {
+        mAdapter.swapCursor(null);
+    }
+
+    @Override
+    public void onClick(final View view) {
+        BlockedNumbersSettingsActivity activity = (BlockedNumbersSettingsActivity) getActivity();
+        if (activity == null) {
+            return;
+        }
+
+        switch (view.getId()) {
+            case R.id.add_number_linear_layout:
+                activity.showSearchUi();
+                break;
+            case R.id.view_numbers_button:
+                activity.showNumbersToImportPreviewUi();
+                break;
+            case R.id.import_button:
+                FilteredNumbersUtil.importSendToVoicemailContacts(activity,
+                        new ImportSendToVoicemailContactsListener() {
+                            @Override
+                            public void onImportComplete() {
+                                mImportSettings.setVisibility(View.GONE);
+                            }
+                        });
+                break;
+        }
+    }
+    @Override
+    public void onVisualVoicemailEnabledStatusChanged(boolean newStatus){
+        updateActiveVoicemailProvider();
+    }
+
+    private void updateActiveVoicemailProvider(){
+        if (getActivity() == null || getActivity().isFinishing()) {
+            return;
+        }
+        TextView footerText = (TextView) getActivity().findViewById(
+            R.id.blocked_number_footer_textview);
+        if (mVoicemailEnabledChecker.isVisualVoicemailEnabled()) {
+            footerText.setText(R.string.block_number_footer_message_vvm);
+        } else {
+            footerText.setText(R.string.block_number_footer_message_no_vvm);
+        }
+    }
+}
diff --git a/src/com/android/dialer/filterednumber/BlockedNumbersSettingsActivity.java b/src/com/android/dialer/filterednumber/BlockedNumbersSettingsActivity.java
new file mode 100644
index 0000000..5ce9d21
--- /dev/null
+++ b/src/com/android/dialer/filterednumber/BlockedNumbersSettingsActivity.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2015 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.dialer.filterednumber;
+
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
+import android.view.MenuItem;
+import android.widget.FrameLayout;
+import android.widget.FrameLayout.LayoutParams;
+import android.widget.Toast;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.dialog.IndeterminateProgressDialog;
+import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
+import com.android.dialer.R;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.list.BlockedListSearchAdapter;
+import com.android.dialer.list.OnListFragmentScrolledListener;
+import com.android.dialer.list.BlockedListSearchFragment;
+import com.android.dialer.list.SearchFragment;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.ScreenEvent;
+
+public class BlockedNumbersSettingsActivity extends AppCompatActivity
+        implements SearchFragment.HostInterface {
+
+    private static final String TAG_BLOCKED_MANAGEMENT_FRAGMENT = "blocked_management";
+    private static final String TAG_BLOCKED_SEARCH_FRAGMENT = "blocked_search";
+    private static final String TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT = "view_numbers_to_import";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.blocked_numbers_activity);
+
+        // If savedInstanceState != null, the Activity will automatically restore the last fragment.
+        if (savedInstanceState == null) {
+            showManagementUi();
+        }
+    }
+
+    /**
+     * Shows fragment with the list of currently blocked numbers and settings related to blocking.
+     */
+    public void showManagementUi() {
+        BlockedNumbersFragment fragment = (BlockedNumbersFragment) getFragmentManager()
+                .findFragmentByTag(TAG_BLOCKED_MANAGEMENT_FRAGMENT);
+        if (fragment == null) {
+            fragment = new BlockedNumbersFragment();
+        }
+
+        getFragmentManager().beginTransaction()
+                .replace(R.id.blocked_numbers_activity_container, fragment,
+                        TAG_BLOCKED_MANAGEMENT_FRAGMENT)
+                .commit();
+
+        Logger.logScreenView(ScreenEvent.BLOCKED_NUMBER_MANAGEMENT, this);
+    }
+
+    /**
+     * Shows fragment with search UI for browsing/finding numbers to block.
+     */
+    public void showSearchUi() {
+        BlockedListSearchFragment fragment = (BlockedListSearchFragment) getFragmentManager()
+                .findFragmentByTag(TAG_BLOCKED_SEARCH_FRAGMENT);
+        if (fragment == null) {
+            fragment = new BlockedListSearchFragment();
+            fragment.setHasOptionsMenu(false);
+            fragment.setShowEmptyListForNullQuery(true);
+            fragment.setDirectorySearchEnabled(false);
+        }
+
+        getFragmentManager().beginTransaction()
+                .replace(R.id.blocked_numbers_activity_container, fragment,
+                        TAG_BLOCKED_SEARCH_FRAGMENT)
+                .addToBackStack(null)
+                .commit();
+
+        Logger.logScreenView(ScreenEvent.BLOCKED_NUMBER_ADD_NUMBER, this);
+    }
+
+    /**
+     * Shows fragment with UI to preview the numbers of contacts currently marked as
+     * send-to-voicemail in Contacts. These numbers can be imported into Dialer's blocked number
+     * list.
+     */
+    public void showNumbersToImportPreviewUi() {
+        ViewNumbersToImportFragment fragment = (ViewNumbersToImportFragment) getFragmentManager()
+                .findFragmentByTag(TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT);
+        if (fragment == null) {
+            fragment = new ViewNumbersToImportFragment();
+        }
+
+        getFragmentManager().beginTransaction()
+                .replace(R.id.blocked_numbers_activity_container, fragment,
+                        TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT)
+                .addToBackStack(null)
+                .commit();
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            onBackPressed();
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public void onBackPressed() {
+        // TODO: Achieve back navigation without overriding onBackPressed.
+        if (getFragmentManager().getBackStackEntryCount() > 0) {
+            getFragmentManager().popBackStack();
+        } else {
+            super.onBackPressed();
+        }
+    }
+
+    @Override
+    public boolean isActionBarShowing() {
+        return false;
+    }
+
+    @Override
+    public boolean isDialpadShown() {
+        return false;
+    }
+
+    @Override
+    public int getDialpadHeight() {
+        return 0;
+    }
+
+    @Override
+    public int getActionBarHideOffset() {
+        return 0;
+    }
+
+    @Override
+    public int getActionBarHeight() {
+        return 0;
+    }
+}
diff --git a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
new file mode 100644
index 0000000..e3870de
--- /dev/null
+++ b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
@@ -0,0 +1,363 @@
+/*
+ * Copyright (C) 2015 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.dialer.filterednumber;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.os.AsyncTask;
+import android.preference.PreferenceManager;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Contacts;
+import android.provider.Settings;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.dialer.R;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Utility to help with tasks related to filtered numbers.
+ */
+public class FilteredNumbersUtil {
+
+    // Disable incoming call blocking if there was a call within the past 2 days.
+    private static final long RECENT_EMERGENCY_CALL_THRESHOLD_MS = 1000 * 60 * 60 * 24 * 2;
+
+    // Pref key for storing the time of end of the last emergency call in milliseconds after epoch.
+    protected static final String LAST_EMERGENCY_CALL_MS_PREF_KEY = "last_emergency_call_ms";
+
+    // Pref key for storing whether a notification has been dispatched to notify the user that call
+    // blocking has been disabled because of a recent emergency call.
+    protected static final String NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY =
+            "notified_call_blocking_disabled_by_emergency_call";
+
+    public static final String CALL_BLOCKING_NOTIFICATION_TAG = "call_blocking";
+    public static final int CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_NOTIFICATION_ID = 10;
+
+    /**
+     * Used for testing to specify that a custom threshold should be used instead of the default.
+     * This custom threshold will only be used when setting this log tag to VERBOSE:
+     *
+     *     adb shell setprop log.tag.DebugEmergencyCall VERBOSE
+     *
+     */
+    @NeededForTesting
+    private static final String DEBUG_EMERGENCY_CALL_TAG = "DebugEmergencyCall";
+
+    /**
+     * Used for testing to specify the custom threshold value, in milliseconds for whether an
+     * emergency call is "recent". The default value will be used if this custom threshold is less
+     * than zero. For example, to set this threshold to 60 seconds:
+     *
+     *     adb shell settings put system dialer_emergency_call_threshold_ms 60000
+     *
+     */
+    @NeededForTesting
+    private static final String RECENT_EMERGENCY_CALL_THRESHOLD_SETTINGS_KEY =
+            "dialer_emergency_call_threshold_ms";
+
+    public interface CheckForSendToVoicemailContactListener {
+        public void onComplete(boolean hasSendToVoicemailContact);
+    }
+
+    public interface ImportSendToVoicemailContactsListener {
+        public void onImportComplete();
+    }
+
+    private static class ContactsQuery {
+        static final String[] PROJECTION = {
+            Contacts._ID
+        };
+
+        static final String SELECT_SEND_TO_VOICEMAIL_TRUE = Contacts.SEND_TO_VOICEMAIL + "=1";
+
+        static final int ID_COLUMN_INDEX = 0;
+    }
+
+    public static class PhoneQuery {
+        static final String[] PROJECTION = {
+            Contacts._ID,
+            Phone.NORMALIZED_NUMBER,
+            Phone.NUMBER
+        };
+
+        static final int ID_COLUMN_INDEX = 0;
+        static final int NORMALIZED_NUMBER_COLUMN_INDEX = 1;
+        static final int NUMBER_COLUMN_INDEX = 2;
+
+        static final String SELECT_SEND_TO_VOICEMAIL_TRUE = Contacts.SEND_TO_VOICEMAIL + "=1";
+    }
+
+    /**
+     * Checks if there exists a contact with {@code Contacts.SEND_TO_VOICEMAIL} set to true.
+     */
+    public static void checkForSendToVoicemailContact(
+            final Context context, final CheckForSendToVoicemailContactListener listener) {
+        final AsyncTask task = new AsyncTask<Object, Void, Boolean>() {
+            @Override
+            public Boolean doInBackground(Object[]  params) {
+                if (context == null) {
+                    return false;
+                }
+
+                final Cursor cursor = context.getContentResolver().query(
+                        Contacts.CONTENT_URI,
+                        ContactsQuery.PROJECTION,
+                        ContactsQuery.SELECT_SEND_TO_VOICEMAIL_TRUE,
+                        null,
+                        null);
+
+                boolean hasSendToVoicemailContacts = false;
+                if (cursor != null) {
+                    try {
+                        hasSendToVoicemailContacts = cursor.getCount() > 0;
+                    } finally {
+                        cursor.close();
+                    }
+                }
+
+                return hasSendToVoicemailContacts;
+            }
+
+            @Override
+            public void onPostExecute(Boolean hasSendToVoicemailContact) {
+                if (listener != null) {
+                    listener.onComplete(hasSendToVoicemailContact);
+                }
+            }
+        };
+        task.execute();
+    }
+
+    /**
+     * Blocks all the phone numbers of any contacts marked as SEND_TO_VOICEMAIL, then clears the
+     * SEND_TO_VOICEMAIL flag on those contacts.
+     */
+    public static void importSendToVoicemailContacts(
+            final Context context, final ImportSendToVoicemailContactsListener listener) {
+        Logger.logInteraction(InteractionEvent.IMPORT_SEND_TO_VOICEMAIL);
+        final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler =
+                new FilteredNumberAsyncQueryHandler(context.getContentResolver());
+
+        final AsyncTask<Object, Void, Boolean> task = new AsyncTask<Object, Void, Boolean>() {
+            @Override
+            public Boolean doInBackground(Object[] params) {
+                if (context == null) {
+                    return false;
+                }
+
+                // Get the phone number of contacts marked as SEND_TO_VOICEMAIL.
+                final Cursor phoneCursor = context.getContentResolver().query(
+                        Phone.CONTENT_URI,
+                        PhoneQuery.PROJECTION,
+                        PhoneQuery.SELECT_SEND_TO_VOICEMAIL_TRUE,
+                        null,
+                        null);
+
+                if (phoneCursor == null) {
+                    return false;
+                }
+
+                try {
+                    while (phoneCursor.moveToNext()) {
+                        final String normalizedNumber = phoneCursor.getString(
+                                PhoneQuery.NORMALIZED_NUMBER_COLUMN_INDEX);
+                        final String number = phoneCursor.getString(
+                                PhoneQuery.NUMBER_COLUMN_INDEX);
+                        if (normalizedNumber != null) {
+                            // Block the phone number of the contact.
+                            mFilteredNumberAsyncQueryHandler.blockNumber(
+                                    null, normalizedNumber, number, null);
+                        }
+                    }
+                } finally {
+                    phoneCursor.close();
+                }
+
+                // Clear SEND_TO_VOICEMAIL on all contacts. The setting has been imported to Dialer.
+                ContentValues newValues = new ContentValues();
+                newValues.put(Contacts.SEND_TO_VOICEMAIL, 0);
+                context.getContentResolver().update(
+                        Contacts.CONTENT_URI,
+                        newValues,
+                        ContactsQuery.SELECT_SEND_TO_VOICEMAIL_TRUE,
+                        null);
+
+                return true;
+            }
+
+            @Override
+            public void onPostExecute(Boolean success) {
+                if (success) {
+                    if (listener != null) {
+                        listener.onImportComplete();
+                    }
+                } else if (context != null) {
+                    String toastStr = context.getString(R.string.send_to_voicemail_import_failed);
+                    Toast.makeText(context, toastStr, Toast.LENGTH_SHORT).show();
+                }
+            }
+        };
+        task.execute();
+    }
+
+     /**
+     * WARNING: This method should NOT be executed on the UI thread.
+     * Use {@code FilteredNumberAsyncQueryHandler} to asynchronously check if a number is blocked.
+     */
+    public static boolean shouldBlockVoicemail(
+            Context context, String number, String countryIso, long voicemailDateMs) {
+        final String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+        if (TextUtils.isEmpty(normalizedNumber)) {
+            return false;
+        }
+
+        if (hasRecentEmergencyCall(context)) {
+            return false;
+        }
+
+        final Cursor cursor = context.getContentResolver().query(
+                FilteredNumber.CONTENT_URI,
+                new String[] {
+                    FilteredNumberColumns.CREATION_TIME
+                },
+                FilteredNumberColumns.NORMALIZED_NUMBER + "=?",
+                new String[] { normalizedNumber },
+                null);
+        if (cursor == null) {
+            return false;
+        }
+        try {
+                /*
+                 * Block if number is found and it was added before this voicemail was received.
+                 * The VVM's date is reported with precision to the minute, even though its
+                 * magnitude is in milliseconds, so we perform the comparison in minutes.
+                 */
+                return cursor.moveToFirst() &&
+                        TimeUnit.MINUTES.convert(voicemailDateMs, TimeUnit.MILLISECONDS) >=
+                                TimeUnit.MINUTES.convert(cursor.getLong(0), TimeUnit.MILLISECONDS);
+        } finally {
+            cursor.close();
+        }
+    }
+
+    public static boolean hasRecentEmergencyCall(Context context) {
+        if (context == null) {
+            return false;
+        }
+
+        Long lastEmergencyCallTime = PreferenceManager.getDefaultSharedPreferences(context)
+                .getLong(LAST_EMERGENCY_CALL_MS_PREF_KEY, 0);
+        if (lastEmergencyCallTime == 0) {
+            return false;
+        }
+
+        return (System.currentTimeMillis() - lastEmergencyCallTime)
+                < getRecentEmergencyCallThresholdMs(context);
+    }
+
+    public static void recordLastEmergencyCallTime(Context context) {
+        if (context == null) {
+            return;
+        }
+
+        PreferenceManager.getDefaultSharedPreferences(context)
+                .edit()
+                .putLong(LAST_EMERGENCY_CALL_MS_PREF_KEY, System.currentTimeMillis())
+                .putBoolean(NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY, false)
+                .apply();
+
+        maybeNotifyCallBlockingDisabled(context);
+    }
+
+    public static void maybeNotifyCallBlockingDisabled(final Context context) {
+        // Skip if the user has already received a notification for the most recent emergency call.
+        if (PreferenceManager.getDefaultSharedPreferences(context)
+                .getBoolean(NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY, false)) {
+            return;
+        }
+
+        // If the user has blocked numbers, notify that call blocking is temporarily disabled.
+        FilteredNumberAsyncQueryHandler queryHandler =
+                new FilteredNumberAsyncQueryHandler(context.getContentResolver());
+        queryHandler.hasBlockedNumbers(new OnHasBlockedNumbersListener() {
+            @Override
+            public void onHasBlockedNumbers(boolean hasBlockedNumbers) {
+                if (context == null || !hasBlockedNumbers) {
+                    return;
+                }
+
+                NotificationManager notificationManager = (NotificationManager)
+                        context.getSystemService(Context.NOTIFICATION_SERVICE);
+                Notification.Builder builder = new Notification.Builder(context)
+                        .setSmallIcon(R.drawable.ic_block_24dp)
+                        .setContentTitle(context.getString(
+                                R.string.call_blocking_disabled_notification_title))
+                        .setContentText(context.getString(
+                                R.string.call_blocking_disabled_notification_text))
+                        .setAutoCancel(true);
+
+                final Intent contentIntent =
+                        new Intent(context, BlockedNumbersSettingsActivity.class);
+                builder.setContentIntent(PendingIntent.getActivity(
+                        context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT));
+
+                notificationManager.notify(
+                        CALL_BLOCKING_NOTIFICATION_TAG,
+                        CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_NOTIFICATION_ID,
+                        builder.build());
+
+                // Record that the user has been notified for this emergency call.
+                PreferenceManager.getDefaultSharedPreferences(context)
+                    .edit()
+                    .putBoolean(NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY, true)
+                    .apply();
+            }
+        });
+    }
+
+    public static boolean canBlockNumber(Context context, String number, String countryIso) {
+        final String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+        return !TextUtils.isEmpty(normalizedNumber)
+                && !PhoneNumberUtils.isEmergencyNumber(normalizedNumber);
+    }
+
+    private static long getRecentEmergencyCallThresholdMs(Context context) {
+        if (android.util.Log.isLoggable(
+                DEBUG_EMERGENCY_CALL_TAG, android.util.Log.VERBOSE)) {
+            long thresholdMs = Settings.System.getLong(
+                    context.getContentResolver(),
+                    RECENT_EMERGENCY_CALL_THRESHOLD_SETTINGS_KEY, 0);
+            return thresholdMs > 0 ? thresholdMs : RECENT_EMERGENCY_CALL_THRESHOLD_MS;
+        } else {
+            return RECENT_EMERGENCY_CALL_THRESHOLD_MS;
+        }
+    }
+}
diff --git a/src/com/android/dialer/filterednumber/NumbersAdapter.java b/src/com/android/dialer/filterednumber/NumbersAdapter.java
new file mode 100644
index 0000000..17d5db3
--- /dev/null
+++ b/src/com/android/dialer/filterednumber/NumbersAdapter.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2015 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.dialer.filterednumber;
+
+import android.app.FragmentManager;
+import android.content.Context;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.QuickContactBadge;
+import android.widget.SimpleCursorAdapter;
+import android.widget.TextView;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.util.UriUtils;
+import com.android.dialer.R;
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.util.PhoneNumberUtil;
+
+public class NumbersAdapter extends SimpleCursorAdapter {
+
+    private Context mContext;
+    private FragmentManager mFragmentManager;
+    private ContactInfoHelper mContactInfoHelper;
+    private BidiFormatter mBidiFormatter = BidiFormatter.getInstance();
+    private ContactPhotoManager mContactPhotoManager;
+
+    public NumbersAdapter(
+            Context context,
+            FragmentManager fragmentManager,
+            ContactInfoHelper contactInfoHelper,
+            ContactPhotoManager contactPhotoManager) {
+        super(context, R.layout.blocked_number_item, null, new String[]{}, new int[]{}, 0);
+        mContext = context;
+        mFragmentManager = fragmentManager;
+        mContactInfoHelper = contactInfoHelper;
+        mContactPhotoManager = contactPhotoManager;
+    }
+
+    public void updateView(View view, String number, String countryIso) {
+        final TextView callerName = (TextView) view.findViewById(R.id.caller_name);
+        final TextView callerNumber = (TextView) view.findViewById(R.id.caller_number);
+        final QuickContactBadge quickContactBadge =
+                (QuickContactBadge) view.findViewById(R.id.quick_contact_photo);
+        quickContactBadge.setOverlay(null);
+        if (CompatUtils.hasPrioritizedMimeType()) {
+            quickContactBadge.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
+        }
+
+        ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso);
+        if (info == null) {
+            info = new ContactInfo();
+            info.number = number;
+        }
+        final CharSequence locationOrType = getNumberTypeOrLocation(info);
+        final String displayNumber = getDisplayNumber(info);
+        final String displayNumberStr = mBidiFormatter.unicodeWrap(displayNumber,
+                TextDirectionHeuristics.LTR);
+
+        String nameForDefaultImage;
+        if (!TextUtils.isEmpty(info.name)) {
+            nameForDefaultImage = info.name;
+            callerName.setText(info.name);
+            callerNumber.setText(locationOrType + " " + displayNumberStr);
+        } else {
+            nameForDefaultImage = displayNumber;
+            callerName.setText(displayNumberStr);
+            if (!TextUtils.isEmpty(locationOrType)) {
+                callerNumber.setText(locationOrType);
+                callerNumber.setVisibility(View.VISIBLE);
+            } else {
+                callerNumber.setVisibility(View.GONE);
+            }
+        }
+        loadContactPhoto(info, nameForDefaultImage, quickContactBadge);
+    }
+
+    private void loadContactPhoto(ContactInfo info, String displayName, QuickContactBadge badge) {
+        final String lookupKey = info.lookupUri == null
+                ? null : UriUtils.getLookupKeyFromUri(info.lookupUri);
+        final int contactType = mContactInfoHelper.isBusiness(info.sourceType)
+                ? ContactPhotoManager.TYPE_BUSINESS : ContactPhotoManager.TYPE_DEFAULT;
+        final DefaultImageRequest request = new DefaultImageRequest(displayName, lookupKey,
+                contactType, true /* isCircular */);
+        badge.assignContactUri(info.lookupUri);
+        badge.setContentDescription(
+                mContext.getResources().getString(R.string.description_contact_details, displayName));
+        mContactPhotoManager.loadDirectoryPhoto(badge, info.photoUri,
+                false /* darkTheme */, true /* isCircular */, request);
+    }
+
+    private String getDisplayNumber(ContactInfo info) {
+        if (!TextUtils.isEmpty(info.formattedNumber)) {
+            return info.formattedNumber;
+        } else if (!TextUtils.isEmpty(info.number)) {
+            return info.number;
+        } else {
+            return "";
+        }
+    }
+
+    private CharSequence getNumberTypeOrLocation(ContactInfo info) {
+        if (!TextUtils.isEmpty(info.name)) {
+            return ContactsContract.CommonDataKinds.Phone.getTypeLabel(
+                    mContext.getResources(), info.type, info.label);
+        } else {
+            return PhoneNumberUtil.getGeoDescription(mContext, info.number);
+        }
+    }
+
+    protected Context getContext() {
+        return mContext;
+    }
+
+    protected FragmentManager getFragmentManager() {
+        return mFragmentManager;
+    }
+}
diff --git a/src/com/android/dialer/filterednumber/ViewNumbersToImportAdapter.java b/src/com/android/dialer/filterednumber/ViewNumbersToImportAdapter.java
new file mode 100644
index 0000000..58fe1d4
--- /dev/null
+++ b/src/com/android/dialer/filterednumber/ViewNumbersToImportAdapter.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2015 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.dialer.filterednumber;
+
+import android.app.FragmentManager;
+import android.database.Cursor;
+import android.content.Context;
+import android.view.View;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.GeoUtil;
+import com.android.dialer.R;
+import com.android.dialer.calllog.ContactInfoHelper;
+
+public class ViewNumbersToImportAdapter extends NumbersAdapter {
+
+    private ViewNumbersToImportAdapter(
+            Context context,
+            FragmentManager fragmentManager,
+            ContactInfoHelper contactInfoHelper,
+            ContactPhotoManager contactPhotoManager) {
+        super(context, fragmentManager, contactInfoHelper, contactPhotoManager);
+    }
+
+    public static ViewNumbersToImportAdapter newViewNumbersToImportAdapter(
+            Context context, FragmentManager fragmentManager) {
+        return new ViewNumbersToImportAdapter(
+                context,
+                fragmentManager,
+                new ContactInfoHelper(context, GeoUtil.getCurrentCountryIso(context)),
+                ContactPhotoManager.getInstance(context));
+    }
+
+    @Override
+    public void bindView(View view, Context context, Cursor cursor) {
+        super.bindView(view, context, cursor);
+
+        final String number = cursor.getString(
+                FilteredNumbersUtil.PhoneQuery.NUMBER_COLUMN_INDEX);
+
+        view.findViewById(R.id.delete_button).setVisibility(View.GONE);
+        updateView(view, number, null /* countryIso */);
+    }
+}
diff --git a/src/com/android/dialer/filterednumber/ViewNumbersToImportFragment.java b/src/com/android/dialer/filterednumber/ViewNumbersToImportFragment.java
new file mode 100644
index 0000000..153d73c
--- /dev/null
+++ b/src/com/android/dialer/filterednumber/ViewNumbersToImportFragment.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2015 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.dialer.filterednumber;
+
+import android.app.ListFragment;
+import android.app.LoaderManager;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.content.Loader;
+import android.database.Cursor;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Contacts;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.dialer.R;
+import com.android.dialer.database.FilteredNumberContract;
+import com.android.dialer.filterednumber.FilteredNumbersUtil.ImportSendToVoicemailContactsListener;
+
+public class ViewNumbersToImportFragment extends ListFragment
+        implements LoaderManager.LoaderCallbacks<Cursor>,
+                View.OnClickListener {
+
+    private ViewNumbersToImportAdapter mAdapter;
+
+    @Override
+    public Context getContext() {
+        return getActivity();
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        if (mAdapter == null) {
+            mAdapter = ViewNumbersToImportAdapter.newViewNumbersToImportAdapter(
+                    getContext(), getActivity().getFragmentManager());
+        }
+        setListAdapter(mAdapter);
+    }
+
+    @Override
+    public void onDestroy() {
+        setListAdapter(null);
+        super.onDestroy();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
+        actionBar.setTitle(R.string.import_send_to_voicemail_numbers_label);
+        actionBar.setDisplayShowCustomEnabled(false);
+        actionBar.setDisplayHomeAsUpEnabled(true);
+        actionBar.setDisplayShowHomeEnabled(true);
+        actionBar.setDisplayShowTitleEnabled(true);
+
+        getActivity().findViewById(R.id.cancel_button).setOnClickListener(this);
+        getActivity().findViewById(R.id.import_button).setOnClickListener(this);
+    }
+
+    @Override
+    public View onCreateView(
+            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        return inflater.inflate(R.layout.view_numbers_to_import_fragment, container, false);
+    }
+
+    @Override
+    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+        final CursorLoader cursorLoader = new CursorLoader(
+                getContext(),
+                Phone.CONTENT_URI,
+                FilteredNumbersUtil.PhoneQuery.PROJECTION,
+                FilteredNumbersUtil.PhoneQuery.SELECT_SEND_TO_VOICEMAIL_TRUE,
+                null,
+                null);
+        return cursorLoader;
+    }
+
+    @Override
+    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+        mAdapter.swapCursor(data);
+    }
+
+    @Override
+    public void onLoaderReset(Loader<Cursor> loader) {
+        mAdapter.swapCursor(null);
+    }
+
+    @Override
+    public void onClick(final View view) {
+        switch (view.getId()) {
+            case R.id.import_button:
+                FilteredNumbersUtil.importSendToVoicemailContacts(getContext(),
+                        new ImportSendToVoicemailContactsListener() {
+                            @Override
+                            public void onImportComplete() {
+                                if (getActivity() != null) {
+                                    getActivity().onBackPressed();
+                                }
+                            }
+                        });
+                break;
+            case R.id.cancel_button:
+                getActivity().onBackPressed();
+                break;
+        }
+    }
+}
diff --git a/src/com/android/dialer/interactions/PhoneNumberInteraction.java b/src/com/android/dialer/interactions/PhoneNumberInteraction.java
new file mode 100644
index 0000000..2472845
--- /dev/null
+++ b/src/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -0,0 +1,515 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.interactions;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.FragmentManager;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnDismissListener;
+import android.content.Intent;
+import android.content.Loader;
+import android.content.Loader.OnLoadCompleteListener;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.RawContacts;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.CheckBox;
+import android.widget.ListAdapter;
+import android.widget.TextView;
+
+import com.android.contacts.common.Collapser;
+import com.android.contacts.common.Collapser.Collapsible;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.R;
+import com.android.dialer.TransactionSafeActivity;
+import com.android.dialer.contact.ContactUpdateService;
+import com.android.dialer.util.IntentUtil;
+import com.android.dialer.util.IntentUtil.CallIntentBuilder;
+import com.android.incallui.Call.LogState;
+import com.android.dialer.util.DialerUtils;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Initiates phone calls or a text message. If there are multiple candidates, this class shows a
+ * dialog to pick one. Creating one of these interactions should be done through the static
+ * factory methods.
+ *
+ * Note that this class initiates not only usual *phone* calls but also *SIP* calls.
+ *
+ * TODO: clean up code and documents since it is quite confusing to use "phone numbers" or
+ *        "phone calls" here while they can be SIP addresses or SIP calls (See also issue 5039627).
+ */
+public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> {
+    private static final String TAG = PhoneNumberInteraction.class.getSimpleName();
+
+    /**
+     * A model object for capturing a phone number for a given contact.
+     */
+    @VisibleForTesting
+    /* package */ static class PhoneItem implements Parcelable, Collapsible<PhoneItem> {
+        long id;
+        String phoneNumber;
+        String accountType;
+        String dataSet;
+        long type;
+        String label;
+        /** {@link Phone#CONTENT_ITEM_TYPE} or {@link SipAddress#CONTENT_ITEM_TYPE}. */
+        String mimeType;
+
+        public PhoneItem() {
+        }
+
+        private PhoneItem(Parcel in) {
+            this.id          = in.readLong();
+            this.phoneNumber = in.readString();
+            this.accountType = in.readString();
+            this.dataSet     = in.readString();
+            this.type        = in.readLong();
+            this.label       = in.readString();
+            this.mimeType    = in.readString();
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeLong(id);
+            dest.writeString(phoneNumber);
+            dest.writeString(accountType);
+            dest.writeString(dataSet);
+            dest.writeLong(type);
+            dest.writeString(label);
+            dest.writeString(mimeType);
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void collapseWith(PhoneItem phoneItem) {
+            // Just keep the number and id we already have.
+        }
+
+        @Override
+        public boolean shouldCollapseWith(PhoneItem phoneItem, Context context) {
+            return MoreContactUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE, phoneNumber,
+                    Phone.CONTENT_ITEM_TYPE, phoneItem.phoneNumber);
+        }
+
+        @Override
+        public String toString() {
+            return phoneNumber;
+        }
+
+        public static final Parcelable.Creator<PhoneItem> CREATOR
+                = new Parcelable.Creator<PhoneItem>() {
+            @Override
+            public PhoneItem createFromParcel(Parcel in) {
+                return new PhoneItem(in);
+            }
+
+            @Override
+            public PhoneItem[] newArray(int size) {
+                return new PhoneItem[size];
+            }
+        };
+    }
+
+    /**
+     * A list adapter that populates the list of contact's phone numbers.
+     */
+    private static class PhoneItemAdapter extends ArrayAdapter<PhoneItem> {
+        private final int mInteractionType;
+
+        public PhoneItemAdapter(Context context, List<PhoneItem> list,
+                int interactionType) {
+            super(context, R.layout.phone_disambig_item, android.R.id.text2, list);
+            mInteractionType = interactionType;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            final View view = super.getView(position, convertView, parent);
+
+            final PhoneItem item = getItem(position);
+            final TextView typeView = (TextView) view.findViewById(android.R.id.text1);
+            CharSequence value = ContactDisplayUtils.getLabelForCallOrSms((int) item.type,
+                    item.label, mInteractionType, getContext());
+
+            typeView.setText(value);
+            return view;
+        }
+    }
+
+    /**
+     * {@link DialogFragment} used for displaying a dialog with a list of phone numbers of which
+     * one will be chosen to make a call or initiate an sms message.
+     *
+     * It is recommended to use
+     * {@link PhoneNumberInteraction#startInteractionForPhoneCall(TransactionSafeActivity, Uri)} or
+     * {@link PhoneNumberInteraction#startInteractionForTextMessage(TransactionSafeActivity, Uri)}
+     * instead of directly using this class, as those methods handle one or multiple data cases
+     * appropriately.
+     */
+    /* Made public to let the system reach this class */
+    public static class PhoneDisambiguationDialogFragment extends DialogFragment
+            implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener {
+
+        private static final String ARG_PHONE_LIST = "phoneList";
+        private static final String ARG_INTERACTION_TYPE = "interactionType";
+        private static final String ARG_CALL_INITIATION_TYPE = "callInitiation";
+
+        private int mInteractionType;
+        private ListAdapter mPhonesAdapter;
+        private List<PhoneItem> mPhoneList;
+        private int mCallInitiationType;
+        private boolean mIsVideoCall;
+
+        public static void show(FragmentManager fragmentManager, ArrayList<PhoneItem> phoneList,
+                int interactionType, boolean isVideoCall, int callInitiationType) {
+            PhoneDisambiguationDialogFragment fragment = new PhoneDisambiguationDialogFragment(
+                isVideoCall);
+            Bundle bundle = new Bundle();
+            bundle.putParcelableArrayList(ARG_PHONE_LIST, phoneList);
+            bundle.putInt(ARG_INTERACTION_TYPE, interactionType);
+            bundle.putInt(ARG_CALL_INITIATION_TYPE, callInitiationType);
+            fragment.setArguments(bundle);
+            fragment.show(fragmentManager, TAG);
+        }
+
+        public PhoneDisambiguationDialogFragment(boolean isVideoCall) {
+            super();
+            mIsVideoCall = isVideoCall;
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            final Activity activity = getActivity();
+            mPhoneList = getArguments().getParcelableArrayList(ARG_PHONE_LIST);
+            mInteractionType = getArguments().getInt(ARG_INTERACTION_TYPE);
+            mCallInitiationType = getArguments().getInt(ARG_CALL_INITIATION_TYPE);
+
+            mPhonesAdapter = new PhoneItemAdapter(activity, mPhoneList, mInteractionType);
+            final LayoutInflater inflater = activity.getLayoutInflater();
+            final View setPrimaryView = inflater.inflate(R.layout.set_primary_checkbox, null);
+            return new AlertDialog.Builder(activity)
+                    .setAdapter(mPhonesAdapter, this)
+                    .setTitle(mInteractionType == ContactDisplayUtils.INTERACTION_SMS
+                            ? R.string.sms_disambig_title : R.string.call_disambig_title)
+                    .setView(setPrimaryView)
+                    .create();
+        }
+
+        @Override
+        public void onClick(DialogInterface dialog, int which) {
+            final Activity activity = getActivity();
+            if (activity == null) return;
+            final AlertDialog alertDialog = (AlertDialog)dialog;
+            if (mPhoneList.size() > which && which >= 0) {
+                final PhoneItem phoneItem = mPhoneList.get(which);
+                final CheckBox checkBox = (CheckBox)alertDialog.findViewById(R.id.setPrimary);
+                if (checkBox.isChecked()) {
+                    // Request to mark the data as primary in the background.
+                    final Intent serviceIntent = ContactUpdateService.createSetSuperPrimaryIntent(
+                            activity, phoneItem.id);
+                    activity.startService(serviceIntent);
+                }
+
+                PhoneNumberInteraction.performAction(activity, phoneItem.phoneNumber,
+                        mInteractionType, mIsVideoCall, mCallInitiationType);
+            } else {
+                dialog.dismiss();
+            }
+        }
+    }
+
+    private static final String[] PHONE_NUMBER_PROJECTION = new String[] {
+            Phone._ID,                      // 0
+            Phone.NUMBER,                   // 1
+            Phone.IS_SUPER_PRIMARY,         // 2
+            RawContacts.ACCOUNT_TYPE,       // 3
+            RawContacts.DATA_SET,           // 4
+            Phone.TYPE,                     // 5
+            Phone.LABEL,                    // 6
+            Phone.MIMETYPE,                 // 7
+            Phone.CONTACT_ID                // 8
+    };
+
+    private static final int _ID = 0;
+    private static final int NUMBER = 1;
+    private static final int IS_SUPER_PRIMARY = 2;
+    private static final int ACCOUNT_TYPE = 3;
+    private static final int DATA_SET = 4;
+    private static final int TYPE = 5;
+    private static final int LABEL = 6;
+    private static final int MIMETYPE = 7;
+    private static final int CONTACT_ID = 8;
+
+    private static final String PHONE_NUMBER_SELECTION =
+            Data.MIMETYPE + " IN ('"
+                + Phone.CONTENT_ITEM_TYPE + "', "
+                + "'" + SipAddress.CONTENT_ITEM_TYPE + "') AND "
+                + Data.DATA1 + " NOT NULL";
+
+    private final Context mContext;
+    private final OnDismissListener mDismissListener;
+    private final int mInteractionType;
+
+    private final int mCallInitiationType;
+    private boolean mUseDefault;
+
+    private static final int UNKNOWN_CONTACT_ID = -1;
+    private long mContactId = UNKNOWN_CONTACT_ID;
+
+    private CursorLoader mLoader;
+    private boolean mIsVideoCall;
+
+    /**
+     * Constructs a new {@link PhoneNumberInteraction}. The constructor takes in a {@link Context}
+     * instead of a {@link TransactionSafeActivity} for testing purposes to verify the functionality
+     * of this class. However, all factory methods for creating {@link PhoneNumberInteraction}s
+     * require a {@link TransactionSafeActivity} (i.e. see {@link #startInteractionForPhoneCall}).
+     */
+    @VisibleForTesting
+    /* package */ PhoneNumberInteraction(Context context, int interactionType,
+            DialogInterface.OnDismissListener dismissListener) {
+        this(context, interactionType, dismissListener, false /*isVideoCall*/,
+                LogState.INITIATION_UNKNOWN);
+    }
+
+    private PhoneNumberInteraction(Context context, int interactionType,
+            DialogInterface.OnDismissListener dismissListener, boolean isVideoCall, 
+            int callInitiationType) {
+        mContext = context;
+        mInteractionType = interactionType;
+        mDismissListener = dismissListener;
+        mCallInitiationType = callInitiationType;
+        mIsVideoCall = isVideoCall;
+    }
+
+    private void performAction(String phoneNumber) {
+        PhoneNumberInteraction.performAction(mContext, phoneNumber, mInteractionType, mIsVideoCall,
+                mCallInitiationType);
+    }
+
+    private static void performAction(
+            Context context, String phoneNumber, int interactionType,
+            boolean isVideoCall, int callInitiationType) {
+        Intent intent;
+        switch (interactionType) {
+            case ContactDisplayUtils.INTERACTION_SMS:
+                intent = new Intent(
+                        Intent.ACTION_SENDTO, Uri.fromParts("sms", phoneNumber, null));
+                break;
+            default:
+                intent = new CallIntentBuilder(phoneNumber)
+                        .setCallInitiationType(callInitiationType)
+                        .setIsVideoCall(isVideoCall)
+                        .build();
+                break;
+        }
+        DialerUtils.startActivityWithErrorToast(context, intent);
+    }
+
+    /**
+     * Initiates the interaction. This may result in a phone call or sms message started
+     * or a disambiguation dialog to determine which phone number should be used. If there
+     * is a primary phone number, it will be automatically used and a disambiguation dialog
+     * will no be shown.
+     */
+    @VisibleForTesting
+    /* package */ void startInteraction(Uri uri) {
+        startInteraction(uri, true);
+    }
+
+    /**
+     * Initiates the interaction to result in either a phone call or sms message for a contact.
+     * @param uri Contact Uri
+     * @param useDefault Whether or not to use the primary(default) phone number. If true, the
+     * primary phone number will always be used by default if one is available. If false, a
+     * disambiguation dialog will be shown regardless of whether or not a primary phone number
+     * is available.
+     */
+    @VisibleForTesting
+    /* package */ void startInteraction(Uri uri, boolean useDefault) {
+        if (mLoader != null) {
+            mLoader.reset();
+        }
+        mUseDefault = useDefault;
+        final Uri queryUri;
+        final String inputUriAsString = uri.toString();
+        if (inputUriAsString.startsWith(Contacts.CONTENT_URI.toString())) {
+            if (!inputUriAsString.endsWith(Contacts.Data.CONTENT_DIRECTORY)) {
+                queryUri = Uri.withAppendedPath(uri, Contacts.Data.CONTENT_DIRECTORY);
+            } else {
+                queryUri = uri;
+            }
+        } else if (inputUriAsString.startsWith(Data.CONTENT_URI.toString())) {
+            queryUri = uri;
+        } else {
+            throw new UnsupportedOperationException(
+                    "Input Uri must be contact Uri or data Uri (input: \"" + uri + "\")");
+        }
+
+        mLoader = new CursorLoader(mContext,
+                queryUri,
+                PHONE_NUMBER_PROJECTION,
+                PHONE_NUMBER_SELECTION,
+                null,
+                null);
+        mLoader.registerListener(0, this);
+        mLoader.startLoading();
+    }
+
+    @Override
+    public void onLoadComplete(Loader<Cursor> loader, Cursor cursor) {
+        if (cursor == null) {
+            onDismiss();
+            return;
+        }
+        try {
+            ArrayList<PhoneItem> phoneList = new ArrayList<PhoneItem>();
+            String primaryPhone = null;
+            if (!isSafeToCommitTransactions()) {
+                onDismiss();
+                return;
+            }
+            while (cursor.moveToNext()) {
+                if (mContactId == UNKNOWN_CONTACT_ID) {
+                    mContactId = cursor.getLong(CONTACT_ID);
+                }
+
+                if (mUseDefault && cursor.getInt(IS_SUPER_PRIMARY) != 0) {
+                    // Found super primary, call it.
+                    primaryPhone = cursor.getString(NUMBER);
+                }
+
+                PhoneItem item = new PhoneItem();
+                item.id = cursor.getLong(_ID);
+                item.phoneNumber = cursor.getString(NUMBER);
+                item.accountType = cursor.getString(ACCOUNT_TYPE);
+                item.dataSet = cursor.getString(DATA_SET);
+                item.type = cursor.getInt(TYPE);
+                item.label = cursor.getString(LABEL);
+                item.mimeType = cursor.getString(MIMETYPE);
+
+                phoneList.add(item);
+            }
+
+            if (mUseDefault && primaryPhone != null) {
+                performAction(primaryPhone);
+                onDismiss();
+                return;
+            }
+
+            Collapser.collapseList(phoneList, mContext);
+            if (phoneList.size() == 0) {
+                onDismiss();
+            } else if (phoneList.size() == 1) {
+                PhoneItem item = phoneList.get(0);
+                onDismiss();
+                performAction(item.phoneNumber);
+            } else {
+                // There are multiple candidates. Let the user choose one.
+                showDisambiguationDialog(phoneList);
+            }
+        } finally {
+            cursor.close();
+        }
+    }
+
+    private boolean isSafeToCommitTransactions() {
+        return mContext instanceof TransactionSafeActivity ?
+                ((TransactionSafeActivity) mContext).isSafeToCommitTransactions() : true;
+    }
+
+    private void onDismiss() {
+        if (mDismissListener != null) {
+            mDismissListener.onDismiss(null);
+        }
+    }
+
+    /**
+     * @param activity that is calling this interaction. This must be of type
+     * {@link TransactionSafeActivity} because we need to check on the activity state after the
+     * phone numbers have been queried for.
+     * @param isVideoCall {@code true} if the call is a video call, {@code false} otherwise.
+     * @param callInitiationType Indicates the UI affordance that was used to initiate the call.
+     */
+    public static void startInteractionForPhoneCall(TransactionSafeActivity activity, Uri uri,
+            boolean isVideoCall, int callInitiationType) {
+        (new PhoneNumberInteraction(activity, ContactDisplayUtils.INTERACTION_CALL, null,
+                isVideoCall, callInitiationType)).startInteraction(uri, true);
+    }
+
+    /**
+     * Start text messaging (a.k.a SMS) action using given contact Uri. If there are multiple
+     * candidates for the phone call, dialog is automatically shown and the user is asked to choose
+     * one.
+     *
+     * @param activity that is calling this interaction. This must be of type
+     * {@link TransactionSafeActivity} because we need to check on the activity state after the
+     * phone numbers have been queried for.
+     * @param uri contact Uri (built from {@link Contacts#CONTENT_URI}) or data Uri
+     * (built from {@link Data#CONTENT_URI}). Contact Uri may show the disambiguation dialog while
+     * data Uri won't.
+     */
+    public static void startInteractionForTextMessage(TransactionSafeActivity activity, Uri uri) {
+        (new PhoneNumberInteraction(activity, ContactDisplayUtils.INTERACTION_SMS, null))
+                .startInteraction(uri, true);
+    }
+
+    @VisibleForTesting
+    /* package */ CursorLoader getLoader() {
+        return mLoader;
+    }
+
+    @VisibleForTesting
+    /* package */ void showDisambiguationDialog(ArrayList<PhoneItem> phoneList) {
+        final Activity activity = (Activity) mContext;
+        if (activity.isDestroyed()) {
+            // Check whether the activity is still running
+            return;
+        }
+        try {
+            PhoneDisambiguationDialogFragment.show(activity.getFragmentManager(),
+                    phoneList, mInteractionType, mIsVideoCall, mCallInitiationType);
+        } catch (IllegalStateException e) {
+            // ignore to be safe. Shouldn't happen because we checked the
+            // activity wasn't destroyed, but to be safe.
+        }
+    }
+}
diff --git a/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java b/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
new file mode 100644
index 0000000..172a4ef
--- /dev/null
+++ b/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2013 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.dialer.interactions;
+
+import static android.Manifest.permission.READ_CONTACTS;
+import static android.Manifest.permission.WRITE_CONTACTS;
+
+import android.content.BroadcastReceiver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.PhoneLookup;
+import android.provider.ContactsContract.PinnedPositions;
+import android.text.TextUtils;
+
+import com.android.contacts.common.util.PermissionsUtil;
+
+/**
+ * This broadcast receiver is used to listen to outgoing calls and undemote formerly demoted
+ * contacts if a phone call is made to a phone number belonging to that contact.
+ *
+ * NOTE This doesn't work for corp contacts.
+ */
+public class UndemoteOutgoingCallReceiver extends BroadcastReceiver {
+
+    private static final long NO_CONTACT_FOUND = -1;
+
+    @Override
+    public void onReceive(final Context context, Intent intent) {
+        if (!PermissionsUtil.hasPermission(context, READ_CONTACTS)
+            || !PermissionsUtil.hasPermission(context, WRITE_CONTACTS)) {
+            return;
+        }
+        if (intent != null && Intent.ACTION_NEW_OUTGOING_CALL.equals(intent.getAction())) {
+            final String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
+            if (TextUtils.isEmpty(number)) {
+                return;
+            }
+            new Thread() {
+                @Override
+                public void run() {
+                    final long id = getContactIdFromPhoneNumber(context, number);
+                    if (id != NO_CONTACT_FOUND) {
+                        undemoteContactWithId(context, id);
+                    }
+                }
+            }.start();
+        }
+    }
+
+    private void undemoteContactWithId(Context context, long id) {
+        // If the contact is not demoted, this will not do anything. Otherwise, it will
+        // restore it to an unpinned position. If it was a frequently called contact, it will
+        // show up once again show up on the favorites screen.
+        if (PermissionsUtil.hasPermission(context, WRITE_CONTACTS)) {
+            try {
+                PinnedPositions.undemote(context.getContentResolver(), id);
+            } catch (SecurityException e) {
+                // Just in case
+            }
+        }
+    }
+
+    private long getContactIdFromPhoneNumber(Context context, String number) {
+        if (!PermissionsUtil.hasPermission(context, READ_CONTACTS)) {
+            return NO_CONTACT_FOUND;
+        }
+        final Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
+                Uri.encode(number));
+        final Cursor cursor;
+        try {
+            cursor = context.getContentResolver().query(contactUri, new String[] {
+                    PhoneLookup._ID}, null, null, null);
+        } catch (SecurityException e) {
+            // Just in case
+            return NO_CONTACT_FOUND;
+        }
+        if (cursor == null) {
+            return NO_CONTACT_FOUND;
+        }
+        try {
+            if (cursor.moveToFirst()) {
+                final long id = cursor.getLong(0);
+                return id;
+            } else {
+                return NO_CONTACT_FOUND;
+            }
+        } finally {
+            cursor.close();
+        }
+    }
+}
diff --git a/src/com/android/dialer/list/AllContactsFragment.java b/src/com/android/dialer/list/AllContactsFragment.java
new file mode 100644
index 0000000..7e76279
--- /dev/null
+++ b/src/com/android/dialer/list/AllContactsFragment.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import static android.Manifest.permission.READ_CONTACTS;
+
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.Loader;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.QuickContact;
+import android.support.v13.app.FragmentCompat;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactEntryListFragment;
+import com.android.contacts.common.list.ContactListFilter;
+import com.android.contacts.common.list.DefaultContactListAdapter;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.common.util.ViewUtil;
+import com.android.dialer.R;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.IntentUtil;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+
+/**
+ * Fragments to show all contacts with phone numbers.
+ */
+public class AllContactsFragment extends ContactEntryListFragment<ContactEntryListAdapter>
+        implements OnEmptyViewActionButtonClickedListener,
+        FragmentCompat.OnRequestPermissionsResultCallback {
+
+    private static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
+
+    private EmptyContentView mEmptyListView;
+
+    /**
+     * Listen to broadcast events about permissions in order to be notified if the READ_CONTACTS
+     * permission is granted via the UI in another fragment.
+     */
+    private BroadcastReceiver mReadContactsPermissionGrantedReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            reloadData();
+        }
+    };
+
+    public AllContactsFragment() {
+        setQuickContactEnabled(false);
+        setAdjustSelectionBoundsEnabled(true);
+        setPhotoLoaderEnabled(true);
+        setSectionHeaderDisplayEnabled(true);
+        setDarkTheme(false);
+        setVisibleScrollbarEnabled(true);
+    }
+
+    @Override
+    public void onViewCreated(View view, android.os.Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        mEmptyListView = (EmptyContentView) view.findViewById(R.id.empty_list_view);
+        mEmptyListView.setImage(R.drawable.empty_contacts);
+        mEmptyListView.setDescription(R.string.all_contacts_empty);
+        mEmptyListView.setActionClickedListener(this);
+        getListView().setEmptyView(mEmptyListView);
+        mEmptyListView.setVisibility(View.GONE);
+
+        ViewUtil.addBottomPaddingToListViewForFab(getListView(), getResources());
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        PermissionsUtil.registerPermissionReceiver(getActivity(),
+                mReadContactsPermissionGrantedReceiver, READ_CONTACTS);
+    }
+
+    @Override
+    public void onStop() {
+        PermissionsUtil.unregisterPermissionReceiver(getActivity(),
+                mReadContactsPermissionGrantedReceiver);
+        super.onStop();
+    }
+
+    @Override
+    protected void startLoading() {
+        if (PermissionsUtil.hasPermission(getActivity(), READ_CONTACTS)) {
+            super.startLoading();
+            mEmptyListView.setDescription(R.string.all_contacts_empty);
+            mEmptyListView.setActionLabel(R.string.all_contacts_empty_add_contact_action);
+        } else {
+            mEmptyListView.setDescription(R.string.permission_no_contacts);
+            mEmptyListView.setActionLabel(R.string.permission_single_turn_on);
+            mEmptyListView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+        super.onLoadFinished(loader, data);
+
+        if (data == null || data.getCount() == 0) {
+            mEmptyListView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    protected ContactEntryListAdapter createListAdapter() {
+        final DefaultContactListAdapter adapter = new DefaultContactListAdapter(getActivity()) {
+            @Override
+            protected void bindView(View itemView, int partition, Cursor cursor, int position) {
+                super.bindView(itemView, partition, cursor, position);
+                itemView.setTag(this.getContactUri(partition, cursor));
+            }
+        };
+        adapter.setDisplayPhotos(true);
+        adapter.setFilter(ContactListFilter.createFilterWithType(
+                ContactListFilter.FILTER_TYPE_DEFAULT));
+        adapter.setSectionHeaderDisplayEnabled(isSectionHeaderDisplayEnabled());
+        return adapter;
+    }
+
+    @Override
+    protected View inflateView(LayoutInflater inflater, ViewGroup container) {
+        return inflater.inflate(R.layout.all_contacts_fragment, null);
+    }
+
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        final Uri uri = (Uri) view.getTag();
+        if (uri != null) {
+            if (CompatUtils.hasPrioritizedMimeType()) {
+                QuickContact.showQuickContact(getContext(), view, uri, null,
+                        Phone.CONTENT_ITEM_TYPE);
+            } else {
+                QuickContact.showQuickContact(getActivity(), view, uri, QuickContact.MODE_LARGE,
+                        null);
+            }
+        }
+    }
+
+    @Override
+    protected void onItemClick(int position, long id) {
+        // Do nothing. Implemented to satisfy ContactEntryListFragment.
+    }
+
+    @Override
+    public void onEmptyViewActionButtonClicked() {
+        final Activity activity = getActivity();
+        if (activity == null) {
+            return;
+        }
+
+        if (!PermissionsUtil.hasPermission(activity, READ_CONTACTS)) {
+          FragmentCompat.requestPermissions(this, new String[] {READ_CONTACTS},
+              READ_CONTACTS_PERMISSION_REQUEST_CODE);
+        } else {
+            // Add new contact
+            DialerUtils.startActivityWithErrorToast(activity, IntentUtil.getNewContactIntent(),
+                    R.string.add_contact_not_available);
+        }
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String[] permissions,
+            int[] grantResults) {
+        if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
+            if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
+                // Force a refresh of the data since we were missing the permission before this.
+                reloadData();
+            }
+        }
+    }
+}
diff --git a/src/com/android/dialer/list/BlockedListSearchAdapter.java b/src/com/android/dialer/list/BlockedListSearchAdapter.java
new file mode 100644
index 0000000..1618826
--- /dev/null
+++ b/src/com/android/dialer/list/BlockedListSearchAdapter.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2015 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.dialer.list;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.graphics.Color;
+import android.view.View;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.list.ContactListItemView;
+import com.android.dialer.R;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+
+/**
+ * List adapter to display search results for adding a blocked number.
+ */
+public class BlockedListSearchAdapter extends RegularSearchListAdapter {
+
+    private Resources mResources;
+    private FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
+
+    public BlockedListSearchAdapter(Context context) {
+        super(context);
+        mResources = context.getResources();
+        disableAllShortcuts();
+        setShortcutEnabled(SHORTCUT_BLOCK_NUMBER, true);
+
+        mFilteredNumberAsyncQueryHandler =
+                new FilteredNumberAsyncQueryHandler(context.getContentResolver());
+    }
+
+    @Override
+    protected boolean isChanged(boolean showNumberShortcuts) {
+        return setShortcutEnabled(SHORTCUT_BLOCK_NUMBER, showNumberShortcuts || mIsQuerySipAddress);
+    }
+
+    public void setViewBlocked(ContactListItemView view, Integer id) {
+        view.setTag(R.id.block_id, id);
+        final int textColor = mResources.getColor(R.color.blocked_number_block_color);
+        view.getDataView().setTextColor(textColor);
+        view.getLabelView().setTextColor(textColor);
+        //TODO: Add icon
+    }
+
+    public void setViewUnblocked(ContactListItemView view) {
+        view.setTag(R.id.block_id, null);
+        final int textColor = mResources.getColor(R.color.dialtacts_secondary_text_color);
+        view.getDataView().setTextColor(textColor);
+        view.getLabelView().setTextColor(textColor);
+        //TODO: Remove icon
+    }
+
+    @Override
+    protected void bindView(View itemView, int partition, Cursor cursor, int position) {
+        super.bindView(itemView, partition, cursor, position);
+
+        final ContactListItemView view = (ContactListItemView) itemView;
+        // Reset view state to unblocked.
+        setViewUnblocked(view);
+
+        final String number = getPhoneNumber(position);
+        final String countryIso = GeoUtil.getCurrentCountryIso(mContext);
+        final FilteredNumberAsyncQueryHandler.OnCheckBlockedListener onCheckListener =
+                new FilteredNumberAsyncQueryHandler.OnCheckBlockedListener() {
+                    @Override
+                    public void onCheckComplete(Integer id) {
+                        if (id != null) {
+                            setViewBlocked(view, id);
+                        }
+                    }
+                };
+        mFilteredNumberAsyncQueryHandler.isBlockedNumber(
+                onCheckListener, number, countryIso);
+    }
+}
diff --git a/src/com/android/dialer/list/BlockedListSearchFragment.java b/src/com/android/dialer/list/BlockedListSearchFragment.java
new file mode 100644
index 0000000..da6b428
--- /dev/null
+++ b/src/com/android/dialer/list/BlockedListSearchFragment.java
@@ -0,0 +1,244 @@
+/*
+ * Copyright (C) 2015 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.dialer.list;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.telephony.PhoneNumberUtils;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
+import android.util.TypedValue;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.R;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
+import com.android.dialer.filterednumber.BlockNumberDialogFragment;
+import com.android.dialer.logging.InteractionEvent;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.widget.SearchEditTextLayout;
+
+public class BlockedListSearchFragment extends RegularSearchFragment
+        implements BlockNumberDialogFragment.Callback {
+    private static final String TAG = BlockedListSearchFragment.class.getSimpleName();
+
+    private static final String KEY_SEARCH_QUERY = "search_query";
+
+    private FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
+
+    private EditText mSearchView;
+
+    private final TextWatcher mPhoneSearchQueryTextListener = new TextWatcher() {
+        @Override
+        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
+
+        @Override
+        public void onTextChanged(CharSequence s, int start, int before, int count) {
+            setQueryString(s.toString(), false);
+        }
+
+        @Override
+        public void afterTextChanged(Editable s) {}
+    };
+
+    private final SearchEditTextLayout.Callback mSearchLayoutCallback =
+            new SearchEditTextLayout.Callback() {
+                @Override
+                public void onBackButtonClicked() {
+                    getActivity().onBackPressed();
+                }
+
+                @Override
+                public void onSearchViewClicked() {
+                }
+            };
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setShowEmptyListForNullQuery(true);
+        /*
+         * Pass in the empty string here so ContactEntryListFragment#setQueryString interprets it as
+         * an empty search query, rather than as an uninitalized value. In the latter case, the
+         * adapter returned by #createListAdapter is used, which populates the view with contacts.
+         * Passing in the empty string forces ContactEntryListFragment to interpret it as an empty
+         * query, which results in showing an empty view
+         */
+        setQueryString(getQueryString() == null ? "" : getQueryString(), false);
+        mFilteredNumberAsyncQueryHandler = new FilteredNumberAsyncQueryHandler(
+                getContext().getContentResolver());
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
+        actionBar.setCustomView(R.layout.search_edittext);
+        actionBar.setDisplayShowCustomEnabled(true);
+        actionBar.setDisplayHomeAsUpEnabled(false);
+        actionBar.setDisplayShowHomeEnabled(false);
+
+        final SearchEditTextLayout searchEditTextLayout = (SearchEditTextLayout) actionBar
+                .getCustomView().findViewById(R.id.search_view_container);
+        searchEditTextLayout.expand(false, true);
+        searchEditTextLayout.setCallback(mSearchLayoutCallback);
+        searchEditTextLayout.setBackgroundDrawable(null);
+
+        mSearchView = (EditText) searchEditTextLayout.findViewById(R.id.search_view);
+        mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener);
+        mSearchView.setHint(R.string.block_number_search_hint);
+
+        searchEditTextLayout.findViewById(R.id.search_box_expanded)
+                .setBackgroundColor(getContext().getResources().getColor(android.R.color.white));
+
+        if (!TextUtils.isEmpty(getQueryString())) {
+            mSearchView.setText(getQueryString());
+        }
+
+        // TODO: Don't set custom text size; use default search text size.
+        mSearchView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
+                getResources().getDimension(R.dimen.blocked_number_search_text_size));
+    }
+
+    @Override
+    protected ContactEntryListAdapter createListAdapter() {
+        BlockedListSearchAdapter adapter = new BlockedListSearchAdapter(getActivity());
+        adapter.setDisplayPhotos(true);
+        // Don't show SIP addresses.
+        adapter.setUseCallableUri(false);
+        // Keep in sync with the queryString set in #onCreate
+        adapter.setQueryString(getQueryString() == null ? "" : getQueryString());
+        return adapter;
+    }
+
+
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        super.onItemClick(parent, view, position, id);
+        final int adapterPosition = position - getListView().getHeaderViewsCount();
+        final BlockedListSearchAdapter adapter = (BlockedListSearchAdapter) getAdapter();
+        final int shortcutType = adapter.getShortcutTypeFromPosition(adapterPosition);
+        final Integer blockId = (Integer) view.getTag(R.id.block_id);
+        final String number;
+        switch (shortcutType) {
+            case DialerPhoneNumberListAdapter.SHORTCUT_INVALID:
+                // Handles click on a search result, either contact or nearby places result.
+                number = adapter.getPhoneNumber(adapterPosition);
+                blockContactNumber(number, blockId);
+                break;
+            case DialerPhoneNumberListAdapter.SHORTCUT_BLOCK_NUMBER:
+                // Handles click on 'Block number' shortcut to add the user query as a number.
+                number = adapter.getQueryString();
+                blockNumber(number);
+                break;
+            default:
+                Log.w(TAG, "Ignoring unsupported shortcut type: " + shortcutType);
+                break;
+        }
+    }
+
+    @Override
+    protected void onItemClick(int position, long id) {
+        // Prevent SearchFragment.onItemClicked from being called.
+    }
+
+    private void blockNumber(final String number) {
+        final String countryIso = GeoUtil.getCurrentCountryIso(getContext());
+        final OnCheckBlockedListener onCheckListener = new OnCheckBlockedListener() {
+            @Override
+            public void onCheckComplete(Integer id) {
+                if (id == null) {
+                    BlockNumberDialogFragment.show(
+                            id,
+                            number,
+                            countryIso,
+                            PhoneNumberUtils.formatNumber(number, countryIso),
+                            R.id.blocked_numbers_activity_container,
+                            getFragmentManager(),
+                            BlockedListSearchFragment.this);
+                } else {
+                    Toast.makeText(getContext(),
+                            ContactDisplayUtils.getTtsSpannedPhoneNumber(getResources(),
+                                    R.string.alreadyBlocked, number),
+                            Toast.LENGTH_SHORT).show();
+                }
+            }
+        };
+        final boolean success = mFilteredNumberAsyncQueryHandler.isBlockedNumber(
+                onCheckListener, number, countryIso);
+        if (!success) {
+            Toast.makeText(getContext(),
+                    ContactDisplayUtils.getTtsSpannedPhoneNumber(
+                            getResources(), R.string.invalidNumber, number),
+                    Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    @Override
+    public void onFilterNumberSuccess() {
+        Logger.logInteraction(InteractionEvent.BLOCK_NUMBER_MANAGEMENT_SCREEN);
+        goBack();
+    }
+
+    @Override
+    public void onUnfilterNumberSuccess() {
+        Log.wtf(TAG, "Unblocked a number from the BlockedListSearchFragment");
+        goBack();
+    }
+
+    private void goBack() {
+        Activity activity = getActivity();
+        if (activity == null) {
+            return;
+        }
+        activity.onBackPressed();
+    }
+
+    @Override
+    public void onChangeFilteredNumberUndo() {
+        getAdapter().notifyDataSetChanged();
+    }
+
+    private void blockContactNumber(final String number, final Integer blockId) {
+        if (blockId != null) {
+            Toast.makeText(getContext(), ContactDisplayUtils.getTtsSpannedPhoneNumber(
+                            getResources(), R.string.alreadyBlocked, number),
+                    Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        BlockNumberDialogFragment.show(
+                blockId,
+                number,
+                GeoUtil.getCurrentCountryIso(getContext()),
+                number,
+                R.id.blocked_numbers_activity_container,
+                getFragmentManager(),
+                this);
+    }
+}
diff --git a/src/com/android/dialer/list/ContentChangedFilter.java b/src/com/android/dialer/list/ContentChangedFilter.java
new file mode 100644
index 0000000..e552aa3
--- /dev/null
+++ b/src/com/android/dialer/list/ContentChangedFilter.java
@@ -0,0 +1,40 @@
+package com.android.dialer.list;
+
+import android.view.View;
+import android.view.View.AccessibilityDelegate;
+import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityEvent;
+
+/**
+ * AccessibilityDelegate that will filter out TYPE_WINDOW_CONTENT_CHANGED
+ * Used to suppress "Showing items x of y" from firing of ListView whenever it's content changes.
+ * AccessibilityEvent can only be rejected at a view's parent once it is generated,
+ * use addToParent() to add this delegate to the parent.
+ */
+public class ContentChangedFilter extends AccessibilityDelegate {
+  //the view we don't want TYPE_WINDOW_CONTENT_CHANGED to fire.
+  private View mView;
+
+  /**
+   * Add this delegate to the parent of @param view to filter out TYPE_WINDOW_CONTENT_CHANGED
+   */
+  public static void addToParent(View view){
+    View parent = (View) view.getParent();
+    parent.setAccessibilityDelegate(new ContentChangedFilter(view));
+  }
+
+  private ContentChangedFilter(View view){
+    super();
+    mView = view;
+  }
+  @Override
+  public boolean onRequestSendAccessibilityEvent (ViewGroup host, View child, AccessibilityEvent event){
+    if(child == mView){
+      if(event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED){
+        return false;
+      }
+    }
+    return super.onRequestSendAccessibilityEvent(host,child,event);
+  }
+
+}
diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
new file mode 100644
index 0000000..7164de2
--- /dev/null
+++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
@@ -0,0 +1,220 @@
+package com.android.dialer.list;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.telephony.PhoneNumberUtils;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.list.ContactListItemView;
+import com.android.contacts.common.list.PhoneNumberListAdapter;
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.R;
+
+/**
+ * {@link PhoneNumberListAdapter} with the following added shortcuts, that are displayed as list
+ * items:
+ * 1) Directly calling the phone number query
+ * 2) Adding the phone number query to a contact
+ *
+ * These shortcuts can be enabled or disabled to toggle whether or not they show up in the
+ * list.
+ */
+public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter {
+
+    private String mFormattedQueryString;
+    private String mCountryIso;
+
+    public final static int SHORTCUT_INVALID = -1;
+    public final static int SHORTCUT_DIRECT_CALL = 0;
+    public final static int SHORTCUT_CREATE_NEW_CONTACT = 1;
+    public final static int SHORTCUT_ADD_TO_EXISTING_CONTACT = 2;
+    public final static int SHORTCUT_SEND_SMS_MESSAGE = 3;
+    public final static int SHORTCUT_MAKE_VIDEO_CALL = 4;
+    public final static int SHORTCUT_BLOCK_NUMBER = 5;
+
+    public final static int SHORTCUT_COUNT = 6;
+
+    private final boolean[] mShortcutEnabled = new boolean[SHORTCUT_COUNT];
+
+    private final BidiFormatter mBidiFormatter = BidiFormatter.getInstance();
+    private boolean mVideoCallingEnabled = false;
+
+    public DialerPhoneNumberListAdapter(Context context) {
+        super(context);
+
+        mCountryIso = GeoUtil.getCurrentCountryIso(context);
+        mVideoCallingEnabled = CallUtil.isVideoEnabled(context);
+    }
+
+    @Override
+    public int getCount() {
+        return super.getCount() + getShortcutCount();
+    }
+
+    /**
+     * @return The number of enabled shortcuts. Ranges from 0 to a maximum of SHORTCUT_COUNT
+     */
+    public int getShortcutCount() {
+        int count = 0;
+        for (int i = 0; i < mShortcutEnabled.length; i++) {
+            if (mShortcutEnabled[i]) count++;
+        }
+        return count;
+    }
+
+    public void disableAllShortcuts() {
+        for (int i = 0; i < mShortcutEnabled.length; i++) {
+            mShortcutEnabled[i] = false;
+        }
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        final int shortcut = getShortcutTypeFromPosition(position);
+        if (shortcut >= 0) {
+            // shortcutPos should always range from 1 to SHORTCUT_COUNT
+            return super.getViewTypeCount() + shortcut;
+        } else {
+            return super.getItemViewType(position);
+        }
+    }
+
+    @Override
+    public int getViewTypeCount() {
+        // Number of item view types in the super implementation + 2 for the 2 new shortcuts
+        return super.getViewTypeCount() + SHORTCUT_COUNT;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        final int shortcutType = getShortcutTypeFromPosition(position);
+        if (shortcutType >= 0) {
+            if (convertView != null) {
+                assignShortcutToView((ContactListItemView) convertView, shortcutType);
+                return convertView;
+            } else {
+                final ContactListItemView v = new ContactListItemView(getContext(), null,
+                        mVideoCallingEnabled);
+                assignShortcutToView(v, shortcutType);
+                return v;
+            }
+        } else {
+            return super.getView(position, convertView, parent);
+        }
+    }
+
+    @Override
+    protected ContactListItemView newView(
+            Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
+        final ContactListItemView view = super.newView(context, partition, cursor, position,
+                parent);
+
+        view.setSupportVideoCallIcon(mVideoCallingEnabled);
+        return view;
+    }
+
+    /**
+     * @param position The position of the item
+     * @return The enabled shortcut type matching the given position if the item is a
+     * shortcut, -1 otherwise
+     */
+    public int getShortcutTypeFromPosition(int position) {
+        int shortcutCount = position - super.getCount();
+        if (shortcutCount >= 0) {
+            // Iterate through the array of shortcuts, looking only for shortcuts where
+            // mShortcutEnabled[i] is true
+            for (int i = 0; shortcutCount >= 0 && i < mShortcutEnabled.length; i++) {
+                if (mShortcutEnabled[i]) {
+                    shortcutCount--;
+                    if (shortcutCount < 0) return i;
+                }
+            }
+            throw new IllegalArgumentException("Invalid position - greater than cursor count "
+                    + " but not a shortcut.");
+        }
+        return SHORTCUT_INVALID;
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return getShortcutCount() == 0 && super.isEmpty();
+    }
+
+    @Override
+    public boolean isEnabled(int position) {
+        final int shortcutType = getShortcutTypeFromPosition(position);
+        if (shortcutType >= 0) {
+            return true;
+        } else {
+            return super.isEnabled(position);
+        }
+    }
+
+    private void assignShortcutToView(ContactListItemView v, int shortcutType) {
+        final CharSequence text;
+        final int drawableId;
+        final Resources resources = getContext().getResources();
+        final String number = getFormattedQueryString();
+        switch (shortcutType) {
+            case SHORTCUT_DIRECT_CALL:
+                text = ContactDisplayUtils.getTtsSpannedPhoneNumber(resources,
+                        R.string.search_shortcut_call_number,
+                        mBidiFormatter.unicodeWrap(number, TextDirectionHeuristics.LTR));
+                drawableId = R.drawable.ic_search_phone;
+                break;
+            case SHORTCUT_CREATE_NEW_CONTACT:
+                text = resources.getString(R.string.search_shortcut_create_new_contact);
+                drawableId = R.drawable.ic_search_add_contact;
+                break;
+            case SHORTCUT_ADD_TO_EXISTING_CONTACT:
+                text = resources.getString(R.string.search_shortcut_add_to_contact);
+                drawableId = R.drawable.ic_person_24dp;
+                break;
+            case SHORTCUT_SEND_SMS_MESSAGE:
+                text = resources.getString(R.string.search_shortcut_send_sms_message);
+                drawableId = R.drawable.ic_message_24dp;
+                break;
+            case SHORTCUT_MAKE_VIDEO_CALL:
+                text = resources.getString(R.string.search_shortcut_make_video_call);
+                drawableId = R.drawable.ic_videocam;
+                break;
+            case SHORTCUT_BLOCK_NUMBER:
+                text = resources.getString(R.string.search_shortcut_block_number);
+                drawableId = R.drawable.ic_not_interested_googblue_24dp;
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid shortcut type");
+        }
+        v.setDrawableResource(drawableId);
+        v.setDisplayName(text);
+        v.setPhotoPosition(super.getPhotoPosition());
+        v.setAdjustSelectionBoundsEnabled(false);
+    }
+
+    /**
+     * @return True if the shortcut state (disabled vs enabled) was changed by this operation
+     */
+    public boolean setShortcutEnabled(int shortcutType, boolean visible) {
+        final boolean changed = mShortcutEnabled[shortcutType] != visible;
+        mShortcutEnabled[shortcutType] = visible;
+        return changed;
+    }
+
+    public String getFormattedQueryString() {
+        return mFormattedQueryString;
+    }
+
+    @Override
+    public void setQueryString(String queryString) {
+        mFormattedQueryString = PhoneNumberUtils.formatNumber(
+                PhoneNumberUtils.normalizeNumber(queryString), mCountryIso);
+        super.setQueryString(queryString);
+    }
+}
diff --git a/src/com/android/dialer/list/DragDropController.java b/src/com/android/dialer/list/DragDropController.java
new file mode 100644
index 0000000..8cd1046
--- /dev/null
+++ b/src/com/android/dialer/list/DragDropController.java
@@ -0,0 +1,83 @@
+package com.android.dialer.list;
+
+import android.util.Log;
+import android.view.View;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class that handles and combines drag events generated from multiple views, and then fires
+ * off events to any OnDragDropListeners that have registered for callbacks.
+ */
+public class DragDropController {
+
+    private final List<OnDragDropListener> mOnDragDropListeners =
+            new ArrayList<OnDragDropListener>();
+    private final DragItemContainer mDragItemContainer;
+    private final int[] mLocationOnScreen = new int[2];
+
+    /**
+     * Callback interface used to retrieve views based on the current touch coordinates of the
+     * drag event. The {@link DragItemContainer} houses the draggable views that this
+     * {@link DragDropController} controls.
+     */
+    public interface DragItemContainer {
+        public PhoneFavoriteSquareTileView getViewForLocation(int x, int y);
+    }
+
+    public DragDropController(DragItemContainer dragItemContainer) {
+        mDragItemContainer = dragItemContainer;
+    }
+
+    /**
+     * @return True if the drag is started, false if the drag is cancelled for some reason.
+     */
+    boolean handleDragStarted(int x, int y) {
+        final PhoneFavoriteSquareTileView tileView = mDragItemContainer.getViewForLocation(x, y);
+        if (tileView == null) {
+            return false;
+        }
+        for (int i = 0; i < mOnDragDropListeners.size(); i++) {
+            mOnDragDropListeners.get(i).onDragStarted(x, y, tileView);
+        }
+
+        return true;
+    }
+
+    public void handleDragHovered(View v, int x, int y) {
+        v.getLocationOnScreen(mLocationOnScreen);
+        final int screenX = x + mLocationOnScreen[0];
+        final int screenY = y + mLocationOnScreen[1];
+        final PhoneFavoriteSquareTileView view = mDragItemContainer.getViewForLocation(
+                screenX, screenY);
+        for (int i = 0; i < mOnDragDropListeners.size(); i++) {
+            mOnDragDropListeners.get(i).onDragHovered(screenX, screenY, view);
+        }
+    }
+
+    public void handleDragFinished(int x, int y, boolean isRemoveView) {
+        if (isRemoveView) {
+            for (int i = 0; i < mOnDragDropListeners.size(); i++) {
+                mOnDragDropListeners.get(i).onDroppedOnRemove();
+            }
+        }
+
+        for (int i = 0; i < mOnDragDropListeners.size(); i++) {
+            mOnDragDropListeners.get(i).onDragFinished(x, y);
+        }
+    }
+
+    public void addOnDragDropListener(OnDragDropListener listener) {
+        if (!mOnDragDropListeners.contains(listener)) {
+            mOnDragDropListeners.add(listener);
+        }
+    }
+
+    public void removeOnDragDropListener(OnDragDropListener listener) {
+        if (mOnDragDropListeners.contains(listener)) {
+            mOnDragDropListeners.remove(listener);
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
new file mode 100644
index 0000000..d5caa1a
--- /dev/null
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -0,0 +1,422 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.os.Trace;
+import android.preference.PreferenceManager;
+import android.provider.CallLog.Calls;
+import android.support.v13.app.FragmentPagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.support.v4.view.ViewPager.OnPageChangeListener;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.contacts.common.list.ViewPagerTabs;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.R;
+import com.android.dialer.calllog.CallLogFragment;
+import com.android.dialer.calllog.CallLogQueryHandler;
+import com.android.dialer.calllog.VisualVoicemailCallLogFragment;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.ScreenEvent;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.voicemail.VisualVoicemailEnabledChecker;
+import com.android.dialer.voicemail.VoicemailStatusHelper;
+import com.android.dialer.voicemail.VoicemailStatusHelperImpl;
+import com.android.dialer.widget.ActionBarController;
+
+import java.util.ArrayList;
+
+/**
+ * Fragment that is used as the main screen of the Dialer.
+ *
+ * Contains a ViewPager that contains various contact lists like the Speed Dial list and the
+ * All Contacts list. This will also eventually contain the logic that allows sliding the
+ * ViewPager containing the lists up above the search bar and pin it against the top of the
+ * screen.
+ */
+public class ListsFragment extends Fragment
+        implements ViewPager.OnPageChangeListener, CallLogQueryHandler.Listener {
+
+    private static final boolean DEBUG = DialtactsActivity.DEBUG;
+    private static final String TAG = "ListsFragment";
+
+    public static final int TAB_INDEX_SPEED_DIAL = 0;
+    public static final int TAB_INDEX_HISTORY = 1;
+    public static final int TAB_INDEX_ALL_CONTACTS = 2;
+    public static final int TAB_INDEX_VOICEMAIL = 3;
+
+    public static final int TAB_COUNT_DEFAULT = 3;
+    public static final int TAB_COUNT_WITH_VOICEMAIL = 4;
+
+    public interface HostInterface {
+        public ActionBarController getActionBarController();
+    }
+
+    private ActionBar mActionBar;
+    private ViewPager mViewPager;
+    private ViewPagerTabs mViewPagerTabs;
+    private ViewPagerAdapter mViewPagerAdapter;
+    private RemoveView mRemoveView;
+    private View mRemoveViewContent;
+
+    private SpeedDialFragment mSpeedDialFragment;
+    private CallLogFragment mHistoryFragment;
+    private AllContactsFragment mAllContactsFragment;
+    private CallLogFragment mVoicemailFragment;
+
+    private SharedPreferences mPrefs;
+    private boolean mHasActiveVoicemailProvider;
+    private boolean mHasFetchedVoicemailStatus;
+    private boolean mShowVoicemailTabAfterVoicemailStatusIsFetched;
+
+    private VoicemailStatusHelper mVoicemailStatusHelper;
+    private ArrayList<OnPageChangeListener> mOnPageChangeListeners =
+            new ArrayList<OnPageChangeListener>();
+
+    private String[] mTabTitles;
+    private int[] mTabIcons;
+
+    /**
+     * The position of the currently selected tab.
+     */
+    private int mTabIndex = TAB_INDEX_SPEED_DIAL;
+    private CallLogQueryHandler mCallLogQueryHandler;
+
+    public class ViewPagerAdapter extends FragmentPagerAdapter {
+        public ViewPagerAdapter(FragmentManager fm) {
+            super(fm);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return getRtlPosition(position);
+        }
+
+        @Override
+        public Fragment getItem(int position) {
+            switch (getRtlPosition(position)) {
+                case TAB_INDEX_SPEED_DIAL:
+                    mSpeedDialFragment = new SpeedDialFragment();
+                    return mSpeedDialFragment;
+                case TAB_INDEX_HISTORY:
+                    mHistoryFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
+                    return mHistoryFragment;
+                case TAB_INDEX_ALL_CONTACTS:
+                    mAllContactsFragment = new AllContactsFragment();
+                    return mAllContactsFragment;
+                case TAB_INDEX_VOICEMAIL:
+                    mVoicemailFragment = new VisualVoicemailCallLogFragment();
+                    return mVoicemailFragment;
+            }
+            throw new IllegalStateException("No fragment at position " + position);
+        }
+
+        @Override
+        public Object instantiateItem(ViewGroup container, int position) {
+            // On rotation the FragmentManager handles rotation. Therefore getItem() isn't called.
+            // Copy the fragments that the FragmentManager finds so that we can store them in
+            // instance variables for later.
+            final Fragment fragment =
+                    (Fragment) super.instantiateItem(container, position);
+            if (fragment instanceof SpeedDialFragment) {
+                mSpeedDialFragment = (SpeedDialFragment) fragment;
+            } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_HISTORY) {
+                mHistoryFragment = (CallLogFragment) fragment;
+            } else if (fragment instanceof AllContactsFragment) {
+                mAllContactsFragment = (AllContactsFragment) fragment;
+            } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_VOICEMAIL) {
+                mVoicemailFragment = (CallLogFragment) fragment;
+            }
+            return fragment;
+        }
+
+        @Override
+        public int getCount() {
+            return mHasActiveVoicemailProvider ? TAB_COUNT_WITH_VOICEMAIL : TAB_COUNT_DEFAULT;
+        }
+
+        @Override
+        public CharSequence getPageTitle(int position) {
+            return mTabTitles[position];
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        Trace.beginSection(TAG + " onCreate");
+        super.onCreate(savedInstanceState);
+
+        mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
+        mHasFetchedVoicemailStatus = false;
+
+        mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
+        mHasActiveVoicemailProvider = mPrefs.getBoolean(
+                VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, false);
+
+        Trace.endSection();
+    }
+
+    @Override
+    public void onResume() {
+        Trace.beginSection(TAG + " onResume");
+        super.onResume();
+
+        mActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
+        if (getUserVisibleHint()) {
+            sendScreenViewForCurrentPosition();
+        }
+
+        // Fetch voicemail status to determine if we should show the voicemail tab.
+        mCallLogQueryHandler =
+                new CallLogQueryHandler(getActivity(), getActivity().getContentResolver(), this);
+        mCallLogQueryHandler.fetchVoicemailStatus();
+        Trace.endSection();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        Trace.beginSection(TAG + " onCreateView");
+        Trace.beginSection(TAG + " inflate view");
+        final View parentView = inflater.inflate(R.layout.lists_fragment, container, false);
+        Trace.endSection();
+        Trace.beginSection(TAG + " setup views");
+        mViewPager = (ViewPager) parentView.findViewById(R.id.lists_pager);
+        mViewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());
+        mViewPager.setAdapter(mViewPagerAdapter);
+        mViewPager.setOffscreenPageLimit(TAB_COUNT_WITH_VOICEMAIL - 1);
+        mViewPager.setOnPageChangeListener(this);
+        showTab(TAB_INDEX_SPEED_DIAL);
+
+        mTabTitles = new String[TAB_COUNT_WITH_VOICEMAIL];
+        mTabTitles[TAB_INDEX_SPEED_DIAL] = getResources().getString(R.string.tab_speed_dial);
+        mTabTitles[TAB_INDEX_HISTORY] = getResources().getString(R.string.tab_history);
+        mTabTitles[TAB_INDEX_ALL_CONTACTS] = getResources().getString(R.string.tab_all_contacts);
+        mTabTitles[TAB_INDEX_VOICEMAIL] = getResources().getString(R.string.tab_voicemail);
+
+        mTabIcons = new int[TAB_COUNT_WITH_VOICEMAIL];
+        mTabIcons[TAB_INDEX_SPEED_DIAL] = R.drawable.ic_grade_24dp;
+        mTabIcons[TAB_INDEX_HISTORY] = R.drawable.ic_schedule_24dp;
+        mTabIcons[TAB_INDEX_ALL_CONTACTS] = R.drawable.ic_people_24dp;
+        mTabIcons[TAB_INDEX_VOICEMAIL] = R.drawable.ic_voicemail_24dp;
+
+        mViewPagerTabs = (ViewPagerTabs) parentView.findViewById(R.id.lists_pager_header);
+        mViewPagerTabs.configureTabIcons(mTabIcons);
+        mViewPagerTabs.setViewPager(mViewPager);
+        addOnPageChangeListener(mViewPagerTabs);
+
+        mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view);
+        mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
+
+        Trace.endSection();
+        Trace.endSection();
+        return parentView;
+    }
+
+    public void addOnPageChangeListener(OnPageChangeListener onPageChangeListener) {
+        if (!mOnPageChangeListeners.contains(onPageChangeListener)) {
+            mOnPageChangeListeners.add(onPageChangeListener);
+        }
+    }
+
+    /**
+     * Shows the tab with the specified index. If the voicemail tab index is specified, but the
+     * voicemail status hasn't been fetched, it will try to show the tab after the voicemail status
+     * has been fetched.
+     */
+    public void showTab(int index) {
+        if (index == TAB_INDEX_VOICEMAIL) {
+            if (mHasActiveVoicemailProvider) {
+                mViewPager.setCurrentItem(getRtlPosition(TAB_INDEX_VOICEMAIL));
+            } else if (!mHasFetchedVoicemailStatus) {
+                // Try to show the voicemail tab after the voicemail status returns.
+                mShowVoicemailTabAfterVoicemailStatusIsFetched = true;
+            }
+        } else if (index < getTabCount()){
+            mViewPager.setCurrentItem(getRtlPosition(index));
+        }
+    }
+
+    @Override
+    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+        mTabIndex = getRtlPosition(position);
+
+        final int count = mOnPageChangeListeners.size();
+        for (int i = 0; i < count; i++) {
+            mOnPageChangeListeners.get(i).onPageScrolled(position, positionOffset,
+                    positionOffsetPixels);
+        }
+    }
+
+    @Override
+    public void onPageSelected(int position) {
+        mTabIndex = getRtlPosition(position);
+
+        // Show the tab which has been selected instead.
+        mShowVoicemailTabAfterVoicemailStatusIsFetched = false;
+
+        final int count = mOnPageChangeListeners.size();
+        for (int i = 0; i < count; i++) {
+            mOnPageChangeListeners.get(i).onPageSelected(position);
+        }
+        sendScreenViewForCurrentPosition();
+    }
+
+    @Override
+    public void onPageScrollStateChanged(int state) {
+        final int count = mOnPageChangeListeners.size();
+        for (int i = 0; i < count; i++) {
+            mOnPageChangeListeners.get(i).onPageScrollStateChanged(state);
+        }
+    }
+
+    @Override
+    public void onVoicemailStatusFetched(Cursor statusCursor) {
+        mHasFetchedVoicemailStatus = true;
+
+        if (getActivity() == null || getActivity().isFinishing()) {
+            return;
+        }
+
+        // Update mHasActiveVoicemailProvider, which controls the number of tabs displayed.
+        boolean hasActiveVoicemailProvider =
+                mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) > 0;
+        if (hasActiveVoicemailProvider != mHasActiveVoicemailProvider) {
+            mHasActiveVoicemailProvider = hasActiveVoicemailProvider;
+            mViewPagerAdapter.notifyDataSetChanged();
+
+            if (hasActiveVoicemailProvider) {
+                mViewPagerTabs.updateTab(TAB_INDEX_VOICEMAIL);
+            } else {
+                mViewPagerTabs.removeTab(TAB_INDEX_VOICEMAIL);
+            }
+
+            mPrefs.edit()
+                  .putBoolean(VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER,
+                          hasActiveVoicemailProvider)
+                  .commit();
+        }
+
+        if (hasActiveVoicemailProvider) {
+            mCallLogQueryHandler.fetchVoicemailUnreadCount();
+        }
+
+        if (mHasActiveVoicemailProvider && mShowVoicemailTabAfterVoicemailStatusIsFetched) {
+            mShowVoicemailTabAfterVoicemailStatusIsFetched = false;
+            showTab(TAB_INDEX_VOICEMAIL);
+        }
+    }
+
+    @Override
+    public void onVoicemailUnreadCountFetched(Cursor cursor) {
+        if (getActivity() == null || getActivity().isFinishing() || cursor == null) {
+            return;
+        }
+
+        int count = 0;
+        try {
+            count = cursor.getCount();
+        } finally {
+            cursor.close();
+        }
+
+        mViewPagerTabs.setUnreadCount(count, TAB_INDEX_VOICEMAIL);
+        mViewPagerTabs.updateTab(TAB_INDEX_VOICEMAIL);
+    }
+
+    @Override
+    public boolean onCallsFetched(Cursor statusCursor) {
+        // Return false; did not take ownership of cursor
+        return false;
+    }
+
+    public int getCurrentTabIndex() {
+        return mTabIndex;
+    }
+
+    /**
+     * External method to update unread count because the unread count changes when the user
+     * expands a voicemail in the call log.
+     */
+    public void updateTabUnreadCounts() {
+        if (mHasActiveVoicemailProvider && mCallLogQueryHandler != null) {
+            mCallLogQueryHandler.fetchVoicemailUnreadCount();
+        }
+    }
+
+    public void showRemoveView(boolean show) {
+        mRemoveViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
+        mRemoveView.setAlpha(show ? 0 : 1);
+        mRemoveView.animate().alpha(show ? 1 : 0).start();
+    }
+
+    public boolean shouldShowActionBar() {
+        // TODO: Update this based on scroll state.
+        return mActionBar != null;
+    }
+
+    public SpeedDialFragment getSpeedDialFragment() {
+        return mSpeedDialFragment;
+    }
+
+    public RemoveView getRemoveView() {
+        return mRemoveView;
+    }
+
+    public int getTabCount() {
+        return mViewPagerAdapter.getCount();
+    }
+
+    private int getRtlPosition(int position) {
+        if (DialerUtils.isRtl()) {
+            return mViewPagerAdapter.getCount() - 1 - position;
+        }
+        return position;
+    }
+
+    public void sendScreenViewForCurrentPosition() {
+        if (!isResumed()) {
+            return;
+        }
+
+        int screenType;
+        switch (getCurrentTabIndex()) {
+            case TAB_INDEX_SPEED_DIAL:
+                screenType = ScreenEvent.SPEED_DIAL;
+                break;
+            case TAB_INDEX_HISTORY:
+                screenType = ScreenEvent.CALL_LOG;
+                break;
+            case TAB_INDEX_ALL_CONTACTS:
+                screenType = ScreenEvent.ALL_CONTACTS;
+                break;
+            case TAB_INDEX_VOICEMAIL:
+                screenType = ScreenEvent.VOICEMAIL_LOG;
+            default:
+                return;
+        }
+        Logger.logScreenView(screenType, getActivity());
+    }
+}
diff --git a/src/com/android/dialer/list/OnDragDropListener.java b/src/com/android/dialer/list/OnDragDropListener.java
new file mode 100644
index 0000000..c9ef50b
--- /dev/null
+++ b/src/com/android/dialer/list/OnDragDropListener.java
@@ -0,0 +1,41 @@
+package com.android.dialer.list;
+
+
+/**
+ * Classes that want to receive callbacks in response to drag events should implement this
+ * interface.
+ */
+public interface OnDragDropListener {
+    /**
+     * Called when a drag is started.
+     * @param x X-coordinate of the drag event
+     * @param y Y-coordinate of the drag event
+     * @param view The contact tile which the drag was started on
+     */
+    public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view);
+
+    /**
+     * Called when a drag is in progress and the user moves the dragged contact to a
+     * location.
+     *
+     * @param x X-coordinate of the drag event
+     * @param y Y-coordinate of the drag event
+     * @param view Contact tile in the ListView which is currently being displaced
+     * by the dragged contact
+     */
+    public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view);
+
+    /**
+     * Called when a drag is completed (whether by dropping it somewhere or simply by dragging
+     * the contact off the screen)
+     * @param x X-coordinate of the drag event
+     * @param y Y-coordinate of the drag event
+     */
+    public void onDragFinished(int x, int y);
+
+    /**
+     * Called when a contact has been dropped on the remove view, indicating that the user
+     * wants to remove this contact.
+     */
+    public void onDroppedOnRemove();
+}
\ No newline at end of file
diff --git a/src/com/android/dialer/list/OnListFragmentScrolledListener.java b/src/com/android/dialer/list/OnListFragmentScrolledListener.java
new file mode 100644
index 0000000..5ed3a64
--- /dev/null
+++ b/src/com/android/dialer/list/OnListFragmentScrolledListener.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2013 Google Inc.
+ * Licensed to 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.dialer.list;
+
+/*
+ * Interface to provide callback to activity when a child fragment is scrolled
+ */
+public interface OnListFragmentScrolledListener {
+    public void onListFragmentScrollStateChange(int scrollState);
+    public void onListFragmentScroll(int firstVisibleItem, int visibleItemCount,
+            int totalItemCount);
+}
diff --git a/src/com/android/dialer/list/PhoneFavoriteListView.java b/src/com/android/dialer/list/PhoneFavoriteListView.java
new file mode 100644
index 0000000..ec31bd3
--- /dev/null
+++ b/src/com/android/dialer/list/PhoneFavoriteListView.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2012 Google Inc.
+ * Licensed to 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.dialer.list;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.graphics.Bitmap;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.DragEvent;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.widget.GridView;
+import android.widget.ImageView;
+
+import com.android.dialer.R;
+import com.android.dialer.list.DragDropController.DragItemContainer;
+
+/**
+ * Viewgroup that presents the user's speed dial contacts in a grid.
+ */
+public class PhoneFavoriteListView extends GridView implements OnDragDropListener,
+        DragItemContainer {
+
+    public static final String LOG_TAG = PhoneFavoriteListView.class.getSimpleName();
+
+    private float mTouchSlop;
+
+    private int mTopScrollBound;
+    private int mBottomScrollBound;
+    private int mLastDragY;
+
+    private Handler mScrollHandler;
+    private final long SCROLL_HANDLER_DELAY_MILLIS = 5;
+    private final int DRAG_SCROLL_PX_UNIT = 25;
+
+    private boolean mIsDragScrollerRunning = false;
+    private int mTouchDownForDragStartX;
+    private int mTouchDownForDragStartY;
+
+    private Bitmap mDragShadowBitmap;
+    private ImageView mDragShadowOverlay;
+    private View mDragShadowParent;
+    private int mAnimationDuration;
+
+    final int[] mLocationOnScreen = new int[2];
+
+    // X and Y offsets inside the item from where the user grabbed to the
+    // child's left coordinate. This is used to aid in the drawing of the drag shadow.
+    private int mTouchOffsetToChildLeft;
+    private int mTouchOffsetToChildTop;
+
+    private int mDragShadowLeft;
+    private int mDragShadowTop;
+
+    private DragDropController mDragDropController = new DragDropController(this);
+
+    private final float DRAG_SHADOW_ALPHA = 0.7f;
+
+    /**
+     * {@link #mTopScrollBound} and {@link mBottomScrollBound} will be
+     * offseted to the top / bottom by {@link #getHeight} * {@link #BOUND_GAP_RATIO} pixels.
+     */
+    private final float BOUND_GAP_RATIO = 0.2f;
+
+    private final Runnable mDragScroller = new Runnable() {
+        @Override
+        public void run() {
+            if (mLastDragY <= mTopScrollBound) {
+                smoothScrollBy(-DRAG_SCROLL_PX_UNIT, (int) SCROLL_HANDLER_DELAY_MILLIS);
+            } else if (mLastDragY >= mBottomScrollBound) {
+                smoothScrollBy(DRAG_SCROLL_PX_UNIT, (int) SCROLL_HANDLER_DELAY_MILLIS);
+            }
+            mScrollHandler.postDelayed(this, SCROLL_HANDLER_DELAY_MILLIS);
+        }
+    };
+
+    private final AnimatorListenerAdapter mDragShadowOverAnimatorListener =
+            new AnimatorListenerAdapter() {
+        @Override
+        public void onAnimationEnd(Animator animation) {
+            if (mDragShadowBitmap != null) {
+                mDragShadowBitmap.recycle();
+                mDragShadowBitmap = null;
+            }
+            mDragShadowOverlay.setVisibility(GONE);
+            mDragShadowOverlay.setImageBitmap(null);
+        }
+    };
+
+    public PhoneFavoriteListView(Context context) {
+        this(context, null);
+    }
+
+    public PhoneFavoriteListView(Context context, AttributeSet attrs) {
+        this(context, attrs, -1);
+    }
+
+    public PhoneFavoriteListView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        mAnimationDuration = context.getResources().getInteger(R.integer.fade_duration);
+        mTouchSlop = ViewConfiguration.get(context).getScaledPagingTouchSlop();
+        mDragDropController.addOnDragDropListener(this);
+    }
+
+    @Override
+    protected void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        mTouchSlop = ViewConfiguration.get(getContext()).getScaledPagingTouchSlop();
+    }
+
+    /**
+     * TODO: This is all swipe to remove code (nothing to do with drag to remove). This should
+     * be cleaned up and removed once drag to remove becomes the only way to remove contacts.
+     */
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            mTouchDownForDragStartX = (int) ev.getX();
+            mTouchDownForDragStartY = (int) ev.getY();
+        }
+
+        return super.onInterceptTouchEvent(ev);
+    }
+
+    @Override
+    public boolean onDragEvent(DragEvent event) {
+        final int action = event.getAction();
+        final int eX = (int) event.getX();
+        final int eY = (int) event.getY();
+        switch (action) {
+            case DragEvent.ACTION_DRAG_STARTED: {
+                if (!PhoneFavoriteTileView.DRAG_PHONE_FAVORITE_TILE.equals(event.getLocalState())) {
+                    // Ignore any drag events that were not propagated by long pressing
+                    // on a {@link PhoneFavoriteTileView}
+                    return false;
+                }
+                if (!mDragDropController.handleDragStarted(eX, eY)) {
+                    return false;
+                }
+                break;
+            }
+            case DragEvent.ACTION_DRAG_LOCATION:
+                mLastDragY = eY;
+                mDragDropController.handleDragHovered(this, eX, eY);
+                // Kick off {@link #mScrollHandler} if it's not started yet.
+                if (!mIsDragScrollerRunning &&
+                        // And if the distance traveled while dragging exceeds the touch slop
+                        (Math.abs(mLastDragY - mTouchDownForDragStartY) >= 4 * mTouchSlop)) {
+                    mIsDragScrollerRunning = true;
+                    ensureScrollHandler();
+                    mScrollHandler.postDelayed(mDragScroller, SCROLL_HANDLER_DELAY_MILLIS);
+                }
+                break;
+            case DragEvent.ACTION_DRAG_ENTERED:
+                final int boundGap = (int) (getHeight() * BOUND_GAP_RATIO);
+                mTopScrollBound = (getTop() + boundGap);
+                mBottomScrollBound = (getBottom() - boundGap);
+                break;
+            case DragEvent.ACTION_DRAG_EXITED:
+            case DragEvent.ACTION_DRAG_ENDED:
+            case DragEvent.ACTION_DROP:
+                ensureScrollHandler();
+                mScrollHandler.removeCallbacks(mDragScroller);
+                mIsDragScrollerRunning = false;
+                // Either a successful drop or it's ended with out drop.
+                if (action == DragEvent.ACTION_DROP || action == DragEvent.ACTION_DRAG_ENDED) {
+                    mDragDropController.handleDragFinished(eX, eY, false);
+                }
+                break;
+            default:
+                break;
+        }
+        // This ListView will consume the drag events on behalf of its children.
+        return true;
+    }
+
+    public void setDragShadowOverlay(ImageView overlay) {
+        mDragShadowOverlay = overlay;
+        mDragShadowParent = (View) mDragShadowOverlay.getParent();
+    }
+
+    /**
+     * Find the view under the pointer.
+     */
+    private View getViewAtPosition(int x, int y) {
+        final int count = getChildCount();
+        View child;
+        for (int childIdx = 0; childIdx < count; childIdx++) {
+            child = getChildAt(childIdx);
+            if (y >= child.getTop() && y <= child.getBottom() && x >= child.getLeft()
+                    && x <= child.getRight()) {
+                return child;
+            }
+        }
+        return null;
+    }
+
+    private void ensureScrollHandler() {
+        if (mScrollHandler == null) {
+            mScrollHandler = getHandler();
+        }
+    }
+
+    public DragDropController getDragDropController() {
+        return mDragDropController;
+    }
+
+    @Override
+    public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView tileView) {
+        if (mDragShadowOverlay == null) {
+            return;
+        }
+
+        mDragShadowOverlay.clearAnimation();
+        mDragShadowBitmap = createDraggedChildBitmap(tileView);
+        if (mDragShadowBitmap == null) {
+            return;
+        }
+
+        tileView.getLocationOnScreen(mLocationOnScreen);
+        mDragShadowLeft = mLocationOnScreen[0];
+        mDragShadowTop = mLocationOnScreen[1];
+
+        // x and y are the coordinates of the on-screen touch event. Using these
+        // and the on-screen location of the tileView, calculate the difference between
+        // the position of the user's finger and the position of the tileView. These will
+        // be used to offset the location of the drag shadow so that it appears that the
+        // tileView is positioned directly under the user's finger.
+        mTouchOffsetToChildLeft = x - mDragShadowLeft;
+        mTouchOffsetToChildTop = y - mDragShadowTop;
+
+        mDragShadowParent.getLocationOnScreen(mLocationOnScreen);
+        mDragShadowLeft -= mLocationOnScreen[0];
+        mDragShadowTop -= mLocationOnScreen[1];
+
+        mDragShadowOverlay.setImageBitmap(mDragShadowBitmap);
+        mDragShadowOverlay.setVisibility(VISIBLE);
+        mDragShadowOverlay.setAlpha(DRAG_SHADOW_ALPHA);
+
+        mDragShadowOverlay.setX(mDragShadowLeft);
+        mDragShadowOverlay.setY(mDragShadowTop);
+    }
+
+    @Override
+    public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView tileView) {
+        // Update the drag shadow location.
+        mDragShadowParent.getLocationOnScreen(mLocationOnScreen);
+        mDragShadowLeft = x - mTouchOffsetToChildLeft - mLocationOnScreen[0];
+        mDragShadowTop = y - mTouchOffsetToChildTop - mLocationOnScreen[1];
+        // Draw the drag shadow at its last known location if the drag shadow exists.
+        if (mDragShadowOverlay != null) {
+            mDragShadowOverlay.setX(mDragShadowLeft);
+            mDragShadowOverlay.setY(mDragShadowTop);
+        }
+    }
+
+    @Override
+    public void onDragFinished(int x, int y) {
+        if (mDragShadowOverlay != null) {
+            mDragShadowOverlay.clearAnimation();
+            mDragShadowOverlay.animate().alpha(0.0f)
+                    .setDuration(mAnimationDuration)
+                    .setListener(mDragShadowOverAnimatorListener)
+                    .start();
+        }
+    }
+
+    @Override
+    public void onDroppedOnRemove() {}
+
+    private Bitmap createDraggedChildBitmap(View view) {
+        view.setDrawingCacheEnabled(true);
+        final Bitmap cache = view.getDrawingCache();
+
+        Bitmap bitmap = null;
+        if (cache != null) {
+            try {
+                bitmap = cache.copy(Bitmap.Config.ARGB_8888, false);
+            } catch (final OutOfMemoryError e) {
+                Log.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e);
+                bitmap = null;
+            }
+        }
+
+        view.destroyDrawingCache();
+        view.setDrawingCacheEnabled(false);
+
+        return bitmap;
+    }
+
+    @Override
+    public PhoneFavoriteSquareTileView getViewForLocation(int x, int y) {
+        getLocationOnScreen(mLocationOnScreen);
+        // Calculate the X and Y coordinates of the drag event relative to the view
+        final int viewX = x - mLocationOnScreen[0];
+        final int viewY = y - mLocationOnScreen[1];
+        final View child = getViewAtPosition(viewX, viewY);
+
+        if (!(child instanceof PhoneFavoriteSquareTileView)) {
+            return null;
+        }
+
+        return (PhoneFavoriteSquareTileView) child;
+    }
+}
diff --git a/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java b/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
new file mode 100644
index 0000000..69a230c
--- /dev/null
+++ b/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
@@ -0,0 +1,112 @@
+/*
+
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.list;
+
+import android.content.Context;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.QuickContact;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.TextView;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.list.ContactEntry;
+import com.android.dialer.R;
+
+/**
+ * Displays the contact's picture overlaid with their name and number type in a tile.
+ */
+public class PhoneFavoriteSquareTileView extends PhoneFavoriteTileView {
+    private static final String TAG = PhoneFavoriteSquareTileView.class.getSimpleName();
+
+    private final float mHeightToWidthRatio;
+
+    private ImageButton mSecondaryButton;
+
+    private ContactEntry mContactEntry;
+
+    public PhoneFavoriteSquareTileView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        mHeightToWidthRatio = getResources().getFraction(
+                R.dimen.contact_tile_height_to_width_ratio, 1, 1);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        final TextView nameView = (TextView) findViewById(R.id.contact_tile_name);
+        nameView.setElegantTextHeight(false);
+        final TextView phoneTypeView = (TextView) findViewById(R.id.contact_tile_phone_type);
+        phoneTypeView.setElegantTextHeight(false);
+        mSecondaryButton = (ImageButton) findViewById(R.id.contact_tile_secondary_button);
+    }
+
+    @Override
+    protected int getApproximateImageSize() {
+        // The picture is the full size of the tile (minus some padding, but we can be generous)
+        return getWidth();
+    }
+
+    private void launchQuickContact() {
+        if (CompatUtils.hasPrioritizedMimeType()) {
+            QuickContact.showQuickContact(getContext(), PhoneFavoriteSquareTileView.this,
+                    getLookupUri(), null, Phone.CONTENT_ITEM_TYPE);
+        } else {
+            QuickContact.showQuickContact(getContext(), PhoneFavoriteSquareTileView.this,
+                    getLookupUri(), QuickContact.MODE_LARGE, null);
+        }
+    }
+
+    @Override
+    public void loadFromContact(ContactEntry entry) {
+        super.loadFromContact(entry);
+        if (entry != null) {
+            mSecondaryButton.setOnClickListener(new OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    launchQuickContact();
+                }
+            });
+        }
+        mContactEntry = entry;
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        final int width = MeasureSpec.getSize(widthMeasureSpec);
+        final int height = (int) (mHeightToWidthRatio * width);
+        final int count = getChildCount();
+        for (int i = 0; i < count; i++) {
+            getChildAt(i).measure(
+                    MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
+                    );
+        }
+        setMeasuredDimension(width, height);
+    }
+
+    @Override
+    protected String getNameForView(ContactEntry contactEntry) {
+        return contactEntry.getPreferredDisplayName();
+    }
+
+    public ContactEntry getContactEntry() {
+        return mContactEntry;
+    }
+}
diff --git a/src/com/android/dialer/list/PhoneFavoriteTileView.java b/src/com/android/dialer/list/PhoneFavoriteTileView.java
new file mode 100644
index 0000000..56d0b5d
--- /dev/null
+++ b/src/com/android/dialer/list/PhoneFavoriteTileView.java
@@ -0,0 +1,155 @@
+/*
+
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.list;
+
+import android.content.ClipData;
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageView;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.list.ContactEntry;
+import com.android.contacts.common.list.ContactTileView;
+import com.android.dialer.R;
+
+/**
+ * A light version of the {@link com.android.contacts.common.list.ContactTileView} that is used in
+ * Dialtacts for frequently called contacts. Slightly different behavior from superclass when you
+ * tap it, you want to call the frequently-called number for the contact, even if that is not the
+ * default number for that contact. This abstract class is the super class to both the row and tile
+ * view.
+ */
+public abstract class PhoneFavoriteTileView extends ContactTileView {
+
+    private static final String TAG = PhoneFavoriteTileView.class.getSimpleName();
+    private static final boolean DEBUG = false;
+
+    // These parameters instruct the photo manager to display the default image/letter at 70% of
+    // its normal size, and vertically offset upwards 12% towards the top of the letter tile, to
+    // make room for the contact name and number label at the bottom of the image.
+    private static final float DEFAULT_IMAGE_LETTER_OFFSET = -0.12f;
+    private static final float DEFAULT_IMAGE_LETTER_SCALE = 0.70f;
+
+    /** View that contains the transparent shadow that is overlaid on top of the contact image. */
+    private View mShadowOverlay;
+
+    /** Users' most frequent phone number. */
+    private String mPhoneNumberString;
+
+    // Dummy clip data object that is attached to drag shadows so that text views
+    // don't crash with an NPE if the drag shadow is released in their bounds
+    private static final ClipData EMPTY_CLIP_DATA = ClipData.newPlainText("", "");
+
+    // Constant to pass to the drag event so that the drag action only happens when a phone favorite
+    // tile is long pressed.
+    static final String DRAG_PHONE_FAVORITE_TILE = "PHONE_FAVORITE_TILE";
+
+    public PhoneFavoriteTileView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mShadowOverlay = findViewById(R.id.shadow_overlay);
+
+        setOnLongClickListener(new OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+                final PhoneFavoriteTileView view = (PhoneFavoriteTileView) v;
+                // NOTE The drag shadow is handled in the ListView.
+                view.startDrag(EMPTY_CLIP_DATA, new View.DragShadowBuilder(),
+                        DRAG_PHONE_FAVORITE_TILE, 0);
+                return true;
+            }
+        });
+    }
+
+    @Override
+    public void loadFromContact(ContactEntry entry) {
+        super.loadFromContact(entry);
+        // Set phone number to null in case we're reusing the view.
+        mPhoneNumberString = null;
+        if (entry != null) {
+            // Grab the phone-number to call directly. See {@link onClick()}.
+            mPhoneNumberString = entry.phoneNumber;
+
+            // If this is a blank entry, don't show anything.
+            // TODO krelease: Just hide the view for now. For this to truly look like an empty row
+            // the entire ContactTileRow needs to be hidden.
+            if (entry == ContactEntry.BLANK_ENTRY) {
+                setVisibility(View.INVISIBLE);
+            } else {
+                final ImageView starIcon = (ImageView) findViewById(R.id.contact_star_icon);
+                starIcon.setVisibility(entry.isFavorite ? View.VISIBLE : View.GONE);
+                setVisibility(View.VISIBLE);
+            }
+        }
+    }
+
+    @Override
+    protected boolean isDarkTheme() {
+        return false;
+    }
+
+    @Override
+    protected OnClickListener createClickListener() {
+        return new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mListener == null) {
+                    return;
+                }
+                if (TextUtils.isEmpty(mPhoneNumberString)) {
+                    // Copy "superclass" implementation
+                    mListener.onContactSelected(getLookupUri(), MoreContactUtils
+                            .getTargetRectFromView(PhoneFavoriteTileView.this));
+                } else {
+                    // When you tap a frequently-called contact, you want to
+                    // call them at the number that you usually talk to them
+                    // at (i.e. the one displayed in the UI), regardless of
+                    // whether that's their default number.
+                    mListener.onCallNumberDirectly(mPhoneNumberString);
+                }
+            }
+        };
+    }
+
+    @Override
+    protected DefaultImageRequest getDefaultImageRequest(String displayName, String lookupKey) {
+        return new DefaultImageRequest(displayName, lookupKey, ContactPhotoManager.TYPE_DEFAULT,
+                DEFAULT_IMAGE_LETTER_SCALE, DEFAULT_IMAGE_LETTER_OFFSET, false);
+    }
+
+    @Override
+    protected void configureViewForImage(boolean isDefaultImage) {
+        // Hide the shadow overlay if the image is a default image (i.e. colored letter tile)
+        if (mShadowOverlay != null) {
+            mShadowOverlay.setVisibility(isDefaultImage ? View.GONE : View.VISIBLE);
+        }
+    }
+
+    @Override
+    protected boolean isContactPhotoCircular() {
+        // Unlike Contacts' tiles, the Dialer's favorites tiles are square.
+        return false;
+    }
+}
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
new file mode 100644
index 0000000..77da7e9
--- /dev/null
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -0,0 +1,696 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ComparisonChain;
+import com.google.common.collect.Lists;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.OperationApplicationException;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.RemoteException;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.PinnedPositions;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.LongSparseArray;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactTileLoaderFactory;
+import com.android.contacts.common.list.ContactEntry;
+import com.android.contacts.common.list.ContactTileAdapter.DisplayType;
+import com.android.contacts.common.list.ContactTileView;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.dialer.R;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.PriorityQueue;
+
+/**
+ * Also allows for a configurable number of columns as well as a maximum row of tiled contacts.
+ */
+public class PhoneFavoritesTileAdapter extends BaseAdapter implements
+        OnDragDropListener {
+    private static final String TAG = PhoneFavoritesTileAdapter.class.getSimpleName();
+    private static final boolean DEBUG = false;
+
+    public static final int NO_ROW_LIMIT = -1;
+
+    public static final int ROW_LIMIT_DEFAULT = NO_ROW_LIMIT;
+
+    private ContactTileView.Listener mListener;
+    private OnDataSetChangedForAnimationListener mDataSetChangedListener;
+
+    private Context mContext;
+    private Resources mResources;
+    private ContactsPreferences mContactsPreferences;
+
+    /** Contact data stored in cache. This is used to populate the associated view. */
+    protected ArrayList<ContactEntry> mContactEntries = null;
+    /** Back up of the temporarily removed Contact during dragging. */
+    private ContactEntry mDraggedEntry = null;
+    /** Position of the temporarily removed contact in the cache. */
+    private int mDraggedEntryIndex = -1;
+    /** New position of the temporarily removed contact in the cache. */
+    private int mDropEntryIndex = -1;
+    /** New position of the temporarily entered contact in the cache. */
+    private int mDragEnteredEntryIndex = -1;
+
+    private boolean mAwaitingRemove = false;
+    private boolean mDelayCursorUpdates = false;
+
+    private ContactPhotoManager mPhotoManager;
+    protected int mNumFrequents;
+    protected int mNumStarred;
+
+    protected int mIdIndex;
+    protected int mLookupIndex;
+    protected int mPhotoUriIndex;
+    protected int mNamePrimaryIndex;
+    protected int mNameAlternativeIndex;
+    protected int mPresenceIndex;
+    protected int mStatusIndex;
+
+    private int mPhoneNumberIndex;
+    private int mPhoneNumberTypeIndex;
+    private int mPhoneNumberLabelIndex;
+    private int mIsDefaultNumberIndex;
+    private int mStarredIndex;
+    protected int mPinnedIndex;
+    protected int mContactIdIndex;
+
+    /** Indicates whether a drag is in process. */
+    private boolean mInDragging = false;
+
+    // Pinned positions start from 1, so there are a total of 20 maximum pinned contacts
+    public static final int PIN_LIMIT = 21;
+
+    /**
+     * The soft limit on how many contact tiles to show.
+     * NOTE This soft limit would not restrict the number of starred contacts to show, rather
+     * 1. If the count of starred contacts is less than this limit, show 20 tiles total.
+     * 2. If the count of starred contacts is more than or equal to this limit,
+     * show all starred tiles and no frequents.
+     */
+    private static final int TILES_SOFT_LIMIT = 20;
+
+    final Comparator<ContactEntry> mContactEntryComparator = new Comparator<ContactEntry>() {
+        @Override
+        public int compare(ContactEntry lhs, ContactEntry rhs) {
+            return ComparisonChain.start()
+                    .compare(lhs.pinned, rhs.pinned)
+                    .compare(getPreferredSortName(lhs), getPreferredSortName(rhs))
+                    .result();
+        }
+
+        private String getPreferredSortName(ContactEntry contactEntry) {
+            if (mContactsPreferences.getSortOrder() == ContactsPreferences.SORT_ORDER_PRIMARY
+                    || TextUtils.isEmpty(contactEntry.nameAlternative)) {
+                return contactEntry.namePrimary;
+            }
+            return contactEntry.nameAlternative;
+        }
+    };
+
+    public interface OnDataSetChangedForAnimationListener {
+        public void onDataSetChangedForAnimation(long... idsInPlace);
+        public void cacheOffsetsForDatasetChange();
+    };
+
+    public PhoneFavoritesTileAdapter(Context context, ContactTileView.Listener listener,
+            OnDataSetChangedForAnimationListener dataSetChangedListener) {
+        mDataSetChangedListener = dataSetChangedListener;
+        mListener = listener;
+        mContext = context;
+        mResources = context.getResources();
+        mContactsPreferences = new ContactsPreferences(mContext);
+        mNumFrequents = 0;
+        mContactEntries = new ArrayList<ContactEntry>();
+
+
+        bindColumnIndices();
+    }
+
+    public void setPhotoLoader(ContactPhotoManager photoLoader) {
+        mPhotoManager = photoLoader;
+    }
+
+    /**
+     * Indicates whether a drag is in process.
+     *
+     * @param inDragging Boolean variable indicating whether there is a drag in process.
+     */
+    public void setInDragging(boolean inDragging) {
+        mDelayCursorUpdates = inDragging;
+        mInDragging = inDragging;
+    }
+
+    /** Gets whether the drag is in process. */
+    public boolean getInDragging() {
+        return mInDragging;
+    }
+
+    /**
+     * Sets the column indices for expected {@link Cursor}
+     * based on {@link DisplayType}.
+     */
+    protected void bindColumnIndices() {
+        mIdIndex = ContactTileLoaderFactory.CONTACT_ID;
+        mNamePrimaryIndex = ContactTileLoaderFactory.DISPLAY_NAME;
+        mNameAlternativeIndex = ContactTileLoaderFactory.DISPLAY_NAME_ALTERNATIVE;
+        mStarredIndex = ContactTileLoaderFactory.STARRED;
+        mPhotoUriIndex = ContactTileLoaderFactory.PHOTO_URI;
+        mLookupIndex = ContactTileLoaderFactory.LOOKUP_KEY;
+        mPhoneNumberIndex = ContactTileLoaderFactory.PHONE_NUMBER;
+        mPhoneNumberTypeIndex = ContactTileLoaderFactory.PHONE_NUMBER_TYPE;
+        mPhoneNumberLabelIndex = ContactTileLoaderFactory.PHONE_NUMBER_LABEL;
+        mPinnedIndex = ContactTileLoaderFactory.PINNED;
+        mContactIdIndex = ContactTileLoaderFactory.CONTACT_ID_FOR_DATA;
+
+
+        mPresenceIndex = ContactTileLoaderFactory.CONTACT_PRESENCE;
+        mStatusIndex = ContactTileLoaderFactory.CONTACT_STATUS;
+        mIsDefaultNumberIndex = ContactTileLoaderFactory.IS_DEFAULT_NUMBER;
+    }
+
+    public void refreshContactsPreferences() {
+        mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
+        mContactsPreferences.refreshValue(ContactsPreferences.SORT_ORDER_KEY);
+    }
+
+    /**
+     * Gets the number of frequents from the passed in cursor.
+     *
+     * This methods is needed so the GroupMemberTileAdapter can override this.
+     *
+     * @param cursor The cursor to get number of frequents from.
+     */
+    protected void saveNumFrequentsFromCursor(Cursor cursor) {
+        mNumFrequents = cursor.getCount() - mNumStarred;
+    }
+
+    /**
+     * Creates {@link ContactTileView}s for each item in {@link Cursor}.
+     *
+     * Else use {@link ContactTileLoaderFactory}
+     */
+    public void setContactCursor(Cursor cursor) {
+        if (!mDelayCursorUpdates && cursor != null && !cursor.isClosed()) {
+            mNumStarred = getNumStarredContacts(cursor);
+            if (mAwaitingRemove) {
+                mDataSetChangedListener.cacheOffsetsForDatasetChange();
+            }
+
+            saveNumFrequentsFromCursor(cursor);
+            saveCursorToCache(cursor);
+            // cause a refresh of any views that rely on this data
+            notifyDataSetChanged();
+            // about to start redraw
+            mDataSetChangedListener.onDataSetChangedForAnimation();
+        }
+    }
+
+    /**
+     * Saves the cursor data to the cache, to speed up UI changes.
+     *
+     * @param cursor Returned cursor with data to populate the view.
+     */
+    private void saveCursorToCache(Cursor cursor) {
+        mContactEntries.clear();
+
+        cursor.moveToPosition(-1);
+
+        final LongSparseArray<Object> duplicates = new LongSparseArray<Object>(cursor.getCount());
+
+        // Track the length of {@link #mContactEntries} and compare to {@link #TILES_SOFT_LIMIT}.
+        int counter = 0;
+
+        while (cursor.moveToNext()) {
+
+            final int starred = cursor.getInt(mStarredIndex);
+            final long id;
+
+            // We display a maximum of TILES_SOFT_LIMIT contacts, or the total number of starred
+            // whichever is greater.
+            if (starred < 1 && counter >= TILES_SOFT_LIMIT) {
+                break;
+            } else {
+                id = cursor.getLong(mContactIdIndex);
+            }
+
+            final ContactEntry existing = (ContactEntry) duplicates.get(id);
+            if (existing != null) {
+                // Check if the existing number is a default number. If not, clear the phone number
+                // and label fields so that the disambiguation dialog will show up.
+                if (!existing.isDefaultNumber) {
+                    existing.phoneLabel = null;
+                    existing.phoneNumber = null;
+                }
+                continue;
+            }
+
+            final String photoUri = cursor.getString(mPhotoUriIndex);
+            final String lookupKey = cursor.getString(mLookupIndex);
+            final int pinned = cursor.getInt(mPinnedIndex);
+            final String name = cursor.getString(mNamePrimaryIndex);
+            final String nameAlternative = cursor.getString(mNameAlternativeIndex);
+            final boolean isStarred = cursor.getInt(mStarredIndex) > 0;
+            final boolean isDefaultNumber = cursor.getInt(mIsDefaultNumberIndex) > 0;
+
+            final ContactEntry contact = new ContactEntry();
+
+            contact.id = id;
+            contact.namePrimary = (!TextUtils.isEmpty(name)) ? name :
+                    mResources.getString(R.string.missing_name);
+            contact.nameAlternative = (!TextUtils.isEmpty(nameAlternative)) ? nameAlternative :
+                    mResources.getString(R.string.missing_name);
+            contact.nameDisplayOrder = mContactsPreferences.getDisplayOrder();
+            contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null);
+            contact.lookupKey = lookupKey;
+            contact.lookupUri = ContentUris.withAppendedId(
+                    Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), id);
+            contact.isFavorite = isStarred;
+            contact.isDefaultNumber = isDefaultNumber;
+
+            // Set phone number and label
+            final int phoneNumberType = cursor.getInt(mPhoneNumberTypeIndex);
+            final String phoneNumberCustomLabel = cursor.getString(mPhoneNumberLabelIndex);
+            contact.phoneLabel = (String) Phone.getTypeLabel(mResources, phoneNumberType,
+                    phoneNumberCustomLabel);
+            contact.phoneNumber = cursor.getString(mPhoneNumberIndex);
+
+            contact.pinned = pinned;
+            mContactEntries.add(contact);
+
+            duplicates.put(id, contact);
+
+            counter++;
+        }
+
+        mAwaitingRemove = false;
+
+        arrangeContactsByPinnedPosition(mContactEntries);
+
+        notifyDataSetChanged();
+    }
+
+    /**
+     * Iterates over the {@link Cursor}
+     * Returns position of the first NON Starred Contact
+     * Returns -1 if {@link DisplayType#STARRED_ONLY}
+     * Returns 0 if {@link DisplayType#FREQUENT_ONLY}
+     */
+    protected int getNumStarredContacts(Cursor cursor) {
+        cursor.moveToPosition(-1);
+        while (cursor.moveToNext()) {
+            if (cursor.getInt(mStarredIndex) == 0) {
+                return cursor.getPosition();
+            }
+        }
+
+        // There are not NON Starred contacts in cursor
+        // Set divider positon to end
+        return cursor.getCount();
+    }
+
+    /**
+     * Returns the number of frequents that will be displayed in the list.
+     */
+    public int getNumFrequents() {
+        return mNumFrequents;
+    }
+
+    @Override
+    public int getCount() {
+        if (mContactEntries == null) {
+            return 0;
+        }
+
+        return mContactEntries.size();
+    }
+
+    /**
+     * Returns an ArrayList of the {@link ContactEntry}s that are to appear
+     * on the row for the given position.
+     */
+    @Override
+    public ContactEntry getItem(int position) {
+        return mContactEntries.get(position);
+    }
+
+    /**
+     * For the top row of tiled contacts, the item id is the position of the row of
+     * contacts.
+     * For frequent contacts, the item id is the maximum number of rows of tiled contacts +
+     * the actual contact id. Since contact ids are always greater than 0, this guarantees that
+     * all items within this adapter will always have unique ids.
+     */
+    @Override
+    public long getItemId(int position) {
+        return getItem(position).id;
+    }
+
+    @Override
+    public boolean hasStableIds() {
+        return true;
+    }
+
+    @Override
+    public boolean areAllItemsEnabled() {
+        return true;
+    }
+
+    @Override
+    public boolean isEnabled(int position) {
+        return getCount() > 0;
+    }
+
+    @Override
+    public void notifyDataSetChanged() {
+        if (DEBUG) {
+            Log.v(TAG, "notifyDataSetChanged");
+        }
+        super.notifyDataSetChanged();
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (DEBUG) {
+            Log.v(TAG, "get view for " + String.valueOf(position));
+        }
+
+        int itemViewType = getItemViewType(position);
+
+        PhoneFavoriteTileView tileView = null;
+
+        if (convertView instanceof PhoneFavoriteTileView) {
+            tileView  = (PhoneFavoriteTileView) convertView;
+        }
+
+        if (tileView == null) {
+            tileView = (PhoneFavoriteTileView) View.inflate(mContext,
+                    R.layout.phone_favorite_tile_view, null);
+        }
+        tileView.setPhotoManager(mPhotoManager);
+        tileView.setListener(mListener);
+        tileView.loadFromContact(getItem(position));
+        return tileView;
+    }
+
+    @Override
+    public int getViewTypeCount() {
+        return ViewTypes.COUNT;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return ViewTypes.TILE;
+    }
+
+    /**
+     * Temporarily removes a contact from the list for UI refresh. Stores data for this contact
+     * in the back-up variable.
+     *
+     * @param index Position of the contact to be removed.
+     */
+    public void popContactEntry(int index) {
+        if (isIndexInBound(index)) {
+            mDraggedEntry = mContactEntries.get(index);
+            mDraggedEntryIndex = index;
+            mDragEnteredEntryIndex = index;
+            markDropArea(mDragEnteredEntryIndex);
+        }
+    }
+
+    /**
+     * @param itemIndex Position of the contact in {@link #mContactEntries}.
+     * @return True if the given index is valid for {@link #mContactEntries}.
+     */
+    public boolean isIndexInBound(int itemIndex) {
+        return itemIndex >= 0 && itemIndex < mContactEntries.size();
+    }
+
+    /**
+     * Mark the tile as drop area by given the item index in {@link #mContactEntries}.
+     *
+     * @param itemIndex Position of the contact in {@link #mContactEntries}.
+     */
+    private void markDropArea(int itemIndex) {
+        if (mDraggedEntry != null && isIndexInBound(mDragEnteredEntryIndex) &&
+                isIndexInBound(itemIndex)) {
+            mDataSetChangedListener.cacheOffsetsForDatasetChange();
+            // Remove the old placeholder item and place the new placeholder item.
+            final int oldIndex = mDragEnteredEntryIndex;
+            mContactEntries.remove(mDragEnteredEntryIndex);
+            mDragEnteredEntryIndex = itemIndex;
+            mContactEntries.add(mDragEnteredEntryIndex, ContactEntry.BLANK_ENTRY);
+            ContactEntry.BLANK_ENTRY.id = mDraggedEntry.id;
+            mDataSetChangedListener.onDataSetChangedForAnimation();
+            notifyDataSetChanged();
+        }
+    }
+
+    /**
+     * Drops the temporarily removed contact to the desired location in the list.
+     */
+    public void handleDrop() {
+        boolean changed = false;
+        if (mDraggedEntry != null) {
+            if (isIndexInBound(mDragEnteredEntryIndex) &&
+                    mDragEnteredEntryIndex != mDraggedEntryIndex) {
+                // Don't add the ContactEntry here (to prevent a double animation from occuring).
+                // When we receive a new cursor the list of contact entries will automatically be
+                // populated with the dragged ContactEntry at the correct spot.
+                mDropEntryIndex = mDragEnteredEntryIndex;
+                mContactEntries.set(mDropEntryIndex, mDraggedEntry);
+                mDataSetChangedListener.cacheOffsetsForDatasetChange();
+                changed = true;
+            } else if (isIndexInBound(mDraggedEntryIndex)) {
+                // If {@link #mDragEnteredEntryIndex} is invalid,
+                // falls back to the original position of the contact.
+                mContactEntries.remove(mDragEnteredEntryIndex);
+                mContactEntries.add(mDraggedEntryIndex, mDraggedEntry);
+                mDropEntryIndex = mDraggedEntryIndex;
+                notifyDataSetChanged();
+            }
+
+            if (changed && mDropEntryIndex < PIN_LIMIT) {
+                final ArrayList<ContentProviderOperation> operations =
+                        getReflowedPinningOperations(mContactEntries, mDraggedEntryIndex,
+                                mDropEntryIndex);
+                if (!operations.isEmpty()) {
+                    // update the database here with the new pinned positions
+                    try {
+                        mContext.getContentResolver().applyBatch(ContactsContract.AUTHORITY,
+                                operations);
+                    } catch (RemoteException | OperationApplicationException e) {
+                        Log.e(TAG, "Exception thrown when pinning contacts", e);
+                    }
+                }
+            }
+            mDraggedEntry = null;
+        }
+    }
+
+    /**
+     * Invoked when the dragged item is dropped to unsupported location. We will then move the
+     * contact back to where it was dragged from.
+     */
+    public void dropToUnsupportedView() {
+        if (isIndexInBound(mDragEnteredEntryIndex)) {
+            mContactEntries.remove(mDragEnteredEntryIndex);
+            mContactEntries.add(mDraggedEntryIndex, mDraggedEntry);
+            notifyDataSetChanged();
+        }
+    }
+
+    /**
+     * Clears all temporary variables at a new interaction.
+     */
+    public void cleanTempVariables() {
+        mDraggedEntryIndex = -1;
+        mDropEntryIndex = -1;
+        mDragEnteredEntryIndex = -1;
+        mDraggedEntry = null;
+    }
+
+    /**
+     * Used when a contact is removed from speeddial. This will both unstar and set pinned position
+     * of the contact to PinnedPosition.DEMOTED so that it doesn't show up anymore in the favorites
+     * list.
+     */
+    private void unstarAndUnpinContact(Uri contactUri) {
+        final ContentValues values = new ContentValues(2);
+        values.put(Contacts.STARRED, false);
+        values.put(Contacts.PINNED, PinnedPositions.DEMOTED);
+        mContext.getContentResolver().update(contactUri, values, null, null);
+    }
+
+    /**
+     * Given a list of contacts that each have pinned positions, rearrange the list (destructive)
+     * such that all pinned contacts are in their defined pinned positions, and unpinned contacts
+     * take the spaces between those pinned contacts. Demoted contacts should not appear in the
+     * resulting list.
+     *
+     * This method also updates the pinned positions of pinned contacts so that they are all
+     * unique positive integers within range from 0 to toArrange.size() - 1. This is because
+     * when the contact entries are read from the database, it is possible for them to have
+     * overlapping pin positions due to sync or modifications by third party apps.
+     */
+    @VisibleForTesting
+    /* package */ void arrangeContactsByPinnedPosition(ArrayList<ContactEntry> toArrange) {
+        final PriorityQueue<ContactEntry> pinnedQueue =
+                new PriorityQueue<ContactEntry>(PIN_LIMIT, mContactEntryComparator);
+
+        final List<ContactEntry> unpinnedContacts = new LinkedList<ContactEntry>();
+
+        final int length = toArrange.size();
+        for (int i = 0; i < length; i++) {
+            final ContactEntry contact = toArrange.get(i);
+            // Decide whether the contact is hidden(demoted), pinned, or unpinned
+            if (contact.pinned > PIN_LIMIT || contact.pinned == PinnedPositions.UNPINNED) {
+                unpinnedContacts.add(contact);
+            } else if (contact.pinned > PinnedPositions.DEMOTED) {
+                // Demoted or contacts with negative pinned positions are ignored.
+                // Pinned contacts go into a priority queue where they are ranked by pinned
+                // position. This is required because the contacts provider does not return
+                // contacts ordered by pinned position.
+                pinnedQueue.add(contact);
+            }
+        }
+
+        final int maxToPin = Math.min(PIN_LIMIT, pinnedQueue.size() + unpinnedContacts.size());
+
+        toArrange.clear();
+        for (int i = 1; i < maxToPin + 1; i++) {
+            if (!pinnedQueue.isEmpty() && pinnedQueue.peek().pinned <= i) {
+                final ContactEntry toPin = pinnedQueue.poll();
+                toPin.pinned = i;
+                toArrange.add(toPin);
+            } else if (!unpinnedContacts.isEmpty()) {
+                toArrange.add(unpinnedContacts.remove(0));
+            }
+        }
+
+        // If there are still contacts in pinnedContacts at this point, it means that the pinned
+        // positions of these pinned contacts exceed the actual number of contacts in the list.
+        // For example, the user had 10 frequents, starred and pinned one of them at the last spot,
+        // and then cleared frequents. Contacts in this situation should become unpinned.
+        while (!pinnedQueue.isEmpty()) {
+            final ContactEntry entry = pinnedQueue.poll();
+            entry.pinned = PinnedPositions.UNPINNED;
+            toArrange.add(entry);
+        }
+
+        // Any remaining unpinned contacts that weren't in the gaps between the pinned contacts
+        // now just get appended to the end of the list.
+        toArrange.addAll(unpinnedContacts);
+    }
+
+    /**
+     * Given an existing list of contact entries and a single entry that is to be pinned at a
+     * particular position, return a list of {@link ContentProviderOperation}s that contains new
+     * pinned positions for all contacts that are forced to be pinned at new positions, trying as
+     * much as possible to keep pinned contacts at their original location.
+     *
+     * At this point in time the pinned position of each contact in the list has already been
+     * updated by {@link #arrangeContactsByPinnedPosition}, so we can assume that all pinned
+     * positions(within {@link #PIN_LIMIT} are unique positive integers.
+     */
+    @VisibleForTesting
+    /* package */ ArrayList<ContentProviderOperation> getReflowedPinningOperations(
+            ArrayList<ContactEntry> list, int oldPos, int newPinPos) {
+        final ArrayList<ContentProviderOperation> positions = Lists.newArrayList();
+        final int lowerBound = Math.min(oldPos, newPinPos);
+        final int upperBound = Math.max(oldPos, newPinPos);
+        for (int i = lowerBound; i <= upperBound; i++) {
+            final ContactEntry entry = list.get(i);
+
+            // Pinned positions in the database start from 1 instead of being zero-indexed like
+            // arrays, so offset by 1.
+            final int databasePinnedPosition = i + 1;
+            if (entry.pinned == databasePinnedPosition) continue;
+
+            final Uri uri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(entry.id));
+            final ContentValues values = new ContentValues();
+            values.put(Contacts.PINNED, databasePinnedPosition);
+            positions.add(ContentProviderOperation.newUpdate(uri).withValues(values).build());
+        }
+        return positions;
+    }
+
+    protected static class ViewTypes {
+        public static final int TILE = 0;
+        public static final int COUNT = 1;
+    }
+
+    @Override
+    public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
+        setInDragging(true);
+        final int itemIndex = mContactEntries.indexOf(view.getContactEntry());
+        popContactEntry(itemIndex);
+    }
+
+    @Override
+    public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {
+        if (view == null) {
+            // The user is hovering over a view that is not a contact tile, no need to do
+            // anything here.
+            return;
+        }
+        final int itemIndex = mContactEntries.indexOf(view.getContactEntry());
+        if (mInDragging &&
+                mDragEnteredEntryIndex != itemIndex &&
+                isIndexInBound(itemIndex) &&
+                itemIndex < PIN_LIMIT &&
+                itemIndex >= 0) {
+            markDropArea(itemIndex);
+        }
+    }
+
+    @Override
+    public void onDragFinished(int x, int y) {
+        setInDragging(false);
+        // A contact has been dragged to the RemoveView in order to be unstarred,  so simply wait
+        // for the new contact cursor which will cause the UI to be refreshed without the unstarred
+        // contact.
+        if (!mAwaitingRemove) {
+            handleDrop();
+        }
+    }
+
+    @Override
+    public void onDroppedOnRemove() {
+        if (mDraggedEntry != null) {
+            unstarAndUnpinContact(mDraggedEntry.lookupUri);
+            mAwaitingRemove = true;
+        }
+    }
+}
diff --git a/src/com/android/dialer/list/RegularSearchFragment.java b/src/com/android/dialer/list/RegularSearchFragment.java
new file mode 100644
index 0000000..df18af0
--- /dev/null
+++ b/src/com/android/dialer/list/RegularSearchFragment.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import static android.Manifest.permission.READ_CONTACTS;
+
+import android.app.Activity;
+import android.content.pm.PackageManager;
+import android.support.v13.app.FragmentCompat;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.PinnedHeaderListView;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.commonbind.analytics.AnalyticsUtil;
+import com.android.dialerbind.ObjectFactory;
+import com.android.incallui.Call.LogState;
+
+import com.android.dialer.R;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.ScreenEvent;
+import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+
+public class RegularSearchFragment extends SearchFragment
+        implements OnEmptyViewActionButtonClickedListener,
+        FragmentCompat.OnRequestPermissionsResultCallback {
+
+    public static final int PERMISSION_REQUEST_CODE = 1;
+
+    private static final int SEARCH_DIRECTORY_RESULT_LIMIT = 5;
+
+    private static final CachedNumberLookupService mCachedNumberLookupService =
+        ObjectFactory.newCachedNumberLookupService();
+
+    public interface CapabilityChecker {
+        public boolean isNearbyPlacesSearchEnabled();
+    }
+
+    protected String mPermissionToRequest;
+
+    public RegularSearchFragment() {
+        configureDirectorySearch();
+    }
+
+    public void configureDirectorySearch() {
+        setDirectorySearchEnabled(true);
+        setDirectoryResultLimit(SEARCH_DIRECTORY_RESULT_LIMIT);
+    }
+
+    @Override
+    protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
+        super.onCreateView(inflater, container);
+        ((PinnedHeaderListView) getListView()).setScrollToSectionOnHeaderTouch(true);
+    }
+
+    @Override
+    protected ContactEntryListAdapter createListAdapter() {
+        RegularSearchListAdapter adapter = new RegularSearchListAdapter(getActivity());
+        adapter.setDisplayPhotos(true);
+        adapter.setUseCallableUri(usesCallableUri());
+        adapter.setListener(this);
+        return adapter;
+    }
+
+    @Override
+    protected void cacheContactInfo(int position) {
+        if (mCachedNumberLookupService != null) {
+            final RegularSearchListAdapter adapter =
+                (RegularSearchListAdapter) getAdapter();
+            mCachedNumberLookupService.addContact(getContext(),
+                    adapter.getContactInfo(mCachedNumberLookupService, position));
+        }
+    }
+
+    @Override
+    protected void setupEmptyView() {
+        if (mEmptyView != null && getActivity() != null) {
+            final int imageResource;
+            final int actionLabelResource;
+            final int descriptionResource;
+            final OnEmptyViewActionButtonClickedListener listener;
+            if (!PermissionsUtil.hasPermission(getActivity(), READ_CONTACTS)) {
+                imageResource = R.drawable.empty_contacts;
+                actionLabelResource = R.string.permission_single_turn_on;
+                descriptionResource = R.string.permission_no_search;
+                listener = this;
+                mPermissionToRequest = READ_CONTACTS;
+            } else {
+                imageResource = EmptyContentView.NO_IMAGE;
+                actionLabelResource = EmptyContentView.NO_LABEL;
+                descriptionResource = EmptyContentView.NO_LABEL;
+                listener = null;
+                mPermissionToRequest = null;
+            }
+
+            mEmptyView.setImage(imageResource);
+            mEmptyView.setActionLabel(actionLabelResource);
+            mEmptyView.setDescription(descriptionResource);
+            if (listener != null) {
+                mEmptyView.setActionClickedListener(listener);
+            }
+        }
+    }
+
+    @Override
+    public void onEmptyViewActionButtonClicked() {
+        final Activity activity = getActivity();
+        if (activity == null) {
+            return;
+        }
+
+        if (READ_CONTACTS.equals(mPermissionToRequest)) {
+          FragmentCompat.requestPermissions(this, new String[] {mPermissionToRequest},
+              PERMISSION_REQUEST_CODE);
+        }
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String[] permissions,
+            int[] grantResults) {
+        if (requestCode == PERMISSION_REQUEST_CODE) {
+            setupEmptyView();
+            if (grantResults != null && grantResults.length == 1
+                    && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
+                PermissionsUtil.notifyPermissionGranted(getActivity(), mPermissionToRequest);
+            }
+        }
+    }
+
+    @Override
+    protected int getCallInitiationType(boolean isRemoteDirectory) {
+        return isRemoteDirectory ? LogState.INITIATION_REMOTE_DIRECTORY
+                : LogState.INITIATION_REGULAR_SEARCH;
+    }
+}
diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java
new file mode 100644
index 0000000..afc621c
--- /dev/null
+++ b/src/com/android/dialer/list/RegularSearchListAdapter.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.text.TextUtils;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.compat.DirectoryCompat;
+import com.android.contacts.common.list.DirectoryPartition;
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
+
+/**
+ * List adapter to display regular search results.
+ */
+public class RegularSearchListAdapter extends DialerPhoneNumberListAdapter {
+    protected boolean mIsQuerySipAddress;
+
+    public RegularSearchListAdapter(Context context) {
+        super(context);
+        setShortcutEnabled(SHORTCUT_CREATE_NEW_CONTACT, false);
+        setShortcutEnabled(SHORTCUT_ADD_TO_EXISTING_CONTACT, false);
+    }
+
+    public CachedContactInfo getContactInfo(
+            CachedNumberLookupService lookupService, int position) {
+        ContactInfo info = new ContactInfo();
+        CachedContactInfo cacheInfo = lookupService.buildCachedContactInfo(info);
+        final Cursor item = (Cursor) getItem(position);
+        if (item != null) {
+            final DirectoryPartition partition =
+                (DirectoryPartition) getPartition(getPartitionForPosition(position));
+            final long directoryId = partition.getDirectoryId();
+            final boolean isExtendedDirectory = isExtendedDirectory(directoryId);
+
+            info.name = item.getString(PhoneQuery.DISPLAY_NAME);
+            info.type = item.getInt(PhoneQuery.PHONE_TYPE);
+            info.label = item.getString(PhoneQuery.PHONE_LABEL);
+            info.number = item.getString(PhoneQuery.PHONE_NUMBER);
+            final String photoUriStr = item.getString(PhoneQuery.PHOTO_URI);
+            info.photoUri = photoUriStr == null ? null : Uri.parse(photoUriStr);
+            /*
+             * An extended directory is custom directory in the app, but not a directory provided by
+             * framework. So it can't be USER_TYPE_WORK.
+             *
+             * When a search result is selected, RegularSearchFragment calls getContactInfo and
+             * cache the resulting @{link ContactInfo} into local db. Set usertype to USER_TYPE_WORK
+             * only if it's NOT extended directory id and is enterprise directory.
+             */
+            info.userType = !isExtendedDirectory
+                    && DirectoryCompat.isEnterpriseDirectoryId(directoryId)
+                            ? ContactsUtils.USER_TYPE_WORK : ContactsUtils.USER_TYPE_CURRENT;
+
+            cacheInfo.setLookupKey(item.getString(PhoneQuery.LOOKUP_KEY));
+
+            final String sourceName = partition.getLabel();
+            if (isExtendedDirectory) {
+                cacheInfo.setExtendedSource(sourceName, directoryId);
+            } else {
+                cacheInfo.setDirectorySource(sourceName, directoryId);
+            }
+        }
+        return cacheInfo;
+    }
+
+    @Override
+    public String getFormattedQueryString() {
+        if (mIsQuerySipAddress) {
+            // Return unnormalized SIP address
+            return getQueryString();
+        }
+        return super.getFormattedQueryString();
+    }
+
+    @Override
+    public void setQueryString(String queryString) {
+        // Don't show actions if the query string contains a letter.
+        final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString())
+                && hasDigitsInQueryString();
+        mIsQuerySipAddress = PhoneNumberHelper.isUriNumber(queryString);
+
+        if (isChanged(showNumberShortcuts)) {
+            notifyDataSetChanged();
+        }
+        super.setQueryString(queryString);
+    }
+
+    protected boolean isChanged(boolean showNumberShortcuts) {
+        boolean changed = false;
+        changed |= setShortcutEnabled(SHORTCUT_DIRECT_CALL,
+                showNumberShortcuts || mIsQuerySipAddress);
+        changed |= setShortcutEnabled(SHORTCUT_SEND_SMS_MESSAGE, showNumberShortcuts);
+        changed |= setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL,
+                showNumberShortcuts && CallUtil.isVideoEnabled(getContext()));
+        return changed;
+    }
+
+    /**
+     * Whether there is at least one digit in the query string.
+     */
+    private boolean hasDigitsInQueryString() {
+        String queryString = getQueryString();
+        int length = queryString.length();
+        for (int i = 0; i < length; i++) {
+            if (Character.isDigit(queryString.charAt(i))) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/dialer/list/RemoveView.java b/src/com/android/dialer/list/RemoveView.java
new file mode 100644
index 0000000..fdb08f6
--- /dev/null
+++ b/src/com/android/dialer/list/RemoveView.java
@@ -0,0 +1,89 @@
+package com.android.dialer.list;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.DragEvent;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.dialer.R;
+
+public class RemoveView extends FrameLayout {
+
+    DragDropController mDragDropController;
+    TextView mRemoveText;
+    ImageView mRemoveIcon;
+    int mUnhighlightedColor;
+    int mHighlightedColor;
+    Drawable mRemoveDrawable;
+
+    public RemoveView(Context context) {
+      super(context);
+    }
+
+    public RemoveView(Context context, AttributeSet attrs) {
+        this(context, attrs, -1);
+    }
+
+    public RemoveView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        mRemoveText = (TextView) findViewById(R.id.remove_view_text);
+        mRemoveIcon = (ImageView) findViewById(R.id.remove_view_icon);
+        final Resources r = getResources();
+        mUnhighlightedColor = r.getColor(R.color.remove_text_color);
+        mHighlightedColor = r.getColor(R.color.remove_highlighted_text_color);
+        mRemoveDrawable = r.getDrawable(R.drawable.ic_remove);
+    }
+
+    public void setDragDropController(DragDropController controller) {
+        mDragDropController = controller;
+    }
+
+    @Override
+    public boolean onDragEvent(DragEvent event) {
+        final int action = event.getAction();
+        switch (action) {
+            case DragEvent.ACTION_DRAG_ENTERED:
+                setAppearanceHighlighted();
+                break;
+            case DragEvent.ACTION_DRAG_EXITED:
+                setAppearanceNormal();
+                break;
+            case DragEvent.ACTION_DRAG_LOCATION:
+                if (mDragDropController != null) {
+                    mDragDropController.handleDragHovered(this, (int) event.getX(),
+                            (int) event.getY());
+                }
+                break;
+            case DragEvent.ACTION_DROP:
+                if (mDragDropController != null) {
+                    mDragDropController.handleDragFinished((int) event.getX(), (int) event.getY(),
+                            true);
+                }
+                setAppearanceNormal();
+                break;
+        }
+        return true;
+    }
+
+    private void setAppearanceNormal() {
+        mRemoveText.setTextColor(mUnhighlightedColor);
+        mRemoveIcon.setColorFilter(mUnhighlightedColor);
+        invalidate();
+    }
+
+    private void setAppearanceHighlighted() {
+        mRemoveText.setTextColor(mHighlightedColor);
+        mRemoveIcon.setColorFilter(mHighlightedColor);
+        invalidate();
+    }
+}
diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java
new file mode 100644
index 0000000..d1a0be0
--- /dev/null
+++ b/src/com/android/dialer/list/SearchFragment.java
@@ -0,0 +1,398 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import android.animation.Animator;
+import android.animation.AnimatorInflater;
+import android.animation.AnimatorListenerAdapter;
+import android.app.Activity;
+import android.app.DialogFragment;
+import android.content.Intent;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.Interpolator;
+import android.widget.AbsListView;
+import android.widget.AbsListView.OnScrollListener;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.Space;
+
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactListItemView;
+import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
+import com.android.contacts.common.list.PhoneNumberPickerFragment;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.contacts.common.util.ViewUtil;
+import com.android.dialer.R;
+import com.android.dialer.dialpad.DialpadFragment.ErrorDialogFragment;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.IntentUtil;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.phone.common.animation.AnimUtils;
+
+public class SearchFragment extends PhoneNumberPickerFragment {
+    private static final String TAG  = SearchFragment.class.getSimpleName();
+
+    private OnListFragmentScrolledListener mActivityScrollListener;
+    private View.OnTouchListener mActivityOnTouchListener;
+
+    /*
+     * Stores the untouched user-entered string that is used to populate the add to contacts
+     * intent.
+     */
+    private String mAddToContactNumber;
+    private int mActionBarHeight;
+    private int mShadowHeight;
+    private int mPaddingTop;
+    private int mShowDialpadDuration;
+    private int mHideDialpadDuration;
+
+    /**
+     * Used to resize the list view containing search results so that it fits the available space
+     * above the dialpad. Does not have a user-visible effect in regular touch usage (since the
+     * dialpad hides that portion of the ListView anyway), but improves usability in accessibility
+     * mode.
+     */
+    private Space mSpacer;
+
+    private HostInterface mActivity;
+
+    protected EmptyContentView mEmptyView;
+
+    public interface HostInterface {
+        public boolean isActionBarShowing();
+        public boolean isDialpadShown();
+        public int getDialpadHeight();
+        public int getActionBarHideOffset();
+        public int getActionBarHeight();
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+
+        setQuickContactEnabled(true);
+        setAdjustSelectionBoundsEnabled(false);
+        setDarkTheme(false);
+        setPhotoPosition(ContactListItemView.getDefaultPhotoPosition(false /* opposite */));
+        setUseCallableUri(true);
+
+        try {
+            mActivityScrollListener = (OnListFragmentScrolledListener) activity;
+        } catch (ClassCastException e) {
+            Log.d(TAG, activity.toString() + " doesn't implement OnListFragmentScrolledListener. " +
+                    "Ignoring.");
+        }
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        if (isSearchMode()) {
+            getAdapter().setHasHeader(0, false);
+        }
+
+        mActivity = (HostInterface) getActivity();
+
+        final Resources res = getResources();
+        mActionBarHeight = mActivity.getActionBarHeight();
+        mShadowHeight  = res.getDrawable(R.drawable.search_shadow).getIntrinsicHeight();
+        mPaddingTop = res.getDimensionPixelSize(R.dimen.search_list_padding_top);
+        mShowDialpadDuration = res.getInteger(R.integer.dialpad_slide_in_duration);
+        mHideDialpadDuration = res.getInteger(R.integer.dialpad_slide_out_duration);
+
+        final View parentView = getView();
+
+        final ListView listView = getListView();
+
+        if (mEmptyView == null) {
+            mEmptyView = new EmptyContentView(getActivity());
+            ((ViewGroup) getListView().getParent()).addView(mEmptyView);
+            getListView().setEmptyView(mEmptyView);
+            setupEmptyView();
+        }
+
+        listView.setBackgroundColor(res.getColor(R.color.background_dialer_results));
+        listView.setClipToPadding(false);
+        setVisibleScrollbarEnabled(false);
+
+        //Turn of accessibility live region as the list constantly update itself and spam messages.
+        listView.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_NONE);
+        ContentChangedFilter.addToParent(listView);
+
+        listView.setOnScrollListener(new OnScrollListener() {
+            @Override
+            public void onScrollStateChanged(AbsListView view, int scrollState) {
+                if (mActivityScrollListener != null) {
+                    mActivityScrollListener.onListFragmentScrollStateChange(scrollState);
+                }
+            }
+
+            @Override
+            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
+                    int totalItemCount) {
+            }
+        });
+        if (mActivityOnTouchListener != null) {
+            listView.setOnTouchListener(mActivityOnTouchListener);
+        }
+
+        updatePosition(false /* animate */);
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        ViewUtil.addBottomPaddingToListViewForFab(getListView(), getResources());
+    }
+
+    @Override
+    public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
+        Animator animator = null;
+        if (nextAnim != 0) {
+            animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
+        }
+        if (animator != null) {
+            final View view = getView();
+            final int oldLayerType = view.getLayerType();
+            view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+            animator.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    view.setLayerType(oldLayerType, null);
+                }
+            });
+        }
+        return animator;
+    }
+
+    @Override
+    protected void setSearchMode(boolean flag) {
+        super.setSearchMode(flag);
+        // This hides the "All contacts with phone numbers" header in the search fragment
+        final ContactEntryListAdapter adapter = getAdapter();
+        if (adapter != null) {
+            adapter.setHasHeader(0, false);
+        }
+    }
+
+    public void setAddToContactNumber(String addToContactNumber) {
+        mAddToContactNumber = addToContactNumber;
+    }
+
+    /**
+     * Return true if phone number is prohibited by a value -
+     * (R.string.config_prohibited_phone_number_regexp) in the config files. False otherwise.
+     */
+    public boolean checkForProhibitedPhoneNumber(String number) {
+        // Regular expression prohibiting manual phone call. Can be empty i.e. "no rule".
+        String prohibitedPhoneNumberRegexp = getResources().getString(
+            R.string.config_prohibited_phone_number_regexp);
+
+        // "persist.radio.otaspdial" is a temporary hack needed for one carrier's automated
+        // test equipment.
+        if (number != null
+                && !TextUtils.isEmpty(prohibitedPhoneNumberRegexp)
+                && number.matches(prohibitedPhoneNumberRegexp)) {
+            Log.d(TAG, "The phone number is prohibited explicitly by a rule.");
+            if (getActivity() != null) {
+                DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
+                        R.string.dialog_phone_call_prohibited_message);
+                dialogFragment.show(getFragmentManager(), "phone_prohibited_dialog");
+            }
+
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    protected ContactEntryListAdapter createListAdapter() {
+        DialerPhoneNumberListAdapter adapter = new DialerPhoneNumberListAdapter(getActivity());
+        adapter.setDisplayPhotos(true);
+        adapter.setUseCallableUri(super.usesCallableUri());
+        adapter.setListener(this);
+        return adapter;
+    }
+
+    @Override
+    protected void onItemClick(int position, long id) {
+        final DialerPhoneNumberListAdapter adapter = (DialerPhoneNumberListAdapter) getAdapter();
+        final int shortcutType = adapter.getShortcutTypeFromPosition(position);
+        final OnPhoneNumberPickerActionListener listener;
+        final Intent intent;
+        final String number;
+
+        Log.i(TAG, "onItemClick: shortcutType=" + shortcutType);
+
+        switch (shortcutType) {
+            case DialerPhoneNumberListAdapter.SHORTCUT_INVALID:
+                super.onItemClick(position, id);
+                break;
+            case DialerPhoneNumberListAdapter.SHORTCUT_DIRECT_CALL:
+                number = adapter.getQueryString();
+                listener = getOnPhoneNumberPickerListener();
+                if (listener != null && !checkForProhibitedPhoneNumber(number)) {
+                    listener.onPickPhoneNumber(number, false /* isVideoCall */,
+                            getCallInitiationType(false /* isRemoteDirectory */));
+                }
+                break;
+            case DialerPhoneNumberListAdapter.SHORTCUT_CREATE_NEW_CONTACT:
+                number = TextUtils.isEmpty(mAddToContactNumber) ?
+                        adapter.getFormattedQueryString() : mAddToContactNumber;
+                intent = IntentUtil.getNewContactIntent(number);
+                DialerUtils.startActivityWithErrorToast(getActivity(), intent);
+                break;
+            case DialerPhoneNumberListAdapter.SHORTCUT_ADD_TO_EXISTING_CONTACT:
+                number = TextUtils.isEmpty(mAddToContactNumber) ?
+                        adapter.getFormattedQueryString() : mAddToContactNumber;
+                intent = IntentUtil.getAddToExistingContactIntent(number);
+                DialerUtils.startActivityWithErrorToast(getActivity(), intent,
+                        R.string.add_contact_not_available);
+                break;
+            case DialerPhoneNumberListAdapter.SHORTCUT_SEND_SMS_MESSAGE:
+                number = adapter.getFormattedQueryString();
+                intent = IntentUtil.getSendSmsIntent(number);
+                DialerUtils.startActivityWithErrorToast(getActivity(), intent);
+                break;
+            case DialerPhoneNumberListAdapter.SHORTCUT_MAKE_VIDEO_CALL:
+                number = adapter.getQueryString();
+                listener = getOnPhoneNumberPickerListener();
+                if (listener != null && !checkForProhibitedPhoneNumber(number)) {
+                    listener.onPickPhoneNumber(number, true /* isVideoCall */,
+                            getCallInitiationType(false /* isRemoteDirectory */));
+                }
+                break;
+        }
+    }
+
+    /**
+     * Updates the position and padding of the search fragment, depending on whether the dialpad is
+     * shown. This can be optionally animated.
+     * @param animate
+     */
+    public void updatePosition(boolean animate) {
+        // Use negative shadow height instead of 0 to account for the 9-patch's shadow.
+        int startTranslationValue =
+                mActivity.isDialpadShown() ? mActionBarHeight - mShadowHeight : -mShadowHeight;
+        int endTranslationValue = 0;
+        // Prevents ListView from being translated down after a rotation when the ActionBar is up.
+        if (animate || mActivity.isActionBarShowing()) {
+            endTranslationValue =
+                    mActivity.isDialpadShown() ? 0 : mActionBarHeight - mShadowHeight;
+        }
+        if (animate) {
+            // If the dialpad will be shown, then this animation involves sliding the list up.
+            final boolean slideUp = mActivity.isDialpadShown();
+
+            Interpolator interpolator = slideUp ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT ;
+            int duration = slideUp ? mShowDialpadDuration : mHideDialpadDuration;
+            getView().setTranslationY(startTranslationValue);
+            getView().animate()
+                    .translationY(endTranslationValue)
+                    .setInterpolator(interpolator)
+                    .setDuration(duration)
+                    .setListener(new AnimatorListenerAdapter() {
+                        @Override
+                        public void onAnimationStart(Animator animation) {
+                            if (!slideUp) {
+                                resizeListView();
+                            }
+                        }
+
+                        @Override
+                        public void onAnimationEnd(Animator animation) {
+                            if (slideUp) {
+                                resizeListView();
+                            }
+                        }
+                    });
+
+        } else {
+            getView().setTranslationY(endTranslationValue);
+            resizeListView();
+        }
+
+        // There is padding which should only be applied when the dialpad is not shown.
+        int paddingTop = mActivity.isDialpadShown() ? 0 : mPaddingTop;
+        final ListView listView = getListView();
+        listView.setPaddingRelative(
+                listView.getPaddingStart(),
+                paddingTop,
+                listView.getPaddingEnd(),
+                listView.getPaddingBottom());
+    }
+
+    public void resizeListView() {
+        if (mSpacer == null) {
+            return;
+        }
+        int spacerHeight = mActivity.isDialpadShown() ? mActivity.getDialpadHeight() : 0;
+        if (spacerHeight != mSpacer.getHeight()) {
+            final LinearLayout.LayoutParams lp =
+                    (LinearLayout.LayoutParams) mSpacer.getLayoutParams();
+            lp.height = spacerHeight;
+            mSpacer.setLayoutParams(lp);
+        }
+    }
+
+    @Override
+    protected void startLoading() {
+        if (getActivity() == null) {
+            return;
+        }
+
+        if (PermissionsUtil.hasContactsPermissions(getActivity())) {
+            super.startLoading();
+        } else if (TextUtils.isEmpty(getQueryString())) {
+            // Clear out any existing call shortcuts.
+            final DialerPhoneNumberListAdapter adapter =
+                    (DialerPhoneNumberListAdapter) getAdapter();
+            adapter.disableAllShortcuts();
+        } else {
+            // The contact list is not going to change (we have no results since permissions are
+            // denied), but the shortcuts might because of the different query, so update the
+            // list.
+            getAdapter().notifyDataSetChanged();
+        }
+
+        setupEmptyView();
+    }
+
+    public void setOnTouchListener(View.OnTouchListener onTouchListener) {
+        mActivityOnTouchListener = onTouchListener;
+    }
+
+    @Override
+    protected View inflateView(LayoutInflater inflater, ViewGroup container) {
+        final LinearLayout parent = (LinearLayout) super.inflateView(inflater, container);
+        final int orientation = getResources().getConfiguration().orientation;
+        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
+            mSpacer = new Space(getActivity());
+            parent.addView(mSpacer,
+                    new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0));
+        }
+        return parent;
+    }
+
+    protected void setupEmptyView() {}
+}
diff --git a/src/com/android/dialer/list/SmartDialNumberListAdapter.java b/src/com/android/dialer/list/SmartDialNumberListAdapter.java
new file mode 100644
index 0000000..fe27a25
--- /dev/null
+++ b/src/com/android/dialer/list/SmartDialNumberListAdapter.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import android.content.ContentUris;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.list.ContactListItemView;
+import com.android.dialer.dialpad.SmartDialCursorLoader;
+import com.android.dialer.dialpad.SmartDialNameMatcher;
+import com.android.dialer.dialpad.SmartDialPrefix;
+import com.android.dialer.dialpad.SmartDialMatchPosition;
+
+import java.util.ArrayList;
+
+/**
+ * List adapter to display the SmartDial search results.
+ */
+public class SmartDialNumberListAdapter extends DialerPhoneNumberListAdapter {
+
+    private static final String TAG = SmartDialNumberListAdapter.class.getSimpleName();
+    private static final boolean DEBUG = false;
+
+    private SmartDialNameMatcher mNameMatcher;
+
+    public SmartDialNumberListAdapter(Context context) {
+        super(context);
+        mNameMatcher = new SmartDialNameMatcher("", SmartDialPrefix.getMap());
+        setShortcutEnabled(SmartDialNumberListAdapter.SHORTCUT_DIRECT_CALL, false);
+
+        if (DEBUG) {
+            Log.v(TAG, "Constructing List Adapter");
+        }
+    }
+
+    /**
+     * Sets query for the SmartDialCursorLoader.
+     */
+    public void configureLoader(SmartDialCursorLoader loader) {
+        if (DEBUG) {
+            Log.v(TAG, "Configure Loader with query" + getQueryString());
+        }
+
+        if (getQueryString() == null) {
+            loader.configureQuery("");
+            mNameMatcher.setQuery("");
+        } else {
+            loader.configureQuery(getQueryString());
+            mNameMatcher.setQuery(PhoneNumberUtils.normalizeNumber(getQueryString()));
+        }
+    }
+
+    /**
+     * Sets highlight options for a List item in the SmartDial search results.
+     * @param view ContactListItemView where the result will be displayed.
+     * @param cursor Object containing information of the associated List item.
+     */
+    @Override
+    protected void setHighlight(ContactListItemView view, Cursor cursor) {
+        view.clearHighlightSequences();
+
+        if (mNameMatcher.matches(cursor.getString(PhoneQuery.DISPLAY_NAME))) {
+            final ArrayList<SmartDialMatchPosition> nameMatches = mNameMatcher.getMatchPositions();
+            for (SmartDialMatchPosition match:nameMatches) {
+                view.addNameHighlightSequence(match.start, match.end);
+                if (DEBUG) {
+                    Log.v(TAG, cursor.getString(PhoneQuery.DISPLAY_NAME) + " " +
+                            mNameMatcher.getQuery() + " " + String.valueOf(match.start));
+                }
+            }
+        }
+
+        final SmartDialMatchPosition numberMatch = mNameMatcher.matchesNumber(cursor.getString(
+                PhoneQuery.PHONE_NUMBER));
+        if (numberMatch != null) {
+            view.addNumberHighlightSequence(numberMatch.start, numberMatch.end);
+        }
+    }
+
+    /**
+     * Gets Uri for the list item at the given position.
+     * @param position Location of the data of interest.
+     * @return Data Uri of the entry.
+     */
+    public Uri getDataUri(int position) {
+        Cursor cursor = ((Cursor)getItem(position));
+        if (cursor != null) {
+            long id = cursor.getLong(PhoneQuery.PHONE_ID);
+            return ContentUris.withAppendedId(ContactsContract.Data.CONTENT_URI, id);
+        } else {
+            Log.w(TAG, "Cursor was null in getDataUri() call. Returning null instead.");
+            return null;
+        }
+    }
+
+    @Override
+    public void setQueryString(String queryString) {
+        final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString());
+        boolean changed = false;
+        changed |= setShortcutEnabled(SHORTCUT_CREATE_NEW_CONTACT, showNumberShortcuts);
+        changed |= setShortcutEnabled(SHORTCUT_ADD_TO_EXISTING_CONTACT, showNumberShortcuts);
+        changed |= setShortcutEnabled(SHORTCUT_SEND_SMS_MESSAGE, showNumberShortcuts);
+        changed |= setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL,
+                showNumberShortcuts && CallUtil.isVideoEnabled(getContext()));
+        if (changed) {
+            notifyDataSetChanged();
+        }
+        super.setQueryString(queryString);
+    }
+}
diff --git a/src/com/android/dialer/list/SmartDialSearchFragment.java b/src/com/android/dialer/list/SmartDialSearchFragment.java
new file mode 100644
index 0000000..fcb61ff
--- /dev/null
+++ b/src/com/android/dialer/list/SmartDialSearchFragment.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import static android.Manifest.permission.CALL_PHONE;
+
+import android.app.Activity;
+import android.content.Loader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v13.app.FragmentCompat;
+import android.util.Log;
+import android.view.View;
+
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.dialpad.SmartDialCursorLoader;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.logging.ScreenEvent;
+import com.android.dialer.R;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.incallui.Call.LogState;
+
+import java.util.ArrayList;
+
+/**
+ * Implements a fragment to load and display SmartDial search results.
+ */
+public class SmartDialSearchFragment extends SearchFragment
+        implements EmptyContentView.OnEmptyViewActionButtonClickedListener,
+        FragmentCompat.OnRequestPermissionsResultCallback {
+    private static final String TAG = SmartDialSearchFragment.class.getSimpleName();
+
+    private static final int CALL_PHONE_PERMISSION_REQUEST_CODE = 1;
+
+    /**
+     * Creates a SmartDialListAdapter to display and operate on search results.
+     */
+    @Override
+    protected ContactEntryListAdapter createListAdapter() {
+        SmartDialNumberListAdapter adapter = new SmartDialNumberListAdapter(getActivity());
+        adapter.setUseCallableUri(super.usesCallableUri());
+        adapter.setQuickContactEnabled(true);
+        // Set adapter's query string to restore previous instance state.
+        adapter.setQueryString(getQueryString());
+        adapter.setListener(this);
+        return adapter;
+    }
+
+    /**
+     * Creates a SmartDialCursorLoader object to load query results.
+     */
+    @Override
+    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+        // Smart dialing does not support Directory Load, falls back to normal search instead.
+        if (id == getDirectoryLoaderId()) {
+            return super.onCreateLoader(id, args);
+        } else {
+            final SmartDialNumberListAdapter adapter = (SmartDialNumberListAdapter) getAdapter();
+            SmartDialCursorLoader loader = new SmartDialCursorLoader(super.getContext());
+            adapter.configureLoader(loader);
+            return loader;
+        }
+    }
+
+    /**
+     * Gets the Phone Uri of an entry for calling.
+     * @param position Location of the data of interest.
+     * @return Phone Uri to establish a phone call.
+     */
+    @Override
+    protected Uri getPhoneUri(int position) {
+        final SmartDialNumberListAdapter adapter = (SmartDialNumberListAdapter) getAdapter();
+        return adapter.getDataUri(position);
+    }
+
+    @Override
+    protected void setupEmptyView() {
+        if (mEmptyView != null && getActivity() != null) {
+            if (!PermissionsUtil.hasPermission(getActivity(), CALL_PHONE)) {
+                mEmptyView.setImage(R.drawable.empty_contacts);
+                mEmptyView.setActionLabel(R.string.permission_single_turn_on);
+                mEmptyView.setDescription(R.string.permission_place_call);
+                mEmptyView.setActionClickedListener(this);
+            } else {
+                mEmptyView.setImage(EmptyContentView.NO_IMAGE);
+                mEmptyView.setActionLabel(EmptyContentView.NO_LABEL);
+                mEmptyView.setDescription(EmptyContentView.NO_LABEL);
+            }
+        }
+    }
+
+    @Override
+    public void onEmptyViewActionButtonClicked() {
+        final Activity activity = getActivity();
+        if (activity == null) {
+            return;
+        }
+
+        FragmentCompat.requestPermissions(this, new String[] {CALL_PHONE},
+            CALL_PHONE_PERMISSION_REQUEST_CODE);
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String[] permissions,
+            int[] grantResults) {
+        if (requestCode == CALL_PHONE_PERMISSION_REQUEST_CODE) {
+            setupEmptyView();
+        }
+    }
+
+    @Override
+    protected int getCallInitiationType(boolean isRemoteDirectory) {
+        return LogState.INITIATION_SMART_DIAL;
+    }
+
+    public boolean isShowingPermissionRequest() {
+        return mEmptyView != null && mEmptyView.isShowingContent();
+    }
+}
diff --git a/src/com/android/dialer/list/SpeedDialFragment.java b/src/com/android/dialer/list/SpeedDialFragment.java
new file mode 100644
index 0000000..7e10297
--- /dev/null
+++ b/src/com/android/dialer/list/SpeedDialFragment.java
@@ -0,0 +1,504 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import static android.Manifest.permission.READ_CONTACTS;
+
+import android.animation.Animator;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.LoaderManager;
+import android.content.CursorLoader;
+import android.content.Loader;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.graphics.Rect;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Trace;
+import android.support.v13.app.FragmentCompat;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.view.animation.AnimationUtils;
+import android.view.animation.LayoutAnimationController;
+import android.widget.AbsListView;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.FrameLayout;
+import android.widget.FrameLayout.LayoutParams;
+import android.widget.ImageView;
+import android.widget.ListView;
+
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactTileLoaderFactory;
+import com.android.contacts.common.list.ContactTileView;
+import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
+import com.android.contacts.common.util.PermissionsUtil;
+import com.android.dialer.R;
+import com.android.dialer.widget.EmptyContentView;
+import com.android.incallui.Call.LogState;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+/**
+ * This fragment displays the user's favorite/frequent contacts in a grid.
+ */
+public class SpeedDialFragment extends Fragment implements OnItemClickListener,
+        PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener,
+        EmptyContentView.OnEmptyViewActionButtonClickedListener,
+        FragmentCompat.OnRequestPermissionsResultCallback {
+
+    private static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
+
+    /**
+     * By default, the animation code assumes that all items in a list view are of the same height
+     * when animating new list items into view (e.g. from the bottom of the screen into view).
+     * This can cause incorrect translation offsets when a item that is larger or smaller than
+     * other list item is removed from the list. This key is used to provide the actual height
+     * of the removed object so that the actual translation appears correct to the user.
+     */
+    private static final long KEY_REMOVED_ITEM_HEIGHT = Long.MAX_VALUE;
+
+    private static final String TAG = "SpeedDialFragment";
+    private static final boolean DEBUG = false;
+
+    private int mAnimationDuration;
+
+    /**
+     * Used with LoaderManager.
+     */
+    private static int LOADER_ID_CONTACT_TILE = 1;
+
+    public interface HostInterface {
+        public void setDragDropController(DragDropController controller);
+        public void showAllContactsTab();
+    }
+
+    private class ContactTileLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
+        @Override
+        public CursorLoader onCreateLoader(int id, Bundle args) {
+            if (DEBUG) Log.d(TAG, "ContactTileLoaderListener#onCreateLoader.");
+            return ContactTileLoaderFactory.createStrequentPhoneOnlyLoader(getActivity());
+        }
+
+        @Override
+        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+            if (DEBUG) Log.d(TAG, "ContactTileLoaderListener#onLoadFinished");
+            mContactTileAdapter.setContactCursor(data);
+            setEmptyViewVisibility(mContactTileAdapter.getCount() == 0);
+        }
+
+        @Override
+        public void onLoaderReset(Loader<Cursor> loader) {
+            if (DEBUG) Log.d(TAG, "ContactTileLoaderListener#onLoaderReset. ");
+        }
+    }
+
+    private class ContactTileAdapterListener implements ContactTileView.Listener {
+        @Override
+        public void onContactSelected(Uri contactUri, Rect targetRect) {
+            if (mPhoneNumberPickerActionListener != null) {
+                mPhoneNumberPickerActionListener.onPickDataUri(contactUri,
+                        false /* isVideoCall */, LogState.INITIATION_SPEED_DIAL);
+            }
+        }
+
+        @Override
+        public void onCallNumberDirectly(String phoneNumber) {
+            if (mPhoneNumberPickerActionListener != null) {
+                mPhoneNumberPickerActionListener.onPickPhoneNumber(phoneNumber,
+                        false /* isVideoCall */, LogState.INITIATION_SPEED_DIAL);
+            }
+        }
+
+        @Override
+        public int getApproximateTileWidth() {
+            return getView().getWidth();
+        }
+    }
+
+    private class ScrollListener implements ListView.OnScrollListener {
+        @Override
+        public void onScroll(AbsListView view,
+                int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+            if (mActivityScrollListener != null) {
+                mActivityScrollListener.onListFragmentScroll(firstVisibleItem, visibleItemCount,
+                    totalItemCount);
+            }
+        }
+
+        @Override
+        public void onScrollStateChanged(AbsListView view, int scrollState) {
+            mActivityScrollListener.onListFragmentScrollStateChange(scrollState);
+        }
+    }
+
+    private OnPhoneNumberPickerActionListener mPhoneNumberPickerActionListener;
+
+    private OnListFragmentScrolledListener mActivityScrollListener;
+    private PhoneFavoritesTileAdapter mContactTileAdapter;
+
+    private View mParentView;
+
+    private PhoneFavoriteListView mListView;
+
+    private View mContactTileFrame;
+
+    private final HashMap<Long, Integer> mItemIdTopMap = new HashMap<Long, Integer>();
+    private final HashMap<Long, Integer> mItemIdLeftMap = new HashMap<Long, Integer>();
+
+    /**
+     * Layout used when there are no favorites.
+     */
+    private EmptyContentView mEmptyView;
+
+    private final ContactTileView.Listener mContactTileAdapterListener =
+            new ContactTileAdapterListener();
+    private final LoaderManager.LoaderCallbacks<Cursor> mContactTileLoaderListener =
+            new ContactTileLoaderListener();
+    private final ScrollListener mScrollListener = new ScrollListener();
+
+    @Override
+    public void onAttach(Activity activity) {
+        if (DEBUG) Log.d(TAG, "onAttach()");
+        super.onAttach(activity);
+
+        // Construct two base adapters which will become part of PhoneFavoriteMergedAdapter.
+        // We don't construct the resultant adapter at this moment since it requires LayoutInflater
+        // that will be available on onCreateView().
+        mContactTileAdapter = new PhoneFavoritesTileAdapter(activity, mContactTileAdapterListener,
+                this);
+        mContactTileAdapter.setPhotoLoader(ContactPhotoManager.getInstance(activity));
+    }
+
+    @Override
+    public void onCreate(Bundle savedState) {
+        if (DEBUG) Log.d(TAG, "onCreate()");
+        Trace.beginSection(TAG + " onCreate");
+        super.onCreate(savedState);
+
+        mAnimationDuration = getResources().getInteger(R.integer.fade_duration);
+        Trace.endSection();
+    }
+
+    @Override
+    public void onResume() {
+        Trace.beginSection(TAG + " onResume");
+        super.onResume();
+        if (mContactTileAdapter != null) {
+            mContactTileAdapter.refreshContactsPreferences();
+        }
+        if (PermissionsUtil.hasContactsPermissions(getActivity())) {
+            if (getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE) == null) {
+                getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null,
+                        mContactTileLoaderListener);
+
+            } else {
+                getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad();
+            }
+
+            mEmptyView.setDescription(R.string.speed_dial_empty);
+            mEmptyView.setActionLabel(R.string.speed_dial_empty_add_favorite_action);
+        } else {
+            mEmptyView.setDescription(R.string.permission_no_speeddial);
+            mEmptyView.setActionLabel(R.string.permission_single_turn_on);
+        }
+        Trace.endSection();
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        Trace.beginSection(TAG + " onCreateView");
+        mParentView = inflater.inflate(R.layout.speed_dial_fragment, container, false);
+
+        mListView = (PhoneFavoriteListView) mParentView.findViewById(R.id.contact_tile_list);
+        mListView.setOnItemClickListener(this);
+        mListView.setVerticalScrollBarEnabled(false);
+        mListView.setVerticalScrollbarPosition(View.SCROLLBAR_POSITION_RIGHT);
+        mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
+        mListView.getDragDropController().addOnDragDropListener(mContactTileAdapter);
+
+        final ImageView dragShadowOverlay =
+                (ImageView) getActivity().findViewById(R.id.contact_tile_drag_shadow_overlay);
+        mListView.setDragShadowOverlay(dragShadowOverlay);
+
+        mEmptyView = (EmptyContentView) mParentView.findViewById(R.id.empty_list_view);
+        mEmptyView.setImage(R.drawable.empty_speed_dial);
+        mEmptyView.setActionClickedListener(this);
+
+        mContactTileFrame = mParentView.findViewById(R.id.contact_tile_frame);
+
+        final LayoutAnimationController controller = new LayoutAnimationController(
+                AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in));
+        controller.setDelay(0);
+        mListView.setLayoutAnimation(controller);
+        mListView.setAdapter(mContactTileAdapter);
+
+        mListView.setOnScrollListener(mScrollListener);
+        mListView.setFastScrollEnabled(false);
+        mListView.setFastScrollAlwaysVisible(false);
+
+        //prevent content changes of the list from firing accessibility events.
+        mListView.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_NONE);
+        ContentChangedFilter.addToParent(mListView);
+
+        Trace.endSection();
+        return mParentView;
+    }
+
+    public boolean hasFrequents() {
+        if (mContactTileAdapter == null) return false;
+        return mContactTileAdapter.getNumFrequents() > 0;
+    }
+
+    /* package */ void setEmptyViewVisibility(final boolean visible) {
+        final int previousVisibility = mEmptyView.getVisibility();
+        final int emptyViewVisibility = visible ? View.VISIBLE : View.GONE;
+        final int listViewVisibility = visible ? View.GONE : View.VISIBLE;
+
+        if (previousVisibility != emptyViewVisibility) {
+            final FrameLayout.LayoutParams params = (LayoutParams) mContactTileFrame
+                    .getLayoutParams();
+            params.height = visible ? LayoutParams.WRAP_CONTENT : LayoutParams.MATCH_PARENT;
+            mContactTileFrame.setLayoutParams(params);
+            mEmptyView.setVisibility(emptyViewVisibility);
+            mListView.setVisibility(listViewVisibility);
+        }
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        final Activity activity = getActivity();
+
+        try {
+            mActivityScrollListener = (OnListFragmentScrolledListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString()
+                    + " must implement OnListFragmentScrolledListener");
+        }
+
+        try {
+            OnDragDropListener listener = (OnDragDropListener) activity;
+            mListView.getDragDropController().addOnDragDropListener(listener);
+            ((HostInterface) activity).setDragDropController(mListView.getDragDropController());
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString()
+                    + " must implement OnDragDropListener and HostInterface");
+        }
+
+        try {
+            mPhoneNumberPickerActionListener = (OnPhoneNumberPickerActionListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString()
+                    + " must implement PhoneFavoritesFragment.listener");
+        }
+
+        // Use initLoader() instead of restartLoader() to refraining unnecessary reload.
+        // This method call implicitly assures ContactTileLoaderListener's onLoadFinished() will
+        // be called, on which we'll check if "all" contacts should be reloaded again or not.
+        if (PermissionsUtil.hasContactsPermissions(activity)) {
+            getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, mContactTileLoaderListener);
+        } else {
+            setEmptyViewVisibility(true);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * This is only effective for elements provided by {@link #mContactTileAdapter}.
+     * {@link #mContactTileAdapter} has its own logic for click events.
+     */
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        final int contactTileAdapterCount = mContactTileAdapter.getCount();
+        if (position <= contactTileAdapterCount) {
+            Log.e(TAG, "onItemClick() event for unexpected position. "
+                    + "The position " + position + " is before \"all\" section. Ignored.");
+        }
+    }
+
+    /**
+     * Cache the current view offsets into memory. Once a relayout of views in the ListView
+     * has happened due to a dataset change, the cached offsets are used to create animations
+     * that slide views from their previous positions to their new ones, to give the appearance
+     * that the views are sliding into their new positions.
+     */
+    private void saveOffsets(int removedItemHeight) {
+        final int firstVisiblePosition = mListView.getFirstVisiblePosition();
+        if (DEBUG) {
+            Log.d(TAG, "Child count : " + mListView.getChildCount());
+        }
+        for (int i = 0; i < mListView.getChildCount(); i++) {
+            final View child = mListView.getChildAt(i);
+            final int position = firstVisiblePosition + i;
+            // Since we are getting the position from mListView and then querying
+            // mContactTileAdapter, its very possible that things are out of sync
+            // and we might index out of bounds.  Let's make sure that this doesn't happen.
+            if (!mContactTileAdapter.isIndexInBound(position)) {
+                continue;
+            }
+            final long itemId = mContactTileAdapter.getItemId(position);
+            if (DEBUG) {
+                Log.d(TAG, "Saving itemId: " + itemId + " for listview child " + i + " Top: "
+                        + child.getTop());
+            }
+            mItemIdTopMap.put(itemId, child.getTop());
+            mItemIdLeftMap.put(itemId, child.getLeft());
+        }
+        mItemIdTopMap.put(KEY_REMOVED_ITEM_HEIGHT, removedItemHeight);
+    }
+
+    /*
+     * Performs animations for the gridView
+     */
+    private void animateGridView(final long... idsInPlace) {
+        if (mItemIdTopMap.isEmpty()) {
+            // Don't do animations if the database is being queried for the first time and
+            // the previous item offsets have not been cached, or the user hasn't done anything
+            // (dragging, swiping etc) that requires an animation.
+            return;
+        }
+
+        final ViewTreeObserver observer = mListView.getViewTreeObserver();
+        observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
+            @SuppressWarnings("unchecked")
+            @Override
+            public boolean onPreDraw() {
+                observer.removeOnPreDrawListener(this);
+                final int firstVisiblePosition = mListView.getFirstVisiblePosition();
+                final AnimatorSet animSet = new AnimatorSet();
+                final ArrayList<Animator> animators = new ArrayList<Animator>();
+                for (int i = 0; i < mListView.getChildCount(); i++) {
+                    final View child = mListView.getChildAt(i);
+                    int position = firstVisiblePosition + i;
+
+                    // Since we are getting the position from mListView and then querying
+                    // mContactTileAdapter, its very possible that things are out of sync
+                    // and we might index out of bounds.  Let's make sure that this doesn't happen.
+                    if (!mContactTileAdapter.isIndexInBound(position)) {
+                        continue;
+                    }
+
+                    final long itemId = mContactTileAdapter.getItemId(position);
+
+                    if (containsId(idsInPlace, itemId)) {
+                        animators.add(ObjectAnimator.ofFloat(
+                                child, "alpha", 0.0f, 1.0f));
+                        break;
+                    } else {
+                        Integer startTop = mItemIdTopMap.get(itemId);
+                        Integer startLeft = mItemIdLeftMap.get(itemId);
+                        final int top = child.getTop();
+                        final int left = child.getLeft();
+                        int deltaX = 0;
+                        int deltaY = 0;
+
+                        if (startLeft != null) {
+                            if (startLeft != left) {
+                                deltaX = startLeft - left;
+                                animators.add(ObjectAnimator.ofFloat(
+                                        child, "translationX", deltaX, 0.0f));
+                            }
+                        }
+
+                        if (startTop != null) {
+                            if (startTop != top) {
+                                deltaY = startTop - top;
+                                animators.add(ObjectAnimator.ofFloat(
+                                        child, "translationY", deltaY, 0.0f));
+                            }
+                        }
+
+                        if (DEBUG) {
+                            Log.d(TAG, "Found itemId: " + itemId + " for listview child " + i +
+                                    " Top: " + top +
+                                    " Delta: " + deltaY);
+                        }
+                    }
+                }
+
+                if (animators.size() > 0) {
+                    animSet.setDuration(mAnimationDuration).playTogether(animators);
+                    animSet.start();
+                }
+
+                mItemIdTopMap.clear();
+                mItemIdLeftMap.clear();
+                return true;
+            }
+        });
+    }
+
+    private boolean containsId(long[] ids, long target) {
+        // Linear search on array is fine because this is typically only 0-1 elements long
+        for (int i = 0; i < ids.length; i++) {
+            if (ids[i] == target) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public void onDataSetChangedForAnimation(long... idsInPlace) {
+        animateGridView(idsInPlace);
+    }
+
+    @Override
+    public void cacheOffsetsForDatasetChange() {
+        saveOffsets(0);
+    }
+
+    public AbsListView getListView() {
+        return mListView;
+    }
+
+    @Override
+    public void onEmptyViewActionButtonClicked() {
+        final Activity activity = getActivity();
+        if (activity == null) {
+            return;
+        }
+
+        if (!PermissionsUtil.hasPermission(activity, READ_CONTACTS)) {
+          FragmentCompat.requestPermissions(this, new String[] {READ_CONTACTS},
+              READ_CONTACTS_PERMISSION_REQUEST_CODE);
+        } else {
+            // Switch tabs
+            ((HostInterface) activity).showAllContactsTab();
+        }
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String[] permissions,
+            int[] grantResults) {
+        if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
+            if (grantResults.length == 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
+                PermissionsUtil.notifyPermissionGranted(getActivity(), READ_CONTACTS);
+            }
+        }
+    }
+}
diff --git a/src/com/android/dialer/logging/InteractionEvent.java b/src/com/android/dialer/logging/InteractionEvent.java
new file mode 100644
index 0000000..88518b4
--- /dev/null
+++ b/src/com/android/dialer/logging/InteractionEvent.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2015 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.dialer.logging;
+
+/**
+ * Class holding constants for Dialer interactions
+ */
+public class InteractionEvent {
+
+    public static final int UNKNOWN = 0;
+
+    /**
+     * An incoming call was blocked
+     */
+    public static final int CALL_BLOCKED = 15;
+
+    /**
+     * The user blocked a number from the Call Log screen
+     */
+    public static final int BLOCK_NUMBER_CALL_LOG = 16;
+
+    /**
+     * The user blocked a number from the Call details screen
+     */
+    public static final int BLOCK_NUMBER_CALL_DETAIL = 17;
+
+    /**
+     * The user blocked a number from the Management screen
+     */
+    public static final int BLOCK_NUMBER_MANAGEMENT_SCREEN = 18;
+
+    /**
+     * The user unblocked a number from the Call Log screen
+     */
+    public static final int UNBLOCK_NUMBER_CALL_LOG = 19;
+
+    /**
+     * The user unblocked a number from the Call details screen
+     */
+    public static final int UNBLOCK_NUMBER_CALL_DETAIL = 20;
+
+    /**
+     * The user unblocked a number from the Management screen
+     */
+    public static final int UNBLOCK_NUMBER_MANAGEMENT_SCREEN = 21;
+
+    /**
+     * The user blocked numbers from contacts marked as send to voicemail
+     */
+    public static final int IMPORT_SEND_TO_VOICEMAIL = 22;
+
+    /**
+     * The user blocked a number then undid the block
+     */
+    public static final int UNDO_BLOCK_NUMBER = 23;
+
+    /**
+     * The user unblocked a number then undid the unblock
+     */
+    public static final int UNDO_UNBLOCK_NUMBER = 24;
+
+}
diff --git a/src/com/android/dialer/logging/Logger.java b/src/com/android/dialer/logging/Logger.java
new file mode 100644
index 0000000..25b7268
--- /dev/null
+++ b/src/com/android/dialer/logging/Logger.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2015 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.dialer.logging;
+
+import android.app.Activity;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.commonbind.analytics.AnalyticsUtil;
+import com.android.dialerbind.ObjectFactory;
+import com.android.incallui.Call;
+
+/**
+ * Single entry point for all logging/analytics-related work for all user interactions.
+ */
+public abstract class Logger {
+    public static final String TAG = "Logger";
+
+    public static Logger getInstance() {
+        return ObjectFactory.getLoggerInstance();
+    }
+
+    /**
+     * Logs a call event. PII like the call's number or caller details should never be logged.
+     *
+     * @param call to log.
+     */
+    public static void logCall(Call call) {
+        final Logger logger = getInstance();
+        if (logger != null) {
+            logger.logCallImpl(call);
+        }
+    }
+
+    /**
+     * Logs an event indicating that a screen was displayed.
+     *
+     * @param screenType integer identifier of the displayed screen
+     * @param activity Parent activity of the displayed screen.
+     */
+    public static void logScreenView(int screenType, Activity activity) {
+        final Logger logger = getInstance();
+        if (logger != null) {
+            logger.logScreenViewImpl(screenType);
+        }
+
+        final String screenName = ScreenEvent.getScreenName(screenType);
+        if (!TextUtils.isEmpty(screenName)) {
+            AnalyticsUtil.sendScreenView(screenName, activity, null);
+        } else {
+            Log.w(TAG, "Unknown screenType: " + screenType);
+        }
+    }
+
+    /**
+     * Logs an interaction that occurred
+     *
+     * @param interaction an integer representing what interaction occurred.
+     * {@see com.android.dialer.logging.InteractionEvent}
+     */
+    public static void logInteraction(int interaction) {
+        final Logger logger = getInstance();
+        if (logger != null) {
+            logger.logInteractionImpl(interaction);
+        }
+    }
+
+    public abstract void logCallImpl(Call call);
+    public abstract void logScreenViewImpl(int screenType);
+    public abstract void logInteractionImpl(int dialerInteraction);
+}
diff --git a/src/com/android/dialer/logging/ScreenEvent.java b/src/com/android/dialer/logging/ScreenEvent.java
new file mode 100644
index 0000000..e0d7b00
--- /dev/null
+++ b/src/com/android/dialer/logging/ScreenEvent.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2015 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.dialer.logging;
+
+import android.text.TextUtils;
+
+import com.android.contacts.common.dialog.ClearFrequentsDialog;
+import com.android.contacts.common.interactions.ImportExportDialogFragment;
+import com.android.dialer.calllog.CallLogFragment;
+import com.android.dialer.dialpad.DialpadFragment;
+import com.android.dialer.filterednumber.BlockedNumbersFragment;
+import com.android.dialer.list.AllContactsFragment;
+import com.android.dialer.list.BlockedListSearchFragment;
+import com.android.dialer.list.RegularSearchFragment;
+import com.android.dialer.list.SmartDialSearchFragment;
+import com.android.dialer.list.SpeedDialFragment;
+import com.android.dialer.settings.DialerSettingsActivity;
+import com.android.incallui.AnswerFragment;
+import com.android.incallui.CallCardFragment;
+import com.android.incallui.ConferenceManagerFragment;
+import com.android.incallui.InCallActivity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Stores constants identifying individual screens/dialogs/fragments in the application, and also
+ * provides a mapping of integer id -> screen name mappings for analytics purposes.
+ */
+public class ScreenEvent {
+    private static final Map<Integer, String> sScreenNameMap = new HashMap<>();
+
+    public static final String FRAGMENT_TAG_SEPARATOR = "#";
+
+    public static final int UNKNOWN = 0;
+
+    // The dialpad in the main Dialer activity
+    public static final int DIALPAD = 1;
+
+    // The speed dial tab in the main Dialer activity
+    public static final int SPEED_DIAL = 2;
+
+    // The recents tab in the main Dialer activity
+    public static final int CALL_LOG = 3;
+
+    // The voicemail tab in the main Dialer activity
+    public static final int VOICEMAIL_LOG = 4;
+
+    // The all contacts tab in the main Dialer activity
+    public static final int ALL_CONTACTS = 5;
+
+    // List of search results returned by typing into the search box.
+    public static final int REGULAR_SEARCH = 6;
+
+    // List of search results returned by typing into the dialpad.
+    public static final int SMART_DIAL_SEARCH = 7;
+
+    // The All and Missed call log tabs in CallLogActivity
+    public static final int CALL_LOG_FILTER = 8;
+
+    // Dialer settings screen.
+    public static final int SETTINGS = 9;
+
+    // The "Import/export contacts" dialog launched via the overflow menu.
+    public static final int IMPORT_EXPORT_CONTACTS = 10;
+
+    // The "Clear frequents" dialog launched via the overflow menu.
+    public static final int CLEAR_FREQUENTS = 11;
+
+    // The "Send feedback" dialog launched via the overflow menu.
+    public static final int SEND_FEEDBACK = 12;
+
+    // The main in call screen that displays caller details and contact photos
+    public static final int INCALL = 13;
+
+    // The screen that displays the glowpad widget (slide right to answer,
+    // slide left to dismiss).
+    public static final int INCOMING_CALL = 14;
+
+    // Conference management fragment displayed for conferences that support
+    // management of individual calls within the conference.
+    public static final int CONFERENCE_MANAGEMENT = 15;
+
+    // The dialpad displayed in-call that is used to send dtmf tones.
+    public static final int INCALL_DIALPAD = 16;
+
+    // Menu options displayed when long pressing on a call log entry.
+    public static final int CALL_LOG_CONTEXT_MENU = 17;
+
+    // Screen displayed to allow the user to see an overview of all blocked
+    // numbers.
+    public static final int BLOCKED_NUMBER_MANAGEMENT = 18;
+
+    // Screen displayed to allow the user to add a new blocked number.
+    public static final int BLOCKED_NUMBER_ADD_NUMBER = 19;
+
+    static {
+        sScreenNameMap.put(ScreenEvent.DIALPAD,
+                getScreenNameWithTag(DialpadFragment.class.getSimpleName(), "Dialer"));
+        sScreenNameMap.put(ScreenEvent.SPEED_DIAL, SpeedDialFragment.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.CALL_LOG,
+                getScreenNameWithTag(CallLogFragment.class.getSimpleName(), "History"));
+        sScreenNameMap.put(ScreenEvent.VOICEMAIL_LOG,
+                getScreenNameWithTag(CallLogFragment.class.getSimpleName(), "Voicemail"));
+        sScreenNameMap.put(ScreenEvent.ALL_CONTACTS, AllContactsFragment.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.REGULAR_SEARCH,
+                RegularSearchFragment.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.SMART_DIAL_SEARCH,
+                SmartDialSearchFragment.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.CALL_LOG_FILTER,
+                getScreenNameWithTag(CallLogFragment.class.getSimpleName(), "Filtered"));
+        sScreenNameMap.put(ScreenEvent.SETTINGS,
+                DialerSettingsActivity.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.IMPORT_EXPORT_CONTACTS,
+                ImportExportDialogFragment.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.CLEAR_FREQUENTS,
+                ClearFrequentsDialog.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.SEND_FEEDBACK, "SendFeedback");
+        sScreenNameMap.put(ScreenEvent.INCALL, InCallActivity.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.INCOMING_CALL, AnswerFragment.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.CONFERENCE_MANAGEMENT,
+                ConferenceManagerFragment.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.INCALL_DIALPAD,
+                getScreenNameWithTag(DialpadFragment.class.getSimpleName(), "InCall"));
+        sScreenNameMap.put(ScreenEvent.CALL_LOG_CONTEXT_MENU, "CallLogContextMenu");
+        sScreenNameMap.put(ScreenEvent.BLOCKED_NUMBER_MANAGEMENT,
+                BlockedNumbersFragment.class.getSimpleName());
+        sScreenNameMap.put(ScreenEvent.BLOCKED_NUMBER_ADD_NUMBER,
+                BlockedListSearchFragment.class.getSimpleName());
+    }
+
+    /**
+     * For a given screen type, returns the actual screen name that is used for logging/analytics
+     * purposes.
+     *
+     * @param screenType unique ID of a type of screen
+     *
+     * @return the tagged version of the screen name corresponding to the provided screenType,
+     *         or {@null} if the provided screenType is unknown.
+     */
+    public static String getScreenName(int screenType) {
+        return sScreenNameMap.get(screenType);
+    }
+
+    /**
+     * Build a tagged version of the provided screenName if the tag is non-empty.
+     *
+     * @param screenName Name of the screen.
+     * @param tag Optional tag describing the screen.
+     * @return the unchanged screenName if the tag is {@code null} or empty, the tagged version of
+     *         the screenName otherwise.
+     */
+    public static String getScreenNameWithTag(String screenName, String tag) {
+        if (TextUtils.isEmpty(tag)) {
+            return screenName;
+        }
+        return screenName + FRAGMENT_TAG_SEPARATOR + tag;
+    }
+}
diff --git a/src/com/android/dialer/service/CachedNumberLookupService.java b/src/com/android/dialer/service/CachedNumberLookupService.java
new file mode 100644
index 0000000..e91d458
--- /dev/null
+++ b/src/com/android/dialer/service/CachedNumberLookupService.java
@@ -0,0 +1,54 @@
+package com.android.dialer.service;
+
+import android.content.Context;
+
+import com.android.dialer.calllog.ContactInfo;
+
+public interface CachedNumberLookupService {
+
+    public interface CachedContactInfo {
+        public static final int SOURCE_TYPE_DIRECTORY = 1;
+        public static final int SOURCE_TYPE_EXTENDED = 2;
+        public static final int SOURCE_TYPE_PLACES = 3;
+        public static final int SOURCE_TYPE_PROFILE = 4;
+        public static final int SOURCE_TYPE_CNAP = 5;
+
+        public ContactInfo getContactInfo();
+
+        public void setSource(int sourceType, String name, long directoryId);
+        public void setDirectorySource(String name, long directoryId);
+        public void setExtendedSource(String name, long directoryId);
+        public void setLookupKey(String lookupKey);
+    }
+
+    public CachedContactInfo buildCachedContactInfo(ContactInfo info);
+
+    /**
+     * Perform a lookup using the cached number lookup service to return contact
+     * information stored in the cache that corresponds to the given number.
+     *
+     * @param context Valid context
+     * @param number Phone number to lookup the cache for
+     * @return A {@link CachedContactInfo} containing the contact information if the phone
+     * number is found in the cache, {@link ContactInfo#EMPTY} if the phone number was
+     * not found in the cache, and null if there was an error when querying the cache.
+     */
+    public CachedContactInfo lookupCachedContactFromNumber(Context context, String number);
+
+    public void addContact(Context context, CachedContactInfo info);
+
+    public boolean isCacheUri(String uri);
+
+    public boolean isBusiness(int sourceType);
+    public boolean canReportAsInvalid(int sourceType, String objectId);
+
+    public boolean addPhoto(Context context, String number, byte[] photo);
+
+    /**
+     * Remove all cached phone number entries from the cache, regardless of how old they
+     * are.
+     *
+     * @param context Valid context
+     */
+    public void clearAllCacheEntries(Context context);
+}
diff --git a/src/com/android/dialer/service/ExtendedBlockingManager.java b/src/com/android/dialer/service/ExtendedBlockingManager.java
new file mode 100644
index 0000000..3257a72
--- /dev/null
+++ b/src/com/android/dialer/service/ExtendedBlockingManager.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2016 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.dialer.service;
+
+import android.support.annotation.Nullable;
+
+/**
+ * Manager of extended blocking events. It notifies all listeners of all blocking-related events.
+ */
+public interface ExtendedBlockingManager {
+
+    interface ButtonRendererListener {
+        void onBlockedNumber(String number, @Nullable String countryIso);
+        void onUnblockedNumber(String number, @Nullable String countryIso);
+    }
+
+    void addButtonRendererListener(@Nullable ButtonRendererListener listener);
+
+    void removeButtonRendererListener(@Nullable ButtonRendererListener listener);
+
+    void notifyOnBlockedNumber(String number, @Nullable String countryIso);
+
+    void notifyOnUnblockedNumber(String number, @Nullable String countryIso);
+}
diff --git a/src/com/android/dialer/service/SpamButtonRenderer.java b/src/com/android/dialer/service/SpamButtonRenderer.java
new file mode 100644
index 0000000..843bc55
--- /dev/null
+++ b/src/com/android/dialer/service/SpamButtonRenderer.java
@@ -0,0 +1,23 @@
+package com.android.dialer.service;
+
+import android.view.View;
+
+import java.util.List;
+
+/**
+ * Interface responsible for rendering spam buttons.
+ */
+public interface SpamButtonRenderer {
+
+    /**
+     * Renders buttons for a phone number.
+     */
+    void render(String number, String countryIso);
+
+    void setCompleteListItemViews(List<View> views);
+
+    void setSpamFilteredViews(List<View> views);
+
+    void setFilteredNumberViews(List<View> views);
+
+}
diff --git a/src/com/android/dialer/settings/DefaultRingtonePreference.java b/src/com/android/dialer/settings/DefaultRingtonePreference.java
new file mode 100644
index 0000000..a8a23fd
--- /dev/null
+++ b/src/com/android/dialer/settings/DefaultRingtonePreference.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2014 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.dialer.settings;
+
+import android.content.Context;
+import android.content.Intent;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.preference.RingtonePreference;
+import android.util.AttributeSet;
+import android.widget.Toast;
+
+import com.android.dialer.R;
+import com.android.dialer.compat.SettingsCompat;
+
+/**
+ * RingtonePreference which doesn't show default ringtone setting.
+ */
+public class DefaultRingtonePreference extends RingtonePreference {
+    public DefaultRingtonePreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected void onPrepareRingtonePickerIntent(Intent ringtonePickerIntent) {
+        super.onPrepareRingtonePickerIntent(ringtonePickerIntent);
+
+        /*
+         * Since this preference is for choosing the default ringtone, it
+         * doesn't make sense to show a 'Default' item.
+         */
+        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
+    }
+
+    @Override
+    protected void onSaveRingtone(Uri ringtoneUri) {
+        if (!SettingsCompat.System.canWrite(getContext())) {
+            Toast.makeText(
+                    getContext(),
+                    getContext().getResources().getString(R.string.toast_cannot_write_system_settings),
+                    Toast.LENGTH_SHORT).show();
+            return;
+        }
+        RingtoneManager.setActualDefaultRingtoneUri(getContext(), getRingtoneType(), ringtoneUri);
+    }
+
+    @Override
+    protected Uri onRestoreRingtone() {
+        return RingtoneManager.getActualDefaultRingtoneUri(getContext(), getRingtoneType());
+    }
+}
diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java
new file mode 100644
index 0000000..b25c5a6
--- /dev/null
+++ b/src/com/android/dialer/settings/DialerSettingsActivity.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2013 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.dialer.settings;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.UserManager;
+import android.preference.PreferenceManager;
+import android.provider.Settings;
+import android.telecom.TelecomManager;
+import android.telephony.TelephonyManager;
+import android.view.MenuItem;
+import android.widget.Toast;
+
+import com.android.contacts.common.activity.AppCompatPreferenceActivity;
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.SdkVersionOverride;
+import com.android.contacts.common.compat.TelephonyManagerCompat;
+import com.android.dialer.R;
+import com.android.dialer.compat.SettingsCompat;
+import com.android.dialer.compat.UserManagerCompat;
+import com.android.dialer.filterednumber.BlockedNumbersSettingsActivity;
+
+import java.util.List;
+
+public class DialerSettingsActivity extends AppCompatPreferenceActivity {
+    protected SharedPreferences mPreferences;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
+    }
+
+    @Override
+    public void onBuildHeaders(List<Header> target) {
+        Header displayOptionsHeader = new Header();
+        displayOptionsHeader.titleRes = R.string.display_options_title;
+        displayOptionsHeader.fragment = DisplayOptionsSettingsFragment.class.getName();
+        target.add(displayOptionsHeader);
+
+        Header soundSettingsHeader = new Header();
+        soundSettingsHeader.titleRes = R.string.sounds_and_vibration_title;
+        soundSettingsHeader.fragment = SoundSettingsFragment.class.getName();
+        soundSettingsHeader.id = R.id.settings_header_sounds_and_vibration;
+        target.add(soundSettingsHeader);
+
+        if (CompatUtils.isMarshmallowCompatible()) {
+            Header quickResponseSettingsHeader = new Header();
+            Intent quickResponseSettingsIntent =
+                    new Intent(TelecomManager.ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS);
+            quickResponseSettingsHeader.titleRes = R.string.respond_via_sms_setting_title;
+            quickResponseSettingsHeader.intent = quickResponseSettingsIntent;
+            target.add(quickResponseSettingsHeader);
+        }
+
+        TelephonyManager telephonyManager =
+                (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+
+        // "Call Settings" (full settings) is shown if the current user is primary user and there
+        // is only one SIM. Before N, "Calling accounts" setting is shown if the current user is
+        // primary user and there are multiple SIMs. In N+, "Calling accounts" is shown whenever
+        // "Call Settings" is not shown.
+        boolean isPrimaryUser = isPrimaryUser();
+        if (isPrimaryUser
+                && TelephonyManagerCompat.getPhoneCount(telephonyManager) <= 1) {
+            Header callSettingsHeader = new Header();
+            Intent callSettingsIntent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
+            callSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+            callSettingsHeader.titleRes = R.string.call_settings_label;
+            callSettingsHeader.intent = callSettingsIntent;
+            target.add(callSettingsHeader);
+        } else if (android.os.Build.VERSION.CODENAME.startsWith("N") || isPrimaryUser) {
+            Header phoneAccountSettingsHeader = new Header();
+            Intent phoneAccountSettingsIntent =
+                    new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
+            phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+            phoneAccountSettingsHeader.titleRes = R.string.phone_account_settings_label;
+            phoneAccountSettingsHeader.intent = phoneAccountSettingsIntent;
+            target.add(phoneAccountSettingsHeader);
+        }
+        if (isPrimaryUser) {
+            Header blockedCallsHeader = new Header();
+            blockedCallsHeader.titleRes = R.string.manage_blocked_numbers_label;
+            blockedCallsHeader.intent = new Intent(this, BlockedNumbersSettingsActivity.class);
+            target.add(blockedCallsHeader);
+
+            if (TelephonyManagerCompat.isTtyModeSupported(telephonyManager)
+                    || TelephonyManagerCompat
+                    .isHearingAidCompatibilitySupported(telephonyManager)) {
+                Header accessibilitySettingsHeader = new Header();
+                Intent accessibilitySettingsIntent =
+                        new Intent(TelecomManager.ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS);
+                accessibilitySettingsHeader.titleRes = R.string.accessibility_settings_title;
+                accessibilitySettingsHeader.intent = accessibilitySettingsIntent;
+                target.add(accessibilitySettingsHeader);
+            }
+        }
+    }
+
+    @Override
+    public void onHeaderClick(Header header, int position) {
+        if (header.id == R.id.settings_header_sounds_and_vibration) {
+            // If we don't have the permission to write to system settings, go to system sound
+            // settings instead. Otherwise, perform the super implementation (which launches our
+            // own preference fragment.
+            if (!SettingsCompat.System.canWrite(this)) {
+                Toast.makeText(
+                        this,
+                        getResources().getString(R.string.toast_cannot_write_system_settings),
+                        Toast.LENGTH_SHORT).show();
+                startActivity(new Intent(Settings.ACTION_SOUND_SETTINGS));
+                return;
+            }
+        }
+        super.onHeaderClick(header, position);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            onBackPressed();
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public void onBackPressed() {
+        if (!isSafeToCommitTransactions()) {
+            return;
+        }
+        super.onBackPressed();
+    }
+
+    @Override
+    protected boolean isValidFragment(String fragmentName) {
+        return true;
+    }
+
+    /**
+     * @return Whether the current user is the primary user.
+     */
+    private boolean isPrimaryUser() {
+        return UserManagerCompat.isSystemUser((UserManager) getSystemService(Context.USER_SERVICE));
+    }
+}
diff --git a/src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java b/src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java
new file mode 100644
index 0000000..4b2c8f6
--- /dev/null
+++ b/src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2015 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.dialer.settings;
+
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+
+import com.android.dialer.R;
+
+public class DisplayOptionsSettingsFragment extends PreferenceFragment {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.display_options_settings);
+    }
+}
diff --git a/src/com/android/dialer/settings/SoundSettingsFragment.java b/src/com/android/dialer/settings/SoundSettingsFragment.java
new file mode 100644
index 0000000..59f8798
--- /dev/null
+++ b/src/com/android/dialer/settings/SoundSettingsFragment.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2014 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.dialer.settings;
+
+import android.content.Context;
+import android.media.RingtoneManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.Vibrator;
+import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
+import android.telephony.TelephonyManager;
+import android.widget.Toast;
+
+import com.android.contacts.common.compat.SdkVersionOverride;
+import com.android.dialer.R;
+import com.android.dialer.compat.SettingsCompat;
+import com.android.phone.common.util.SettingsUtil;
+
+public class SoundSettingsFragment extends PreferenceFragment
+        implements Preference.OnPreferenceChangeListener {
+
+    private static final int NO_DTMF_TONE = 0;
+    private static final int PLAY_DTMF_TONE = 1;
+
+    private static final int NO_VIBRATION_FOR_CALLS = 0;
+    private static final int DO_VIBRATION_FOR_CALLS = 1;
+
+
+    private static final int DTMF_TONE_TYPE_NORMAL = 0;
+
+    private static final int SHOW_CARRIER_SETTINGS = 0;
+    private static final int HIDE_CARRIER_SETTINGS = 1;
+
+    private static final int MSG_UPDATE_RINGTONE_SUMMARY = 1;
+
+    private Preference mRingtonePreference;
+    private CheckBoxPreference mVibrateWhenRinging;
+    private CheckBoxPreference mPlayDtmfTone;
+    private ListPreference mDtmfToneLength;
+
+    private final Runnable mRingtoneLookupRunnable = new Runnable() {
+        @Override
+        public void run() {
+            updateRingtonePreferenceSummary();
+        }
+    };
+
+    private final Handler mRingtoneLookupComplete = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_UPDATE_RINGTONE_SUMMARY:
+                    mRingtonePreference.setSummary((CharSequence) msg.obj);
+                    break;
+            }
+        }
+    };
+
+    @Override
+    public Context getContext() {
+        return getActivity();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        addPreferencesFromResource(R.xml.sound_settings);
+
+        Context context = getActivity();
+
+        mRingtonePreference = findPreference(context.getString(R.string.ringtone_preference_key));
+        mVibrateWhenRinging = (CheckBoxPreference) findPreference(
+                context.getString(R.string.vibrate_on_preference_key));
+        mPlayDtmfTone = (CheckBoxPreference) findPreference(
+                context.getString(R.string.play_dtmf_preference_key));
+        mDtmfToneLength = (ListPreference) findPreference(
+                context.getString(R.string.dtmf_tone_length_preference_key));
+
+        if (hasVibrator()) {
+            mVibrateWhenRinging.setOnPreferenceChangeListener(this);
+        } else {
+            getPreferenceScreen().removePreference(mVibrateWhenRinging);
+            mVibrateWhenRinging = null;
+        }
+
+        mPlayDtmfTone.setOnPreferenceChangeListener(this);
+        mPlayDtmfTone.setChecked(shouldPlayDtmfTone());
+
+        TelephonyManager telephonyManager =
+                (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
+        if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M
+                && telephonyManager.canChangeDtmfToneLength()
+                && (telephonyManager.isWorldPhone() || !shouldHideCarrierSettings())) {
+            mDtmfToneLength.setOnPreferenceChangeListener(this);
+            mDtmfToneLength.setValueIndex(
+                    Settings.System.getInt(context.getContentResolver(),
+                        Settings.System.DTMF_TONE_TYPE_WHEN_DIALING,
+                        DTMF_TONE_TYPE_NORMAL));
+        } else {
+            getPreferenceScreen().removePreference(mDtmfToneLength);
+            mDtmfToneLength = null;
+        }
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        if (!SettingsCompat.System.canWrite(getContext())) {
+            // If the user launches this setting fragment, then toggles the WRITE_SYSTEM_SETTINGS
+            // AppOp, then close the fragment since there is nothing useful to do.
+            getActivity().onBackPressed();
+            return;
+        }
+
+        if (mVibrateWhenRinging != null) {
+            mVibrateWhenRinging.setChecked(shouldVibrateWhenRinging());
+        }
+
+        // Lookup the ringtone name asynchronously.
+        new Thread(mRingtoneLookupRunnable).start();
+    }
+
+    /**
+     * Supports onPreferenceChangeListener to look for preference changes.
+     *
+     * @param preference The preference to be changed
+     * @param objValue The value of the selection, NOT its localized display value.
+     */
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object objValue) {
+        if (!SettingsCompat.System.canWrite(getContext())) {
+            // A user shouldn't be able to get here, but this protects against monkey crashes.
+            Toast.makeText(
+                    getContext(),
+                    getResources().getString(R.string.toast_cannot_write_system_settings),
+                    Toast.LENGTH_SHORT).show();
+            return true;
+        }
+        if (preference == mVibrateWhenRinging) {
+            boolean doVibrate = (Boolean) objValue;
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.VIBRATE_WHEN_RINGING,
+                    doVibrate ? DO_VIBRATION_FOR_CALLS : NO_VIBRATION_FOR_CALLS);
+        } else if (preference == mDtmfToneLength) {
+            int index = mDtmfToneLength.findIndexOfValue((String) objValue);
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, index);
+        }
+        return true;
+    }
+
+    /**
+     * Click listener for toggle events.
+     */
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+        if (!SettingsCompat.System.canWrite(getContext())) {
+            Toast.makeText(
+                    getContext(),
+                    getResources().getString(R.string.toast_cannot_write_system_settings),
+                    Toast.LENGTH_SHORT).show();
+            return true;
+        }
+        if (preference == mPlayDtmfTone) {
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.DTMF_TONE_WHEN_DIALING,
+                    mPlayDtmfTone.isChecked() ? PLAY_DTMF_TONE : NO_DTMF_TONE);
+        }
+        return true;
+    }
+
+    /**
+     * Updates the summary text on the ringtone preference with the name of the ringtone.
+     */
+    private void updateRingtonePreferenceSummary() {
+        SettingsUtil.updateRingtoneName(
+                getActivity(),
+                mRingtoneLookupComplete,
+                RingtoneManager.TYPE_RINGTONE,
+                mRingtonePreference.getKey(),
+                MSG_UPDATE_RINGTONE_SUMMARY);
+    }
+
+    /**
+     * Obtain the value for "vibrate when ringing" setting. The default value is false.
+     *
+     * Watch out: if the setting is missing in the device, this will try obtaining the old
+     * "vibrate on ring" setting from AudioManager, and save the previous setting to the new one.
+     */
+    private boolean shouldVibrateWhenRinging() {
+        int vibrateWhenRingingSetting = Settings.System.getInt(getActivity().getContentResolver(),
+                Settings.System.VIBRATE_WHEN_RINGING,
+                NO_VIBRATION_FOR_CALLS);
+        return hasVibrator() && (vibrateWhenRingingSetting == DO_VIBRATION_FOR_CALLS);
+    }
+
+    /**
+     * Obtains the value for dialpad/DTMF tones. The default value is true.
+     */
+    private boolean shouldPlayDtmfTone() {
+        int dtmfToneSetting = Settings.System.getInt(getActivity().getContentResolver(),
+                Settings.System.DTMF_TONE_WHEN_DIALING,
+                PLAY_DTMF_TONE);
+        return dtmfToneSetting == PLAY_DTMF_TONE;
+    }
+
+    /**
+     * Whether the device hardware has a vibrator.
+     */
+    private boolean hasVibrator() {
+        Vibrator vibrator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
+        return vibrator != null && vibrator.hasVibrator();
+    }
+
+    private boolean shouldHideCarrierSettings() {
+        CarrierConfigManager configManager = (CarrierConfigManager) getActivity().getSystemService(
+                Context.CARRIER_CONFIG_SERVICE);
+        return configManager.getConfig().getBoolean(
+                CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL);
+    }
+}
diff --git a/src/com/android/dialer/util/AppCompatConstants.java b/src/com/android/dialer/util/AppCompatConstants.java
new file mode 100644
index 0000000..0bb78df
--- /dev/null
+++ b/src/com/android/dialer/util/AppCompatConstants.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2015 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.dialer.util;
+
+import android.provider.CallLog.Calls;
+
+public final class AppCompatConstants {
+
+    public static final int CALLS_INCOMING_TYPE = Calls.INCOMING_TYPE;
+    public static final int CALLS_OUTGOING_TYPE = Calls.OUTGOING_TYPE;
+    public static final int CALLS_MISSED_TYPE = Calls.MISSED_TYPE;
+    public static final int CALLS_VOICEMAIL_TYPE = Calls.VOICEMAIL_TYPE;
+    // Added to android.provider.CallLog.Calls in N+.
+    public static final int CALLS_REJECTED_TYPE = 5;
+    // Added to android.provider.CallLog.Calls in N+.
+    public static final int CALLS_BLOCKED_TYPE = 6;
+    // Added to android.provider.CallLog.Calls in N+.
+    public static final String POST_DIAL_DIGITS = "post_dial_digits";
+}
diff --git a/src/com/android/dialer/util/AsyncTaskExecutor.java b/src/com/android/dialer/util/AsyncTaskExecutor.java
new file mode 100644
index 0000000..ca09f08
--- /dev/null
+++ b/src/com/android/dialer/util/AsyncTaskExecutor.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.util;
+
+import android.os.AsyncTask;
+
+import java.util.concurrent.Executor;
+
+/**
+ * Interface used to submit {@link AsyncTask} objects to run in the background.
+ * <p>
+ * This interface has a direct parallel with the {@link Executor} interface. It exists to decouple
+ * the mechanics of AsyncTask submission from the description of how that AsyncTask will execute.
+ * <p>
+ * One immediate benefit of this approach is that testing becomes much easier, since it is easy to
+ * introduce a mock or fake AsyncTaskExecutor in unit/integration tests, and thus inspect which
+ * tasks have been submitted and control their execution in an orderly manner.
+ * <p>
+ * Another benefit in due course will be the management of the submitted tasks. An extension to this
+ * interface is planned to allow Activities to easily cancel all the submitted tasks that are still
+ * pending in the onDestroy() method of the Activity.
+ */
+public interface AsyncTaskExecutor {
+    /**
+     * Executes the given AsyncTask with the default Executor.
+     * <p>
+     * This method <b>must only be called from the ui thread</b>.
+     * <p>
+     * The identifier supplied is any Object that can be used to identify the task later. Most
+     * commonly this will be an enum which the tests can also refer to. {@code null} is also
+     * accepted, though of course this won't help in identifying the task later.
+     */
+    <T> AsyncTask<T, ?, ?> submit(Object identifier, AsyncTask<T, ?, ?> task, T... params);
+}
diff --git a/src/com/android/dialer/util/AsyncTaskExecutors.java b/src/com/android/dialer/util/AsyncTaskExecutors.java
new file mode 100644
index 0000000..a59af3e
--- /dev/null
+++ b/src/com/android/dialer/util/AsyncTaskExecutors.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.util;
+
+import android.os.AsyncTask;
+import android.os.Looper;
+
+import com.android.contacts.common.testing.NeededForTesting;
+import com.google.common.base.Preconditions;
+
+import java.util.concurrent.Executor;
+
+/**
+ * Factory methods for creating AsyncTaskExecutors.
+ * <p>
+ * All of the factory methods on this class check first to see if you have set a static
+ * {@link AsyncTaskExecutorFactory} set through the
+ * {@link #setFactoryForTest(AsyncTaskExecutorFactory)} method, and if so delegate to that instead,
+ * which is one way of injecting dependencies for testing classes whose construction cannot be
+ * controlled such as {@link android.app.Activity}.
+ */
+public final class AsyncTaskExecutors {
+    /**
+     * A single instance of the {@link AsyncTaskExecutorFactory}, to which we delegate if it is
+     * non-null, for injecting when testing.
+     */
+    private static AsyncTaskExecutorFactory mInjectedAsyncTaskExecutorFactory = null;
+
+    /**
+     * Creates an AsyncTaskExecutor that submits tasks to run with
+     * {@link AsyncTask#SERIAL_EXECUTOR}.
+     */
+    public static AsyncTaskExecutor createAsyncTaskExecutor() {
+        synchronized (AsyncTaskExecutors.class) {
+            if (mInjectedAsyncTaskExecutorFactory != null) {
+                return mInjectedAsyncTaskExecutorFactory.createAsyncTaskExeuctor();
+            }
+            return new SimpleAsyncTaskExecutor(AsyncTask.SERIAL_EXECUTOR);
+        }
+    }
+
+    /**
+     * Creates an AsyncTaskExecutor that submits tasks to run with
+     * {@link AsyncTask#THREAD_POOL_EXECUTOR}.
+     */
+    public static AsyncTaskExecutor createThreadPoolExecutor() {
+        synchronized (AsyncTaskExecutors.class) {
+            if (mInjectedAsyncTaskExecutorFactory != null) {
+                return mInjectedAsyncTaskExecutorFactory.createAsyncTaskExeuctor();
+            }
+            return new SimpleAsyncTaskExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+        }
+    }
+
+    /** Interface for creating AsyncTaskExecutor objects. */
+    public interface AsyncTaskExecutorFactory {
+        AsyncTaskExecutor createAsyncTaskExeuctor();
+    }
+
+    @NeededForTesting
+    public static void setFactoryForTest(AsyncTaskExecutorFactory factory) {
+        synchronized (AsyncTaskExecutors.class) {
+            mInjectedAsyncTaskExecutorFactory = factory;
+        }
+    }
+
+    public static void checkCalledFromUiThread() {
+        Preconditions.checkState(Thread.currentThread() == Looper.getMainLooper().getThread(),
+                "submit method must be called from ui thread, was: " + Thread.currentThread());
+    }
+
+    private static class SimpleAsyncTaskExecutor implements AsyncTaskExecutor {
+        private final Executor mExecutor;
+
+        public SimpleAsyncTaskExecutor(Executor executor) {
+            mExecutor = executor;
+        }
+
+        @Override
+        public <T> AsyncTask<T, ?, ?> submit(Object identifer, AsyncTask<T, ?, ?> task,
+                T... params) {
+            checkCalledFromUiThread();
+            return task.executeOnExecutor(mExecutor, params);
+        }
+    }
+}
diff --git a/src/com/android/dialer/util/DialerUtils.java b/src/com/android/dialer/util/DialerUtils.java
new file mode 100644
index 0000000..95d6a81
--- /dev/null
+++ b/src/com/android/dialer/util/DialerUtils.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2014 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.dialer.util;
+
+import android.app.Activity;
+import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.graphics.Point;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.Telephony;
+import android.telecom.TelecomManager;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Toast;
+
+import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.interactions.TouchPointManager;
+import com.android.dialer.R;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * General purpose utility methods for the Dialer.
+ */
+public class DialerUtils {
+
+    /**
+     * Attempts to start an activity and displays a toast with the default error message if the
+     * activity is not found, instead of throwing an exception.
+     *
+     * @param context to start the activity with.
+     * @param intent to start the activity with.
+     */
+    public static void startActivityWithErrorToast(Context context, Intent intent) {
+        startActivityWithErrorToast(context, intent, R.string.activity_not_available);
+    }
+
+    /**
+     * Attempts to start an activity and displays a toast with a provided error message if the
+     * activity is not found, instead of throwing an exception.
+     *
+     * @param context to start the activity with.
+     * @param intent to start the activity with.
+     * @param msgId Resource ID of the string to display in an error message if the activity is
+     *              not found.
+     */
+    public static void startActivityWithErrorToast(Context context, Intent intent, int msgId) {
+        try {
+            if ((IntentUtil.CALL_ACTION.equals(intent.getAction())
+                            && context instanceof Activity)) {
+                // All dialer-initiated calls should pass the touch point to the InCallUI
+                Point touchPoint = TouchPointManager.getInstance().getPoint();
+                if (touchPoint.x != 0 || touchPoint.y != 0) {
+                    Bundle extras;
+                    // Make sure to not accidentally clobber any existing extras
+                    if (intent.hasExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS)) {
+                        extras = intent.getParcelableExtra(
+                                TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS);
+                    } else {
+                        extras = new Bundle();
+                    }
+                    extras.putParcelable(TouchPointManager.TOUCH_POINT, touchPoint);
+                    intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras);
+                }
+
+                final boolean hasCallPermission = TelecomUtil.placeCall((Activity) context, intent);
+                if (!hasCallPermission) {
+                    // TODO: Make calling activity show request permission dialog and handle
+                    // callback results appropriately.
+                    Toast.makeText(context, "Cannot place call without Phone permission",
+                            Toast.LENGTH_SHORT);
+                }
+            } else {
+                context.startActivity(intent);
+            }
+        } catch (ActivityNotFoundException e) {
+            Toast.makeText(context, msgId, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /**
+     * Returns the component name to use in order to send an SMS using the default SMS application,
+     * or null if none exists.
+     */
+    public static ComponentName getSmsComponent(Context context) {
+        String smsPackage = Telephony.Sms.getDefaultSmsPackage(context);
+        if (smsPackage != null) {
+            final PackageManager packageManager = context.getPackageManager();
+            final Intent intent = new Intent(Intent.ACTION_SENDTO,
+                    Uri.fromParts(ContactsUtils.SCHEME_SMSTO, "", null));
+            final List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent, 0);
+            for (ResolveInfo resolveInfo : resolveInfos) {
+                if (smsPackage.equals(resolveInfo.activityInfo.packageName)) {
+                    return new ComponentName(smsPackage, resolveInfo.activityInfo.name);
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Closes an {@link AutoCloseable}, silently ignoring any checked exceptions. Does nothing if
+     * null.
+     *
+     * @param closeable to close.
+     */
+    public static void closeQuietly(AutoCloseable closeable) {
+        if (closeable != null) {
+            try {
+                closeable.close();
+            } catch (RuntimeException rethrown) {
+                throw rethrown;
+            } catch (Exception ignored) {
+            }
+        }
+    }
+
+    /**
+     * Joins a list of {@link CharSequence} into a single {@link CharSequence} seperated by a
+     * localized delimiter such as ", ".
+     *
+     * @param resources Resources used to get list delimiter.
+     * @param list List of char sequences to join.
+     * @return Joined char sequences.
+     */
+    public static CharSequence join(Resources resources, Iterable<CharSequence> list) {
+        StringBuilder sb = new StringBuilder();
+        final BidiFormatter formatter = BidiFormatter.getInstance();
+        final CharSequence separator = resources.getString(R.string.list_delimeter);
+
+        Iterator<CharSequence> itr = list.iterator();
+        boolean firstTime = true;
+        while (itr.hasNext()) {
+            if (firstTime) {
+                firstTime = false;
+            } else {
+                sb.append(separator);
+            }
+            // Unicode wrap the elements of the list to respect RTL for individual strings.
+            sb.append(formatter.unicodeWrap(
+                    itr.next().toString(), TextDirectionHeuristics.FIRSTSTRONG_LTR));
+        }
+
+        // Unicode wrap the joined value, to respect locale's RTL ordering for the whole list.
+        return formatter.unicodeWrap(sb.toString());
+    }
+
+    /**
+     * @return True if the application is currently in RTL mode.
+     */
+    public static boolean isRtl() {
+        return TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) ==
+            View.LAYOUT_DIRECTION_RTL;
+    }
+
+    public static void showInputMethod(View view) {
+        final InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(
+                Context.INPUT_METHOD_SERVICE);
+        if (imm != null) {
+            imm.showSoftInput(view, 0);
+        }
+    }
+
+    public static void hideInputMethod(View view) {
+        final InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(
+                Context.INPUT_METHOD_SERVICE);
+        if (imm != null) {
+            imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
+        }
+    }
+}
diff --git a/src/com/android/dialer/util/EmptyLoader.java b/src/com/android/dialer/util/EmptyLoader.java
new file mode 100644
index 0000000..dd4c0a3
--- /dev/null
+++ b/src/com/android/dialer/util/EmptyLoader.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.util;
+
+import android.app.LoaderManager.LoaderCallbacks;
+import android.content.Context;
+import android.content.Loader;
+import android.os.Bundle;
+
+/**
+ * A {@link Loader} only used to make use of the {@link android.app.Fragment#setStartDeferred}
+ * feature from an old-style fragment which doesn't use {@link Loader}s to load data.
+ *
+ * This loader never delivers results.  A caller fragment must destroy it when deferred fragments
+ * should be started.
+ */
+public class EmptyLoader extends Loader<Object> {
+    public EmptyLoader(Context context) {
+        super(context);
+    }
+
+    /**
+     * {@link LoaderCallbacks} which just generates {@link EmptyLoader}.  {@link #onLoadFinished}
+     * and {@link #onLoaderReset} are no-op.
+     */
+    public static class Callback implements LoaderCallbacks<Object> {
+        private final Context mContext;
+
+        public Callback(Context context) {
+            mContext = context.getApplicationContext();
+        }
+
+        @Override
+        public Loader<Object> onCreateLoader(int id, Bundle args) {
+            return new EmptyLoader(mContext);
+        }
+
+        @Override
+        public void onLoadFinished(Loader<Object> loader, Object data) {
+        }
+
+        @Override
+        public void onLoaderReset(Loader<Object> loader) {
+        }
+    }
+}
diff --git a/src/com/android/dialer/util/ExpirableCache.java b/src/com/android/dialer/util/ExpirableCache.java
new file mode 100644
index 0000000..00ebd16
--- /dev/null
+++ b/src/com/android/dialer/util/ExpirableCache.java
@@ -0,0 +1,266 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.util;
+
+import android.util.LruCache;
+
+import com.android.contacts.common.testing.NeededForTesting;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.annotation.concurrent.Immutable;
+import javax.annotation.concurrent.ThreadSafe;
+
+/**
+ * An LRU cache in which all items can be marked as expired at a given time and it is possible to
+ * query whether a particular cached value is expired or not.
+ * <p>
+ * A typical use case for this is caching of values which are expensive to compute but which are
+ * still useful when out of date.
+ * <p>
+ * Consider a cache for contact information:
+ * <pre>{@code
+ *     private ExpirableCache<String, Contact> mContactCache;}</pre>
+ * which stores the contact information for a given phone number.
+ * <p>
+ * When we need to store contact information for a given phone number, we can look up the info in
+ * the cache:
+ * <pre>{@code
+ *     CachedValue<Contact> cachedContact = mContactCache.getCachedValue(phoneNumber);
+ * }</pre>
+ * We might also want to fetch the contact information again if the item is expired.
+ * <pre>
+ *     if (cachedContact.isExpired()) {
+ *         fetchContactForNumber(phoneNumber,
+ *                 new FetchListener() {
+ *                     &#64;Override
+ *                     public void onFetched(Contact contact) {
+ *                         mContactCache.put(phoneNumber, contact);
+ *                     }
+ *                 });
+ *     }</pre>
+ * and insert it back into the cache when the fetch completes.
+ * <p>
+ * At a certain point we want to expire the content of the cache because we know the content may
+ * no longer be up-to-date, for instance, when resuming the activity this is shown into:
+ * <pre>
+ *     &#64;Override
+ *     protected onResume() {
+ *         // We were paused for some time, the cached value might no longer be up to date.
+ *         mContactCache.expireAll();
+ *         super.onResume();
+ *     }
+ * </pre>
+ * The values will be still available from the cache, but they will be expired.
+ * <p>
+ * If interested only in the value itself, not whether it is expired or not, one should use the
+ * {@link #getPossiblyExpired(Object)} method. If interested only in non-expired values, one should
+ * use the {@link #get(Object)} method instead.
+ * <p>
+ * This class wraps around an {@link LruCache} instance: it follows the {@link LruCache} behavior
+ * for evicting items when the cache is full. It is possible to supply your own subclass of LruCache
+ * by using the {@link #create(LruCache)} method, which can define a custom expiration policy.
+ * Since the underlying cache maps keys to cached values it can determine which items are expired
+ * and which are not, allowing for an implementation that evicts expired items before non expired
+ * ones.
+ * <p>
+ * This class is thread-safe.
+ *
+ * @param <K> the type of the keys
+ * @param <V> the type of the values
+ */
+@ThreadSafe
+public class ExpirableCache<K, V> {
+    /**
+     * A cached value stored inside the cache.
+     * <p>
+     * It provides access to the value stored in the cache but also allows to check whether the
+     * value is expired.
+     *
+     * @param <V> the type of value stored in the cache
+     */
+    public interface CachedValue<V> {
+        /** Returns the value stored in the cache for a given key. */
+        public V getValue();
+
+        /**
+         * Checks whether the value, while still being present in the cache, is expired.
+         *
+         * @return true if the value is expired
+         */
+        public boolean isExpired();
+    }
+
+    /**
+     * Cached values storing the generation at which they were added.
+     */
+    @Immutable
+    private static class GenerationalCachedValue<V> implements ExpirableCache.CachedValue<V> {
+        /** The value stored in the cache. */
+        public final V mValue;
+        /** The generation at which the value was added to the cache. */
+        private final int mGeneration;
+        /** The atomic integer storing the current generation of the cache it belongs to. */
+        private final AtomicInteger mCacheGeneration;
+
+        /**
+         * @param cacheGeneration the atomic integer storing the generation of the cache in which
+         *        this value will be stored
+         */
+        public GenerationalCachedValue(V value, AtomicInteger cacheGeneration) {
+            mValue = value;
+            mCacheGeneration = cacheGeneration;
+            // Snapshot the current generation.
+            mGeneration = mCacheGeneration.get();
+        }
+
+        @Override
+        public V getValue() {
+            return mValue;
+        }
+
+        @Override
+        public boolean isExpired() {
+            return mGeneration != mCacheGeneration.get();
+        }
+    }
+
+    /** The underlying cache used to stored the cached values. */
+    private LruCache<K, CachedValue<V>> mCache;
+
+    /**
+     * The current generation of items added to the cache.
+     * <p>
+     * Items in the cache can belong to a previous generation, but in that case they would be
+     * expired.
+     *
+     * @see ExpirableCache.CachedValue#isExpired()
+     */
+    private final AtomicInteger mGeneration;
+
+    private ExpirableCache(LruCache<K, CachedValue<V>> cache) {
+        mCache = cache;
+        mGeneration = new AtomicInteger(0);
+    }
+
+    /**
+     * Returns the cached value for the given key, or null if no value exists.
+     * <p>
+     * The cached value gives access both to the value associated with the key and whether it is
+     * expired or not.
+     * <p>
+     * If not interested in whether the value is expired, use {@link #getPossiblyExpired(Object)}
+     * instead.
+     * <p>
+     * If only wants values that are not expired, use {@link #get(Object)} instead.
+     *
+     * @param key the key to look up
+     */
+    public CachedValue<V> getCachedValue(K key) {
+        return mCache.get(key);
+    }
+
+    /**
+     * Returns the value for the given key, or null if no value exists.
+     * <p>
+     * When using this method, it is not possible to determine whether the value is expired or not.
+     * Use {@link #getCachedValue(Object)} to achieve that instead. However, if using
+     * {@link #getCachedValue(Object)} to determine if an item is expired, one should use the item
+     * within the {@link CachedValue} and not call {@link #getPossiblyExpired(Object)} to get the
+     * value afterwards, since that is not guaranteed to return the same value or that the newly
+     * returned value is in the same state.
+     *
+     * @param key the key to look up
+     */
+    public V getPossiblyExpired(K key) {
+        CachedValue<V> cachedValue = getCachedValue(key);
+        return cachedValue == null ? null : cachedValue.getValue();
+    }
+
+    /**
+     * Returns the value for the given key only if it is not expired, or null if no value exists or
+     * is expired.
+     * <p>
+     * This method will return null if either there is no value associated with this key or if the
+     * associated value is expired.
+     *
+     * @param key the key to look up
+     */
+    @NeededForTesting
+    public V get(K key) {
+        CachedValue<V> cachedValue = getCachedValue(key);
+        return cachedValue == null || cachedValue.isExpired() ? null : cachedValue.getValue();
+    }
+
+    /**
+     * Puts an item in the cache.
+     * <p>
+     * Newly added item will not be expired until {@link #expireAll()} is next called.
+     *
+     * @param key the key to look up
+     * @param value the value to associate with the key
+     */
+    public void put(K key, V value) {
+        mCache.put(key, newCachedValue(value));
+    }
+
+    /**
+     * Mark all items currently in the cache as expired.
+     * <p>
+     * Newly added items after this call will be marked as not expired.
+     * <p>
+     * Expiring the items in the cache does not imply they will be evicted.
+     */
+    public void expireAll() {
+        mGeneration.incrementAndGet();
+    }
+
+    /**
+     * Creates a new {@link CachedValue} instance to be stored in this cache.
+     * <p>
+     * Implementation of {@link LruCache#create(K)} can use this method to create a new entry.
+     */
+    public CachedValue<V> newCachedValue(V value) {
+        return new GenerationalCachedValue<V>(value, mGeneration);
+    }
+
+    /**
+     * Creates a new {@link ExpirableCache} that wraps the given {@link LruCache}.
+     * <p>
+     * The created cache takes ownership of the cache passed in as an argument.
+     *
+     * @param <K> the type of the keys
+     * @param <V> the type of the values
+     * @param cache the cache to store the value in
+     * @return the newly created expirable cache
+     * @throws IllegalArgumentException if the cache is not empty
+     */
+    public static <K, V> ExpirableCache<K, V> create(LruCache<K, CachedValue<V>> cache) {
+        return new ExpirableCache<K, V>(cache);
+    }
+
+    /**
+     * Creates a new {@link ExpirableCache} with the given maximum size.
+     *
+     * @param <K> the type of the keys
+     * @param <V> the type of the values
+     * @return the newly created expirable cache
+     */
+    public static <K, V> ExpirableCache<K, V> create(int maxSize) {
+        return create(new LruCache<K, CachedValue<V>>(maxSize));
+    }
+}
diff --git a/src/com/android/dialer/util/IntentUtil.java b/src/com/android/dialer/util/IntentUtil.java
new file mode 100644
index 0000000..5a4a80b
--- /dev/null
+++ b/src/com/android/dialer/util/IntentUtil.java
@@ -0,0 +1,158 @@
+/*
+ * 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.dialer.util;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
+
+import com.android.contacts.common.CallUtil;
+
+/**
+ * Utilities for creation of intents in Dialer, such as {@link Intent#ACTION_CALL}.
+ */
+public class IntentUtil {
+
+    public static final String CALL_ACTION = Intent.ACTION_CALL;
+    private static final String SMS_URI_PREFIX = "sms:";
+    private static final int NO_PHONE_TYPE = -1;
+
+    public static final String EXTRA_CALL_INITIATION_TYPE
+            = "com.android.dialer.EXTRA_CALL_INITIATION_TYPE";
+
+    public static class CallIntentBuilder {
+        private Uri mUri;
+        private int mCallInitiationType;
+        private PhoneAccountHandle mPhoneAccountHandle;
+        private boolean mIsVideoCall = false;
+
+        public CallIntentBuilder(Uri uri) {
+            mUri = uri;
+        }
+
+        public CallIntentBuilder(String number) {
+            this(CallUtil.getCallUri(number));
+        }
+
+        public CallIntentBuilder setCallInitiationType(int initiationType) {
+            mCallInitiationType = initiationType;
+            return this;
+        }
+
+        public CallIntentBuilder setPhoneAccountHandle(PhoneAccountHandle accountHandle) {
+            mPhoneAccountHandle = accountHandle;
+            return this;
+        }
+
+        public CallIntentBuilder setIsVideoCall(boolean isVideoCall) {
+            mIsVideoCall = isVideoCall;
+            return this;
+        }
+
+        public Intent build() {
+            return getCallIntent(
+                    mUri,
+                    mPhoneAccountHandle,
+                    mIsVideoCall ? VideoProfile.STATE_BIDIRECTIONAL : VideoProfile.STATE_AUDIO_ONLY,
+                    mCallInitiationType);
+        }
+    }
+
+    /**
+     * Create a call intent that can be used to place a call.
+     *
+     * @param uri Address to place the call to.
+     * @param accountHandle {@link PhoneAccountHandle} to place the call with.
+     * @param videoState Initial video state of the call.
+     * @param callIntiationType The UI affordance the call was initiated by.
+     * @return Call intent with provided extras and data.
+     */
+    public static Intent getCallIntent(
+            Uri uri, PhoneAccountHandle accountHandle, int videoState, int callIntiationType) {
+        final Intent intent = new Intent(CALL_ACTION, uri);
+        intent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, videoState);
+
+        final Bundle b = new Bundle();
+        b.putInt(EXTRA_CALL_INITIATION_TYPE, callIntiationType);
+        intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, b);
+
+        if (accountHandle != null) {
+            intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, accountHandle);
+        }
+
+        return intent;
+    }
+
+    public static Intent getSendSmsIntent(CharSequence phoneNumber) {
+        return new Intent(Intent.ACTION_SENDTO, Uri.parse(SMS_URI_PREFIX + phoneNumber));
+    }
+
+    public static Intent getNewContactIntent() {
+        return new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
+    }
+
+    public static Intent getNewContactIntent(CharSequence phoneNumber) {
+        return getNewContactIntent(
+                null /* name */,
+                phoneNumber /* phoneNumber */,
+                NO_PHONE_TYPE);
+    }
+
+    public static Intent getNewContactIntent(
+            CharSequence name, CharSequence phoneNumber, int phoneNumberType) {
+        Intent intent = getNewContactIntent();
+        populateContactIntent(intent, name, phoneNumber, phoneNumberType);
+        return intent;
+    }
+
+    public static Intent getAddToExistingContactIntent() {
+        Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
+        intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
+        return intent;
+    }
+
+    public static Intent getAddToExistingContactIntent(CharSequence phoneNumber) {
+        return getAddToExistingContactIntent(
+                null /* name */,
+                phoneNumber /* phoneNumber */,
+                NO_PHONE_TYPE);
+    }
+
+    public static Intent getAddToExistingContactIntent(
+            CharSequence name, CharSequence phoneNumber, int phoneNumberType) {
+        Intent intent = getAddToExistingContactIntent();
+        populateContactIntent(intent, name, phoneNumber, phoneNumberType);
+        return intent;
+    }
+
+    private static void populateContactIntent(
+            Intent intent, CharSequence name, CharSequence phoneNumber, int phoneNumberType) {
+        if (phoneNumber != null) {
+            intent.putExtra(ContactsContract.Intents.Insert.PHONE, phoneNumber);
+        }
+        if (name != null) {
+            intent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+        }
+        if (phoneNumberType != NO_PHONE_TYPE) {
+            intent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, phoneNumberType);
+        }
+    }
+}
diff --git a/src/com/android/dialer/util/MoreStrings.java b/src/com/android/dialer/util/MoreStrings.java
new file mode 100644
index 0000000..68956f2
--- /dev/null
+++ b/src/com/android/dialer/util/MoreStrings.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2013 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.dialer.util;
+
+/**
+ * Static utility methods for Strings.
+ */
+public class MoreStrings {
+
+    public static String toSafeString(String value) {
+        if (value == null) {
+            return null;
+        }
+
+        // Do exactly same thing as Uri#toSafeString() does, which will enable us to compare
+        // sanitized phone numbers.
+        final StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < value.length(); i++) {
+            final char c = value.charAt(i);
+            if (c == '-' || c == '@' || c == '.') {
+                builder.append(c);
+            } else {
+                builder.append('x');
+            }
+        }
+        return builder.toString();
+    }
+
+}
diff --git a/src/com/android/dialer/util/OrientationUtil.java b/src/com/android/dialer/util/OrientationUtil.java
new file mode 100644
index 0000000..2eb2af3
--- /dev/null
+++ b/src/com/android/dialer/util/OrientationUtil.java
@@ -0,0 +1,34 @@
+/*
+ * 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.dialer.util;
+
+import android.content.Context;
+import android.content.res.Configuration;
+
+/**
+ * Static methods related to device orientation.
+ */
+public class OrientationUtil {
+
+    /**
+     * @return if the context is in landscape orientation.
+     */
+    public static boolean isLandscape(Context context) {
+        return context.getResources().getConfiguration().orientation
+                == Configuration.ORIENTATION_LANDSCAPE;
+    }
+}
diff --git a/src/com/android/dialer/util/PhoneNumberUtil.java b/src/com/android/dialer/util/PhoneNumberUtil.java
new file mode 100644
index 0000000..33f9873
--- /dev/null
+++ b/src/com/android/dialer/util/PhoneNumberUtil.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2013 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.dialer.util;
+
+import android.content.Context;
+import android.provider.CallLog;
+import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.Pair;
+
+import com.android.contacts.common.util.PhoneNumberHelper;
+import com.android.contacts.common.util.TelephonyManagerUtils;
+import com.google.common.collect.Sets;
+import com.google.i18n.phonenumbers.NumberParseException;
+import com.google.i18n.phonenumbers.Phonenumber;
+import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+public class PhoneNumberUtil {
+    private static final String TAG = "PhoneNumberUtil";
+    private static final Set<String> LEGACY_UNKNOWN_NUMBERS = Sets.newHashSet("-1", "-2", "-3");
+
+    /** Returns true if it is possible to place a call to the given number. */
+    public static boolean canPlaceCallsTo(CharSequence number, int presentation) {
+        return presentation == CallLog.Calls.PRESENTATION_ALLOWED
+            && !TextUtils.isEmpty(number) && !isLegacyUnknownNumbers(number);
+    }
+
+    /**
+     * Returns true if the given number is the number of the configured voicemail. To be able to
+     * mock-out this, it is not a static method.
+     */
+    public static boolean isVoicemailNumber(
+            Context context, PhoneAccountHandle accountHandle, CharSequence number) {
+        if (TextUtils.isEmpty(number)) {
+            return false;
+        }
+        return TelecomUtil.isVoicemailNumber(context, accountHandle, number.toString());
+    }
+
+    /**
+     * Returns true if the given number is a SIP address. To be able to mock-out this, it is not a
+     * static method.
+     */
+    public static boolean isSipNumber(CharSequence number) {
+        return number != null && PhoneNumberHelper.isUriNumber(number.toString());
+    }
+
+    public static boolean isUnknownNumberThatCanBeLookedUp(
+            Context context,
+            PhoneAccountHandle accountHandle,
+            CharSequence number,
+            int presentation) {
+        if (presentation == CallLog.Calls.PRESENTATION_UNKNOWN) {
+            return false;
+        }
+        if (presentation == CallLog.Calls.PRESENTATION_RESTRICTED) {
+            return false;
+        }
+        if (presentation == CallLog.Calls.PRESENTATION_PAYPHONE) {
+            return false;
+        }
+        if (TextUtils.isEmpty(number)) {
+            return false;
+        }
+        if (isVoicemailNumber(context, accountHandle, number)) {
+            return false;
+        }
+        if (isLegacyUnknownNumbers(number)) {
+            return false;
+        }
+        return true;
+    }
+
+    public static boolean isLegacyUnknownNumbers(CharSequence number) {
+        return number != null && LEGACY_UNKNOWN_NUMBERS.contains(number.toString());
+    }
+
+    /**
+     * @return a geographical description string for the specified number.
+     * @see com.android.i18n.phonenumbers.PhoneNumberOfflineGeocoder
+     */
+    public static String getGeoDescription(Context context, String number) {
+        Log.v(TAG, "getGeoDescription('" + pii(number) + "')...");
+
+        if (TextUtils.isEmpty(number)) {
+            return null;
+        }
+
+        com.google.i18n.phonenumbers.PhoneNumberUtil util =
+                com.google.i18n.phonenumbers.PhoneNumberUtil.getInstance();
+        PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();
+
+        Locale locale = context.getResources().getConfiguration().locale;
+        String countryIso = TelephonyManagerUtils.getCurrentCountryIso(context, locale);
+        Phonenumber.PhoneNumber pn = null;
+        try {
+            Log.v(TAG, "parsing '" + pii(number)
+                    + "' for countryIso '" + countryIso + "'...");
+            pn = util.parse(number, countryIso);
+            Log.v(TAG, "- parsed number: " + pii(pn));
+        } catch (NumberParseException e) {
+            Log.v(TAG, "getGeoDescription: NumberParseException for incoming number '" +
+                    pii(number) + "'");
+        }
+
+        if (pn != null) {
+            String description = geocoder.getDescriptionForNumber(pn, locale);
+            Log.v(TAG, "- got description: '" + description + "'");
+            return description;
+        }
+
+        return null;
+    }
+
+    private static String pii(Object pii) {
+        return com.android.incallui.Log.pii(pii);
+    }
+}
diff --git a/src/com/android/dialer/util/TelecomUtil.java b/src/com/android/dialer/util/TelecomUtil.java
new file mode 100644
index 0000000..bd201c4
--- /dev/null
+++ b/src/com/android/dialer/util/TelecomUtil.java
@@ -0,0 +1,226 @@
+/*
+ * Copyright (C) 2015 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.dialer.util;
+
+import android.Manifest;
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+import android.support.annotation.Nullable;
+import android.support.v4.content.ContextCompat;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.contacts.common.compat.CompatUtils;
+import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
+import com.android.dialer.compat.DialerCompatUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Performs permission checks before calling into TelecomManager. Each method is self-explanatory -
+ * perform the required check and return the fallback default if the permission is missing,
+ * otherwise return the value from TelecomManager.
+ *
+ */
+public class TelecomUtil {
+    private static final String TAG = "TelecomUtil";
+    private static boolean sWarningLogged = false;
+
+    public static void showInCallScreen(Context context, boolean showDialpad) {
+        if (hasReadPhoneStatePermission(context)) {
+            try {
+                getTelecomManager(context).showInCallScreen(showDialpad);
+            } catch (SecurityException e) {
+                // Just in case
+                Log.w(TAG, "TelecomManager.showInCallScreen called without permission.");
+            }
+        }
+    }
+
+    public static void silenceRinger(Context context) {
+        if (hasModifyPhoneStatePermission(context)) {
+            try {
+                TelecomManagerCompat.silenceRinger(getTelecomManager(context));
+            } catch (SecurityException e) {
+                // Just in case
+                Log.w(TAG, "TelecomManager.silenceRinger called without permission.");
+            }
+        }
+    }
+
+    public static void cancelMissedCallsNotification(Context context) {
+        if (hasModifyPhoneStatePermission(context)) {
+            try {
+                getTelecomManager(context).cancelMissedCallsNotification();
+            } catch (SecurityException e) {
+                Log.w(TAG, "TelecomManager.cancelMissedCalls called without permission.");
+            }
+        }
+    }
+
+    public static Uri getAdnUriForPhoneAccount(Context context, PhoneAccountHandle handle) {
+        if (hasModifyPhoneStatePermission(context)) {
+            try {
+                return TelecomManagerCompat.getAdnUriForPhoneAccount(
+                        getTelecomManager(context), handle);
+            } catch (SecurityException e) {
+                Log.w(TAG, "TelecomManager.getAdnUriForPhoneAccount called without permission.");
+            }
+        }
+        return null;
+    }
+
+    public static boolean handleMmi(Context context, String dialString,
+            PhoneAccountHandle handle) {
+        if (hasModifyPhoneStatePermission(context)) {
+            try {
+                return TelecomManagerCompat.handleMmi(
+                        getTelecomManager(context), dialString, handle);
+            } catch (SecurityException e) {
+                Log.w(TAG, "TelecomManager.handleMmi called without permission.");
+            }
+        }
+        return false;
+    }
+
+    @Nullable
+    public static PhoneAccountHandle getDefaultOutgoingPhoneAccount(Context context,
+            String uriScheme) {
+        if (hasReadPhoneStatePermission(context)) {
+            return TelecomManagerCompat.getDefaultOutgoingPhoneAccount(
+                    getTelecomManager(context), uriScheme);
+        }
+        return null;
+    }
+
+    public static PhoneAccount getPhoneAccount(Context context, PhoneAccountHandle handle) {
+        return TelecomManagerCompat.getPhoneAccount(getTelecomManager(context), handle);
+    }
+
+    public static List<PhoneAccountHandle> getCallCapablePhoneAccounts(Context context) {
+        if (hasReadPhoneStatePermission(context)) {
+            return TelecomManagerCompat.getCallCapablePhoneAccounts(getTelecomManager(context));
+        }
+        return new ArrayList<>();
+    }
+
+    public static boolean isInCall(Context context) {
+        if (hasReadPhoneStatePermission(context)) {
+            return getTelecomManager(context).isInCall();
+        }
+        return false;
+    }
+
+    public static boolean isVoicemailNumber(Context context, PhoneAccountHandle accountHandle,
+            String number) {
+        if (hasReadPhoneStatePermission(context)) {
+            return TelecomManagerCompat.isVoiceMailNumber(getTelecomManager(context),
+                    accountHandle, number);
+        }
+        return false;
+    }
+
+    @Nullable
+    public static String getVoicemailNumber(Context context, PhoneAccountHandle accountHandle) {
+        if (hasReadPhoneStatePermission(context)) {
+            return TelecomManagerCompat.getVoiceMailNumber(getTelecomManager(context),
+                    getTelephonyManager(context), accountHandle);
+        }
+        return null;
+    }
+
+    /**
+     * Tries to place a call using the {@link TelecomManager}.
+     *
+     * @param activity a valid activity.
+     * @param intent the call intent.
+     *
+     * @return {@code true} if we successfully attempted to place the call, {@code false} if it
+     *         failed due to a permission check.
+     */
+    public static boolean placeCall(Activity activity, Intent intent) {
+        if (hasCallPhonePermission(activity)) {
+            TelecomManagerCompat.placeCall(activity, getTelecomManager(activity), intent);
+            return true;
+        }
+        return false;
+    }
+
+    public static Uri getCallLogUri(Context context) {
+        return hasReadWriteVoicemailPermissions(context) ? Calls.CONTENT_URI_WITH_VOICEMAIL
+                : Calls.CONTENT_URI;
+    }
+
+    public static boolean hasReadWriteVoicemailPermissions(Context context) {
+        return isDefaultDialer(context)
+                || (hasPermission(context, Manifest.permission.READ_VOICEMAIL)
+                        && hasPermission(context, Manifest.permission.WRITE_VOICEMAIL));
+    }
+
+    public static boolean hasModifyPhoneStatePermission(Context context) {
+        return isDefaultDialer(context)
+                || hasPermission(context, Manifest.permission.MODIFY_PHONE_STATE);
+    }
+
+    public static boolean hasReadPhoneStatePermission(Context context) {
+        return isDefaultDialer(context)
+                || hasPermission(context, Manifest.permission.READ_PHONE_STATE);
+    }
+
+    public static boolean hasCallPhonePermission(Context context) {
+        return isDefaultDialer(context)
+                || hasPermission(context, Manifest.permission.CALL_PHONE);
+    }
+
+    private static boolean hasPermission(Context context, String permission) {
+        return ContextCompat.checkSelfPermission(context, permission)
+                == PackageManager.PERMISSION_GRANTED;
+    }
+
+    public static boolean isDefaultDialer(Context context) {
+        final boolean result = TextUtils.equals(context.getPackageName(),
+                TelecomManagerCompat.getDefaultDialerPackage(getTelecomManager(context)));
+        if (result) {
+            sWarningLogged = false;
+        } else {
+            if (!sWarningLogged) {
+                // Log only once to prevent spam.
+                Log.w(TAG, "Dialer is not currently set to be default dialer");
+                sWarningLogged = true;
+            }
+        }
+        return result;
+    }
+
+    private static TelecomManager getTelecomManager(Context context) {
+        return (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
+    }
+
+    private static TelephonyManager getTelephonyManager(Context context) {
+        return (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+    }
+}
diff --git a/src/com/android/dialer/voicemail/VisualVoicemailEnabledChecker.java b/src/com/android/dialer/voicemail/VisualVoicemailEnabledChecker.java
new file mode 100644
index 0000000..3134b14
--- /dev/null
+++ b/src/com/android/dialer/voicemail/VisualVoicemailEnabledChecker.java
@@ -0,0 +1,98 @@
+package com.android.dialer.voicemail;
+
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.preference.PreferenceManager;
+import android.support.annotation.Nullable;
+
+import com.android.dialer.calllog.CallLogQueryHandler;
+
+/**
+ * Helper class to check whether visual voicemail is enabled.
+ *
+ * Call isVisualVoicemailEnabled() to retrieve the result.
+ *
+ * The result is cached and saved in a SharedPreferences, stored as a boolean in
+ * PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER. Every time a new instance is created, it will try to
+ * restore the cached result from the SharedPreferences.
+ *
+ * Call asyncUpdate() to make a CallLogQuery to check the actual status. This is a async call so
+ * isVisualVoicemailEnabled() will not be affected immediately.
+ *
+ * If the status has changed as a result of asyncUpdate(),
+ * Callback.onVisualVoicemailEnabledStatusChanged() will be called with the new value.
+ */
+public class VisualVoicemailEnabledChecker implements CallLogQueryHandler.Listener {
+
+    public static final String PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER =
+            "has_active_voicemail_provider";
+    private SharedPreferences mPrefs;
+    private boolean mHasActiveVoicemailProvider;
+    private CallLogQueryHandler mCallLogQueryHandler;
+    private VoicemailStatusHelper mVoicemailStatusHelper;
+    private Context mContext;
+
+    public interface Callback {
+
+        /**
+         * Callback to notify enabled status has changed to the @param newValue
+         */
+        void onVisualVoicemailEnabledStatusChanged(boolean newValue);
+    }
+
+    private Callback mCallback;
+
+    public VisualVoicemailEnabledChecker(Context context, @Nullable Callback callback) {
+        mContext = context;
+        mCallback = callback;
+        mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
+        mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
+        mHasActiveVoicemailProvider = mPrefs.getBoolean(PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER,
+                false);
+    }
+
+    /**
+     * @return whether visual voicemail is enabled. Result is cached, call asyncUpdate() to
+     * update the result.
+     */
+    public boolean isVisualVoicemailEnabled() {
+        return mHasActiveVoicemailProvider;
+    }
+
+    /**
+     * Perform an async query into the system to check the status of visual voicemail.
+     * If the status has changed, Callback.onVisualVoicemailEnabledStatusChanged() will be called.
+     */
+    public void asyncUpdate() {
+        mCallLogQueryHandler =
+                new CallLogQueryHandler(mContext, mContext.getContentResolver(), this);
+        mCallLogQueryHandler.fetchVoicemailStatus();
+    }
+
+    @Override
+    public void onVoicemailStatusFetched(Cursor statusCursor) {
+        boolean hasActiveVoicemailProvider =
+                mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) > 0;
+        if (hasActiveVoicemailProvider != mHasActiveVoicemailProvider) {
+            mHasActiveVoicemailProvider = hasActiveVoicemailProvider;
+            mPrefs.edit().putBoolean(PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER,
+                    mHasActiveVoicemailProvider);
+            if (mCallback != null) {
+                mCallback.onVisualVoicemailEnabledStatusChanged(mHasActiveVoicemailProvider);
+            }
+        }
+    }
+
+    @Override
+    public void onVoicemailUnreadCountFetched(Cursor cursor) {
+        // Do nothing
+    }
+
+    @Override
+    public boolean onCallsFetched(Cursor combinedCursor) {
+        // Do nothing
+        return false;
+    }
+}
diff --git a/src/com/android/dialer/voicemail/VoicemailAudioManager.java b/src/com/android/dialer/voicemail/VoicemailAudioManager.java
new file mode 100644
index 0000000..712b20b
--- /dev/null
+++ b/src/com/android/dialer/voicemail/VoicemailAudioManager.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2015 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.dialer.voicemail;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.AudioManager.OnAudioFocusChangeListener;
+import android.util.Log;
+
+import com.android.dialer.compat.CallAudioStateCompat;
+
+import java.util.concurrent.RejectedExecutionException;
+
+/**
+ * This class manages all audio changes for voicemail playback.
+ */
+final class VoicemailAudioManager implements OnAudioFocusChangeListener,
+        WiredHeadsetManager.Listener {
+    private static final String TAG = VoicemailAudioManager.class.getSimpleName();
+
+    public static final int PLAYBACK_STREAM = AudioManager.STREAM_VOICE_CALL;
+
+    private AudioManager mAudioManager;
+    private VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
+    private WiredHeadsetManager mWiredHeadsetManager;
+    private boolean mWasSpeakerOn;
+    private CallAudioStateCompat mCallAudioState;
+
+    public VoicemailAudioManager(Context context,
+            VoicemailPlaybackPresenter voicemailPlaybackPresenter) {
+        mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        mVoicemailPlaybackPresenter = voicemailPlaybackPresenter;
+        mWiredHeadsetManager = new WiredHeadsetManager(context);
+        mWiredHeadsetManager.setListener(this);
+
+        mCallAudioState = getInitialAudioState();
+        Log.i(TAG, "Initial audioState = " + mCallAudioState);
+    }
+
+    public void requestAudioFocus() {
+        int result = mAudioManager.requestAudioFocus(
+                this,
+                PLAYBACK_STREAM,
+                AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+        if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
+            throw new RejectedExecutionException("Could not capture audio focus.");
+        }
+    }
+
+    public void abandonAudioFocus() {
+        mAudioManager.abandonAudioFocus(this);
+    }
+
+    @Override
+    public void onAudioFocusChange(int focusChange) {
+        Log.d(TAG, "onAudioFocusChange: focusChange=" + focusChange);
+        mVoicemailPlaybackPresenter.onAudioFocusChange(focusChange == AudioManager.AUDIOFOCUS_GAIN);
+    }
+
+    @Override
+    public void onWiredHeadsetPluggedInChanged(boolean oldIsPluggedIn, boolean newIsPluggedIn) {
+        Log.i(TAG, "wired headset was plugged in changed: " + oldIsPluggedIn
+                + " -> "+ newIsPluggedIn);
+
+        if (oldIsPluggedIn == newIsPluggedIn) {
+            return;
+        }
+
+        int newRoute = mCallAudioState.getRoute();  // start out with existing route
+        if (newIsPluggedIn) {
+            newRoute = CallAudioStateCompat.ROUTE_WIRED_HEADSET;
+        } else {
+            if (mWasSpeakerOn) {
+                newRoute = CallAudioStateCompat.ROUTE_SPEAKER;
+            } else {
+                newRoute = CallAudioStateCompat.ROUTE_EARPIECE;
+            }
+        }
+
+        mVoicemailPlaybackPresenter.setSpeakerphoneOn(newRoute == CallAudioStateCompat.ROUTE_SPEAKER);
+
+        // We need to call this every time even if we do not change the route because the supported
+        // routes changed either to include or not include WIRED_HEADSET.
+        setSystemAudioState(
+                new CallAudioStateCompat(false /* muted */, newRoute, calculateSupportedRoutes()));
+    }
+
+    public void setSpeakerphoneOn(boolean on) {
+        setAudioRoute(on ? CallAudioStateCompat.ROUTE_SPEAKER
+                : CallAudioStateCompat.ROUTE_WIRED_OR_EARPIECE);
+    }
+
+    public boolean isWiredHeadsetPluggedIn() {
+        return mWiredHeadsetManager.isPluggedIn();
+    }
+
+    public void registerReceivers() {
+        // Receivers is plural because we expect to add bluetooth support.
+        mWiredHeadsetManager.registerReceiver();
+    }
+
+    public void unregisterReceivers() {
+        mWiredHeadsetManager.unregisterReceiver();
+    }
+
+    /**
+     * Change the audio route, for example from earpiece to speakerphone.
+     *
+     * @param route The new audio route to use. See {@link CallAudioStateCompat}.
+     */
+    void setAudioRoute(int route) {
+        Log.v(TAG, "setAudioRoute, route: " + CallAudioStateCompat.audioRouteToString(route));
+
+        // Change ROUTE_WIRED_OR_EARPIECE to a single entry.
+        int newRoute = selectWiredOrEarpiece(route, mCallAudioState.getSupportedRouteMask());
+
+        // If route is unsupported, do nothing.
+        if ((mCallAudioState.getSupportedRouteMask() | newRoute) == 0) {
+            Log.w(TAG, "Asking to set to a route that is unsupported: " + newRoute);
+            return;
+        }
+
+        if (mCallAudioState.getRoute() != newRoute) {
+            // Remember the new speaker state so it can be restored when the user plugs and unplugs
+            // a headset.
+            mWasSpeakerOn = newRoute == CallAudioStateCompat.ROUTE_SPEAKER;
+            setSystemAudioState(new CallAudioStateCompat(false /* muted */, newRoute,
+                    mCallAudioState.getSupportedRouteMask()));
+        }
+    }
+
+    private CallAudioStateCompat getInitialAudioState() {
+        int supportedRouteMask = calculateSupportedRoutes();
+        int route = selectWiredOrEarpiece(CallAudioStateCompat.ROUTE_WIRED_OR_EARPIECE,
+                supportedRouteMask);
+        return new CallAudioStateCompat(false /* muted */, route, supportedRouteMask);
+    }
+
+    private int calculateSupportedRoutes() {
+        int routeMask = CallAudioStateCompat.ROUTE_SPEAKER;
+        if (mWiredHeadsetManager.isPluggedIn()) {
+            routeMask |= CallAudioStateCompat.ROUTE_WIRED_HEADSET;
+        } else {
+            routeMask |= CallAudioStateCompat.ROUTE_EARPIECE;
+        }
+        return routeMask;
+    }
+
+    private int selectWiredOrEarpiece(int route, int supportedRouteMask) {
+        // Since they are mutually exclusive and one is ALWAYS valid, we allow a special input of
+        // ROUTE_WIRED_OR_EARPIECE so that callers don't have to make a call to check which is
+        // supported before calling setAudioRoute.
+        if (route == CallAudioStateCompat.ROUTE_WIRED_OR_EARPIECE) {
+            route = CallAudioStateCompat.ROUTE_WIRED_OR_EARPIECE & supportedRouteMask;
+            if (route == 0) {
+                Log.wtf(TAG, "One of wired headset or earpiece should always be valid.");
+                // assume earpiece in this case.
+                route = CallAudioStateCompat.ROUTE_EARPIECE;
+            }
+        }
+        return route;
+    }
+
+    private void setSystemAudioState(CallAudioStateCompat callAudioState) {
+        CallAudioStateCompat oldAudioState = mCallAudioState;
+        mCallAudioState = callAudioState;
+
+        Log.i(TAG, "setSystemAudioState: changing from " + oldAudioState + " to "
+                + mCallAudioState);
+
+        // Audio route.
+        if (mCallAudioState.getRoute() == CallAudioStateCompat.ROUTE_SPEAKER) {
+            turnOnSpeaker(true);
+        } else if (mCallAudioState.getRoute() == CallAudioStateCompat.ROUTE_EARPIECE ||
+                mCallAudioState.getRoute() == CallAudioStateCompat.ROUTE_WIRED_HEADSET) {
+            // Just handle turning off the speaker, the system will handle switching between wired
+            // headset and earpiece.
+            turnOnSpeaker(false);
+        }
+    }
+
+    private void turnOnSpeaker(boolean on) {
+        if (mAudioManager.isSpeakerphoneOn() != on) {
+            Log.i(TAG, "turning speaker phone on: " + on);
+            mAudioManager.setSpeakerphoneOn(on);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
new file mode 100644
index 0000000..7d72028
--- /dev/null
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
@@ -0,0 +1,431 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.voicemail;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.media.MediaPlayer;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.PowerManager;
+import android.provider.VoicemailContract;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.support.design.widget.Snackbar;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageButton;
+import android.widget.LinearLayout;
+import android.widget.SeekBar;
+import android.widget.SeekBar.OnSeekBarChangeListener;
+import android.widget.TextView;
+
+import com.android.common.io.MoreCloseables;
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.R;
+import com.android.dialer.calllog.CallLogAsyncTaskUtil;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Preconditions;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.ScheduledExecutorService;
+
+import javax.annotation.concurrent.GuardedBy;
+import javax.annotation.concurrent.NotThreadSafe;
+import javax.annotation.concurrent.ThreadSafe;
+
+/**
+ * Displays and plays a single voicemail. See {@link VoicemailPlaybackPresenter} for
+ * details on the voicemail playback implementation.
+ *
+ * This class is not thread-safe, it is thread-confined. All calls to all public
+ * methods on this class are expected to come from the main ui thread.
+ */
+@NotThreadSafe
+public class VoicemailPlaybackLayout extends LinearLayout
+        implements VoicemailPlaybackPresenter.PlaybackView,
+        CallLogAsyncTaskUtil.CallLogAsyncTaskListener {
+    private static final String TAG = VoicemailPlaybackLayout.class.getSimpleName();
+    private static final int VOICEMAIL_DELETE_DELAY_MS = 3000;
+
+    /**
+     * Controls the animation of the playback slider.
+     */
+    @ThreadSafe
+    private final class PositionUpdater implements Runnable {
+
+        /** Update rate for the slider, 30fps. */
+        private static final int SLIDER_UPDATE_PERIOD_MILLIS = 1000 / 30;
+
+        private int mDurationMs;
+        private final ScheduledExecutorService mExecutorService;
+        private final Object mLock = new Object();
+        @GuardedBy("mLock") private ScheduledFuture<?> mScheduledFuture;
+
+        private Runnable mUpdateClipPositionRunnable = new Runnable() {
+            @Override
+            public void run() {
+                int currentPositionMs = 0;
+                synchronized (mLock) {
+                    if (mScheduledFuture == null || mPresenter == null) {
+                        // This task has been canceled. Just stop now.
+                        return;
+                    }
+                    currentPositionMs = mPresenter.getMediaPlayerPosition();
+                }
+                setClipPosition(currentPositionMs, mDurationMs);
+            }
+        };
+
+        public PositionUpdater(int durationMs, ScheduledExecutorService executorService) {
+            mDurationMs = durationMs;
+            mExecutorService = executorService;
+        }
+
+        @Override
+        public void run() {
+            post(mUpdateClipPositionRunnable);
+        }
+
+        public void startUpdating() {
+            synchronized (mLock) {
+                cancelPendingRunnables();
+                mScheduledFuture = mExecutorService.scheduleAtFixedRate(
+                        this, 0, SLIDER_UPDATE_PERIOD_MILLIS, TimeUnit.MILLISECONDS);
+            }
+        }
+
+        public void stopUpdating() {
+            synchronized (mLock) {
+                cancelPendingRunnables();
+            }
+        }
+
+        private void cancelPendingRunnables() {
+            if (mScheduledFuture != null) {
+                mScheduledFuture.cancel(true);
+                mScheduledFuture = null;
+            }
+            removeCallbacks(mUpdateClipPositionRunnable);
+        }
+    }
+
+    /**
+     * Handle state changes when the user manipulates the seek bar.
+     */
+    private final OnSeekBarChangeListener mSeekBarChangeListener = new OnSeekBarChangeListener() {
+        @Override
+        public void onStartTrackingTouch(SeekBar seekBar) {
+            if (mPresenter != null) {
+                mPresenter.pausePlaybackForSeeking();
+            }
+        }
+
+        @Override
+        public void onStopTrackingTouch(SeekBar seekBar) {
+            if (mPresenter != null) {
+                mPresenter.resumePlaybackAfterSeeking(seekBar.getProgress());
+            }
+        }
+
+        @Override
+        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+            setClipPosition(progress, seekBar.getMax());
+        }
+    };
+
+    /**
+     * Click listener to toggle speakerphone.
+     */
+    private final View.OnClickListener mSpeakerphoneListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            if (mPresenter != null) {
+                mPresenter.toggleSpeakerphone();
+            }
+        }
+    };
+
+    /**
+     * Click listener to play or pause voicemail playback.
+     */
+    private final View.OnClickListener mStartStopButtonListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View view) {
+            if (mPresenter == null) {
+                return;
+            }
+
+            if (mIsPlaying) {
+                mPresenter.pausePlayback();
+            } else {
+                mPresenter.resumePlayback();
+            }
+        }
+    };
+
+    private final View.OnClickListener mDeleteButtonListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View view ) {
+            if (mPresenter == null) {
+                return;
+            }
+            mPresenter.pausePlayback();
+            mPresenter.onVoicemailDeleted();
+
+            final Uri deleteUri = mVoicemailUri;
+            final Runnable deleteCallback = new Runnable() {
+                @Override
+                public void run() {
+                    if (mVoicemailUri == deleteUri) {
+                        CallLogAsyncTaskUtil.deleteVoicemail(mContext, deleteUri,
+                                VoicemailPlaybackLayout.this);
+                    }
+                }
+            };
+
+            final Handler handler = new Handler();
+            // Add a little buffer time in case the user clicked "undo" at the end of the delay
+            // window.
+            handler.postDelayed(deleteCallback, VOICEMAIL_DELETE_DELAY_MS + 50);
+
+            final int actionTextColor =
+                    mContext.getResources().getColor(R.color.dialer_snackbar_action_text_color);
+            Snackbar.make(VoicemailPlaybackLayout.this, R.string.snackbar_voicemail_deleted,
+                            Snackbar.LENGTH_LONG)
+                    .setDuration(VOICEMAIL_DELETE_DELAY_MS)
+                    .setAction(R.string.snackbar_voicemail_deleted_undo,
+                            new View.OnClickListener() {
+                                @Override
+                                public void onClick(View view) {
+                                    mPresenter.onVoicemailDeleteUndo();
+                                        handler.removeCallbacks(deleteCallback);
+                                }
+                            })
+                    .setActionTextColor(actionTextColor)
+                    .show();
+        }
+    };
+
+    private Context mContext;
+    private VoicemailPlaybackPresenter mPresenter;
+    private Uri mVoicemailUri;
+
+    private boolean mIsPlaying = false;
+
+    private SeekBar mPlaybackSeek;
+    private ImageButton mStartStopButton;
+    private ImageButton mPlaybackSpeakerphone;
+    private ImageButton mDeleteButton;
+    private TextView mStateText;
+    private TextView mPositionText;
+    private TextView mTotalDurationText;
+
+    private PositionUpdater mPositionUpdater;
+    private Drawable mVoicemailSeekHandleEnabled;
+    private Drawable mVoicemailSeekHandleDisabled;
+
+    public VoicemailPlaybackLayout(Context context) {
+        this(context, null);
+    }
+
+    public VoicemailPlaybackLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        mContext = context;
+        LayoutInflater inflater =
+                (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        inflater.inflate(R.layout.voicemail_playback_layout, this);
+    }
+
+    @Override
+    public void setPresenter(VoicemailPlaybackPresenter presenter, Uri voicemailUri) {
+        mPresenter = presenter;
+        mVoicemailUri = voicemailUri;
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+
+        mPlaybackSeek = (SeekBar) findViewById(R.id.playback_seek);
+        mStartStopButton = (ImageButton) findViewById(R.id.playback_start_stop);
+        mPlaybackSpeakerphone = (ImageButton) findViewById(R.id.playback_speakerphone);
+        mDeleteButton = (ImageButton) findViewById(R.id.delete_voicemail);
+        mStateText = (TextView) findViewById(R.id.playback_state_text);
+        mPositionText = (TextView) findViewById(R.id.playback_position_text);
+        mTotalDurationText = (TextView) findViewById(R.id.total_duration_text);
+
+        mPlaybackSeek.setOnSeekBarChangeListener(mSeekBarChangeListener);
+        mStartStopButton.setOnClickListener(mStartStopButtonListener);
+        mPlaybackSpeakerphone.setOnClickListener(mSpeakerphoneListener);
+        mDeleteButton.setOnClickListener(mDeleteButtonListener);
+
+        mPositionText.setText(formatAsMinutesAndSeconds(0));
+        mTotalDurationText.setText(formatAsMinutesAndSeconds(0));
+
+        mVoicemailSeekHandleEnabled = getResources().getDrawable(
+                R.drawable.ic_voicemail_seek_handle, mContext.getTheme());
+        mVoicemailSeekHandleDisabled = getResources().getDrawable(
+                R.drawable.ic_voicemail_seek_handle_disabled, mContext.getTheme());
+    }
+
+    @Override
+    public void onPlaybackStarted(int duration, ScheduledExecutorService executorService) {
+        mIsPlaying = true;
+
+        mStartStopButton.setImageResource(R.drawable.ic_pause);
+
+        if (mPositionUpdater != null) {
+            mPositionUpdater.stopUpdating();
+            mPositionUpdater = null;
+        }
+        mPositionUpdater = new PositionUpdater(duration, executorService);
+        mPositionUpdater.startUpdating();
+    }
+
+    @Override
+    public void onPlaybackStopped() {
+        mIsPlaying = false;
+
+        mStartStopButton.setImageResource(R.drawable.ic_play_arrow);
+
+        if (mPositionUpdater != null) {
+            mPositionUpdater.stopUpdating();
+            mPositionUpdater = null;
+        }
+    }
+
+    @Override
+    public void onPlaybackError() {
+        if (mPositionUpdater != null) {
+            mPositionUpdater.stopUpdating();
+        }
+
+        disableUiElements();
+        mStateText.setText(getString(R.string.voicemail_playback_error));
+    }
+
+    @Override
+    public void onSpeakerphoneOn(boolean on) {
+        if (on) {
+            mPlaybackSpeakerphone.setImageResource(R.drawable.ic_volume_up_24dp);
+            // Speaker is now on, tapping button will turn it off.
+            mPlaybackSpeakerphone.setContentDescription(
+                    mContext.getString(R.string.voicemail_speaker_off));
+        } else {
+            mPlaybackSpeakerphone.setImageResource(R.drawable.ic_volume_down_24dp);
+            // Speaker is now off, tapping button will turn it on.
+            mPlaybackSpeakerphone.setContentDescription(
+                    mContext.getString(R.string.voicemail_speaker_on));
+        }
+    }
+
+    @Override
+    public void setClipPosition(int positionMs, int durationMs) {
+        int seekBarPositionMs = Math.max(0, positionMs);
+        int seekBarMax = Math.max(seekBarPositionMs, durationMs);
+        if (mPlaybackSeek.getMax() != seekBarMax) {
+            mPlaybackSeek.setMax(seekBarMax);
+        }
+
+        mPlaybackSeek.setProgress(seekBarPositionMs);
+
+        mPositionText.setText(formatAsMinutesAndSeconds(seekBarPositionMs));
+        mTotalDurationText.setText(formatAsMinutesAndSeconds(durationMs));
+        mStateText.setText(null);
+    }
+
+    @Override
+    public void setIsFetchingContent() {
+        disableUiElements();
+        mStateText.setText(getString(R.string.voicemail_fetching_content));
+    }
+
+    @Override
+    public void setFetchContentTimeout() {
+        mStartStopButton.setEnabled(true);
+        mStateText.setText(getString(R.string.voicemail_fetching_timout));
+    }
+
+    @Override
+    public int getDesiredClipPosition() {
+        return mPlaybackSeek.getProgress();
+    }
+
+    @Override
+    public void disableUiElements() {
+        mStartStopButton.setEnabled(false);
+        resetSeekBar();
+    }
+
+    @Override
+    public void enableUiElements() {
+        mStartStopButton.setEnabled(true);
+        mPlaybackSeek.setEnabled(true);
+        mPlaybackSeek.setThumb(mVoicemailSeekHandleEnabled);
+    }
+
+    @Override
+    public void resetSeekBar() {
+        mPlaybackSeek.setProgress(0);
+        mPlaybackSeek.setEnabled(false);
+        mPlaybackSeek.setThumb(mVoicemailSeekHandleDisabled);
+    }
+
+    @Override
+    public void onDeleteCall() {}
+
+    @Override
+    public void onDeleteVoicemail() {
+        mPresenter.onVoicemailDeletedInDatabase();
+    }
+
+    @Override
+    public void onGetCallDetails(PhoneCallDetails[] details) {}
+
+    private String getString(int resId) {
+        return mContext.getString(resId);
+    }
+
+    /**
+     * Formats a number of milliseconds as something that looks like {@code 00:05}.
+     * <p>
+     * We always use four digits, two for minutes two for seconds.  In the very unlikely event
+     * that the voicemail duration exceeds 99 minutes, the display is capped at 99 minutes.
+     */
+    private String formatAsMinutesAndSeconds(int millis) {
+        int seconds = millis / 1000;
+        int minutes = seconds / 60;
+        seconds -= minutes * 60;
+        if (minutes > 99) {
+            minutes = 99;
+        }
+        return String.format("%02d:%02d", minutes, seconds);
+    }
+
+    @VisibleForTesting
+    public String getStateText() {
+        return mStateText.getText().toString();
+    }
+}
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
new file mode 100644
index 0000000..93ff002
--- /dev/null
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -0,0 +1,838 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.voicemail;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.ContentResolver;
+import android.content.Intent;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.PowerManager;
+import android.provider.VoicemailContract;
+import android.util.Log;
+import android.view.View;
+import android.view.WindowManager.LayoutParams;
+import android.widget.SeekBar;
+
+import com.android.dialer.R;
+import com.android.dialer.util.AsyncTaskExecutor;
+import com.android.dialer.util.AsyncTaskExecutors;
+import com.android.common.io.MoreCloseables;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Preconditions;
+
+import java.io.IOException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.annotation.concurrent.NotThreadSafe;
+import javax.annotation.concurrent.ThreadSafe;
+
+/**
+ * Contains the controlling logic for a voicemail playback in the call log. It is closely coupled
+ * to assumptions about the behaviors and lifecycle of the call log, in particular in the
+ * {@link CallLogFragment} and {@link CallLogAdapter}.
+ * <p>
+ * This controls a single {@link com.android.dialer.voicemail.VoicemailPlaybackLayout}. A single
+ * instance can be reused for different such layouts, using {@link #setPlaybackView}. This
+ * is to facilitate reuse across different voicemail call log entries.
+ * <p>
+ * This class is not thread safe. The thread policy for this class is thread-confinement, all calls
+ * into this class from outside must be done from the main UI thread.
+ */
+@NotThreadSafe
+@VisibleForTesting
+public class VoicemailPlaybackPresenter implements MediaPlayer.OnPreparedListener,
+                MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener {
+
+    private static final String TAG = VoicemailPlaybackPresenter.class.getSimpleName();
+
+    /** Contract describing the behaviour we need from the ui we are controlling. */
+    public interface PlaybackView {
+        int getDesiredClipPosition();
+        void disableUiElements();
+        void enableUiElements();
+        void onPlaybackError();
+        void onPlaybackStarted(int duration, ScheduledExecutorService executorService);
+        void onPlaybackStopped();
+        void onSpeakerphoneOn(boolean on);
+        void setClipPosition(int clipPositionInMillis, int clipLengthInMillis);
+        void setFetchContentTimeout();
+        void setIsFetchingContent();
+        void setPresenter(VoicemailPlaybackPresenter presenter, Uri voicemailUri);
+        void resetSeekBar();
+    }
+
+    public interface OnVoicemailDeletedListener {
+        void onVoicemailDeleted(Uri uri);
+        void onVoicemailDeleteUndo();
+        void onVoicemailDeletedInDatabase();
+    }
+
+    /** The enumeration of {@link AsyncTask} objects we use in this class. */
+    public enum Tasks {
+        CHECK_FOR_CONTENT,
+        CHECK_CONTENT_AFTER_CHANGE,
+    }
+
+    private static final String[] HAS_CONTENT_PROJECTION = new String[] {
+        VoicemailContract.Voicemails.HAS_CONTENT,
+        VoicemailContract.Voicemails.DURATION
+    };
+
+    private static final int NUMBER_OF_THREADS_IN_POOL = 2;
+    // Time to wait for content to be fetched before timing out.
+    private static final long FETCH_CONTENT_TIMEOUT_MS = 20000;
+
+    private static final String VOICEMAIL_URI_KEY =
+            VoicemailPlaybackPresenter.class.getName() + ".VOICEMAIL_URI";
+    private static final String IS_PREPARED_KEY =
+            VoicemailPlaybackPresenter.class.getName() + ".IS_PREPARED";
+    // If present in the saved instance bundle, we should not resume playback on create.
+    private static final String IS_PLAYING_STATE_KEY =
+            VoicemailPlaybackPresenter.class.getName() + ".IS_PLAYING_STATE_KEY";
+    // If present in the saved instance bundle, indicates where to set the playback slider.
+    private static final String CLIP_POSITION_KEY =
+            VoicemailPlaybackPresenter.class.getName() + ".CLIP_POSITION_KEY";
+    private static final String IS_SPEAKERPHONE_ON_KEY =
+            VoicemailPlaybackPresenter.class.getName() + ".IS_SPEAKER_PHONE_ON";
+
+    /**
+     * The most recently cached duration. We cache this since we don't want to keep requesting it
+     * from the player, as this can easily lead to throwing {@link IllegalStateException} (any time
+     * the player is released, it's illegal to ask for the duration).
+     */
+    private final AtomicInteger mDuration = new AtomicInteger(0);
+
+    private static VoicemailPlaybackPresenter sInstance;
+
+    private Activity mActivity;
+    private Context mContext;
+    private PlaybackView mView;
+    private Uri mVoicemailUri;
+
+    private MediaPlayer mMediaPlayer;
+    private int mPosition;
+    private boolean mIsPlaying;
+    // MediaPlayer crashes on some method calls if not prepared but does not have a method which
+    // exposes its prepared state. Store this locally, so we can check and prevent crashes.
+    private boolean mIsPrepared;
+    private boolean mIsSpeakerphoneOn;
+
+    private boolean mShouldResumePlaybackAfterSeeking;
+    private int mInitialOrientation;
+
+    // Used to run async tasks that need to interact with the UI.
+    private AsyncTaskExecutor mAsyncTaskExecutor;
+    private static ScheduledExecutorService mScheduledExecutorService;
+    /**
+     * Used to handle the result of a successful or time-out fetch result.
+     * <p>
+     * This variable is thread-contained, accessed only on the ui thread.
+     */
+    private FetchResultHandler mFetchResultHandler;
+    private Handler mHandler = new Handler();
+    private PowerManager.WakeLock mProximityWakeLock;
+    private VoicemailAudioManager mVoicemailAudioManager;
+
+    private OnVoicemailDeletedListener mOnVoicemailDeletedListener;
+
+    /**
+     * Obtain singleton instance of this class. Use a single instance to provide a consistent
+     * listener to the AudioManager when requesting and abandoning audio focus.
+     *
+     * Otherwise, after rotation the previous listener will still be active but a new listener
+     * will be provided to calls to the AudioManager, which is bad. For example, abandoning
+     * audio focus with the new listeners results in an AUDIO_FOCUS_GAIN callback to the
+     * previous listener, which is the opposite of the intended behavior.
+     */
+    public static VoicemailPlaybackPresenter getInstance(
+            Activity activity, Bundle savedInstanceState) {
+        if (sInstance == null) {
+            sInstance = new VoicemailPlaybackPresenter(activity);
+        }
+
+        sInstance.init(activity, savedInstanceState);
+        return sInstance;
+    }
+
+    /**
+     * Initialize variables which are activity-independent and state-independent.
+     */
+    private VoicemailPlaybackPresenter(Activity activity) {
+        Context context = activity.getApplicationContext();
+        mAsyncTaskExecutor = AsyncTaskExecutors.createAsyncTaskExecutor();
+        mVoicemailAudioManager = new VoicemailAudioManager(context, this);
+
+        PowerManager powerManager =
+                (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+        if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
+            mProximityWakeLock = powerManager.newWakeLock(
+                    PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, TAG);
+        }
+    }
+
+    /**
+     * Update variables which are activity-dependent or state-dependent.
+     */
+    private void init(Activity activity, Bundle savedInstanceState) {
+        mActivity = activity;
+        mContext = activity;
+
+        mInitialOrientation = mContext.getResources().getConfiguration().orientation;
+        mActivity.setVolumeControlStream(VoicemailAudioManager.PLAYBACK_STREAM);
+
+        if (savedInstanceState != null) {
+            // Restores playback state when activity is recreated, such as after rotation.
+            mVoicemailUri = (Uri) savedInstanceState.getParcelable(VOICEMAIL_URI_KEY);
+            mIsPrepared = savedInstanceState.getBoolean(IS_PREPARED_KEY);
+            mPosition = savedInstanceState.getInt(CLIP_POSITION_KEY, 0);
+            mIsPlaying = savedInstanceState.getBoolean(IS_PLAYING_STATE_KEY, false);
+            mIsSpeakerphoneOn = savedInstanceState.getBoolean(IS_SPEAKERPHONE_ON_KEY, false);
+        }
+
+        if (mMediaPlayer == null) {
+            mIsPrepared = false;
+            mIsPlaying = false;
+        }
+    }
+
+    /**
+     * Must be invoked when the parent Activity is saving it state.
+     */
+    public void onSaveInstanceState(Bundle outState) {
+        if (mView != null) {
+            outState.putParcelable(VOICEMAIL_URI_KEY, mVoicemailUri);
+            outState.putBoolean(IS_PREPARED_KEY, mIsPrepared);
+            outState.putInt(CLIP_POSITION_KEY, mView.getDesiredClipPosition());
+            outState.putBoolean(IS_PLAYING_STATE_KEY, mIsPlaying);
+            outState.putBoolean(IS_SPEAKERPHONE_ON_KEY, mIsSpeakerphoneOn);
+        }
+    }
+
+    /**
+     * Specify the view which this presenter controls and the voicemail to prepare to play.
+     */
+    public void setPlaybackView(
+            PlaybackView view, Uri voicemailUri, boolean startPlayingImmediately) {
+        mView = view;
+        mView.setPresenter(this, voicemailUri);
+
+        // Handles cases where the same entry is binded again when scrolling in list, or where
+        // the MediaPlayer was retained after an orientation change.
+        if (mMediaPlayer != null && mIsPrepared && voicemailUri.equals(mVoicemailUri)) {
+            // If the voicemail card was rebinded, we need to set the position to the appropriate
+            // point. Since we retain the media player, we can just set it to the position of the
+            // media player.
+            mPosition = mMediaPlayer.getCurrentPosition();
+            onPrepared(mMediaPlayer);
+        } else {
+            if (!voicemailUri.equals(mVoicemailUri)) {
+                mVoicemailUri = voicemailUri;
+                mPosition = 0;
+                // Default to earpiece.
+                setSpeakerphoneOn(false);
+                mVoicemailAudioManager.setSpeakerphoneOn(false);
+            } else {
+                // Update the view to the current speakerphone state.
+                mView.onSpeakerphoneOn(mIsSpeakerphoneOn);
+            }
+
+            checkForContent();
+
+            if (startPlayingImmediately) {
+                // Since setPlaybackView can get called during the view binding process, we don't
+                // want to reset mIsPlaying to false if the user is currently playing the
+                // voicemail and the view is rebound.
+                mIsPlaying = startPlayingImmediately;
+            }
+        }
+    }
+
+    /**
+     * Reset the presenter for playback back to its original state.
+     */
+    public void resetAll() {
+        pausePresenter(true);
+
+        mView = null;
+        mVoicemailUri = null;
+    }
+
+    /**
+     * When navigating away from voicemail playback, we need to release the media player,
+     * pause the UI and save the position.
+     *
+     * @param reset {@code true} if we want to reset the position of the playback, {@code false} if
+     * we want to retain the current position (in case we return to the voicemail).
+     */
+    public void pausePresenter(boolean reset) {
+        if (mMediaPlayer != null) {
+            mMediaPlayer.release();
+            mMediaPlayer = null;
+        }
+
+        disableProximitySensor(false /* waitForFarState */);
+
+        mIsPrepared = false;
+        mIsPlaying = false;
+
+        if (reset) {
+            // We want to reset the position whether or not the view is valid.
+            mPosition = 0;
+        }
+
+        if (mView != null) {
+            mView.onPlaybackStopped();
+            if (reset) {
+                mView.setClipPosition(0, mDuration.get());
+            } else {
+                mPosition = mView.getDesiredClipPosition();
+            }
+        }
+    }
+
+    /**
+     * Must be invoked when the parent activity is resumed.
+     */
+    public void onResume() {
+        mVoicemailAudioManager.registerReceivers();
+    }
+
+    /**
+     * Must be invoked when the parent activity is paused.
+     */
+    public void onPause() {
+        mVoicemailAudioManager.unregisterReceivers();
+
+        if (mContext != null && mIsPrepared
+                && mInitialOrientation != mContext.getResources().getConfiguration().orientation) {
+            // If an orientation change triggers the pause, retain the MediaPlayer.
+            Log.d(TAG, "onPause: Orientation changed.");
+            return;
+        }
+
+        // Release the media player, otherwise there may be failures.
+        pausePresenter(false);
+
+        if (mActivity != null) {
+            mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
+        }
+
+    }
+
+    /**
+     * Must be invoked when the parent activity is destroyed.
+     */
+    public void onDestroy() {
+        // Clear references to avoid leaks from the singleton instance.
+        mActivity = null;
+        mContext = null;
+
+        if (mScheduledExecutorService != null) {
+            mScheduledExecutorService.shutdown();
+            mScheduledExecutorService = null;
+        }
+
+        if (mFetchResultHandler != null) {
+            mFetchResultHandler.destroy();
+            mFetchResultHandler = null;
+        }
+    }
+
+    /**
+     * Checks to see if we have content available for this voicemail.
+     * <p>
+     * This method will be called once, after the fragment has been created, before we know if the
+     * voicemail we've been asked to play has any content available.
+     * <p>
+     * Notify the user that we are fetching the content, then check to see if the content field in
+     * the DB is set. If set, we proceed to {@link #prepareContent()} method. We get the duration of
+     * the voicemail from the query and set it if the content is not available.
+     */
+    private void checkForContent() {
+        mAsyncTaskExecutor.submit(Tasks.CHECK_FOR_CONTENT, new AsyncTask<Void, Void, Boolean>() {
+            @Override
+            public Boolean doInBackground(Void... params) {
+                return queryHasContent(mVoicemailUri);
+            }
+
+            @Override
+            public void onPostExecute(Boolean hasContent) {
+                if (hasContent) {
+                    prepareContent();
+                } else if (mView != null) {
+                    mView.resetSeekBar();
+                    mView.setClipPosition(0, mDuration.get());
+                }
+            }
+        });
+    }
+
+    private boolean queryHasContent(Uri voicemailUri) {
+        if (voicemailUri == null || mContext == null) {
+            return false;
+        }
+
+        ContentResolver contentResolver = mContext.getContentResolver();
+        Cursor cursor = contentResolver.query(
+                voicemailUri, null, null, null, null);
+        try {
+            if (cursor != null && cursor.moveToNext()) {
+                int duration = cursor.getInt(cursor.getColumnIndex(
+                        VoicemailContract.Voicemails.DURATION));
+                // Convert database duration (seconds) into mDuration (milliseconds)
+                mDuration.set(duration > 0 ? duration * 1000 : 0);
+                return cursor.getInt(cursor.getColumnIndex(
+                        VoicemailContract.Voicemails.HAS_CONTENT)) == 1;
+            }
+        } finally {
+            MoreCloseables.closeQuietly(cursor);
+        }
+        return false;
+    }
+
+    /**
+     * Makes a broadcast request to ask that a voicemail source fetch this content.
+     * <p>
+     * This method <b>must be called on the ui thread</b>.
+     * <p>
+     * This method will be called when we realise that we don't have content for this voicemail. It
+     * will trigger a broadcast to request that the content be downloaded. It will add a listener to
+     * the content resolver so that it will be notified when the has_content field changes. It will
+     * also set a timer. If the has_content field changes to true within the allowed time, we will
+     * proceed to {@link #prepareContent()}. If the has_content field does not
+     * become true within the allowed time, we will update the ui to reflect the fact that content
+     * was not available.
+     *
+     * @return whether issued request to fetch content
+     */
+    private boolean requestContent() {
+        if (mContext == null || mVoicemailUri == null) {
+            return false;
+        }
+
+        if (mFetchResultHandler != null) {
+            mFetchResultHandler.destroy();
+        }
+
+        mFetchResultHandler = new FetchResultHandler(new Handler(), mVoicemailUri);
+
+        mView.setIsFetchingContent();
+
+        // Send voicemail fetch request.
+        Intent intent = new Intent(VoicemailContract.ACTION_FETCH_VOICEMAIL, mVoicemailUri);
+        mContext.sendBroadcast(intent);
+        return true;
+    }
+
+    @ThreadSafe
+    private class FetchResultHandler extends ContentObserver implements Runnable {
+        private AtomicBoolean mIsWaitingForResult = new AtomicBoolean(true);
+        private final Handler mFetchResultHandler;
+
+        public FetchResultHandler(Handler handler, Uri voicemailUri) {
+            super(handler);
+            mFetchResultHandler = handler;
+
+            if (mContext != null) {
+                mContext.getContentResolver().registerContentObserver(
+                        voicemailUri, false, this);
+                mFetchResultHandler.postDelayed(this, FETCH_CONTENT_TIMEOUT_MS);
+            }
+        }
+
+        /**
+         * Stop waiting for content and notify UI if {@link FETCH_CONTENT_TIMEOUT_MS} has elapsed.
+         */
+        @Override
+        public void run() {
+            if (mIsWaitingForResult.getAndSet(false) && mContext != null) {
+                mContext.getContentResolver().unregisterContentObserver(this);
+                if (mView != null) {
+                    mView.setFetchContentTimeout();
+                }
+            }
+        }
+
+        public void destroy() {
+            if (mIsWaitingForResult.getAndSet(false) && mContext != null) {
+                mContext.getContentResolver().unregisterContentObserver(this);
+                mFetchResultHandler.removeCallbacks(this);
+            }
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            mAsyncTaskExecutor.submit(Tasks.CHECK_CONTENT_AFTER_CHANGE,
+                    new AsyncTask<Void, Void, Boolean>() {
+                @Override
+                public Boolean doInBackground(Void... params) {
+                    return queryHasContent(mVoicemailUri);
+                }
+
+                @Override
+                public void onPostExecute(Boolean hasContent) {
+                    if (hasContent && mContext != null && mIsWaitingForResult.getAndSet(false)) {
+                        mContext.getContentResolver().unregisterContentObserver(
+                                FetchResultHandler.this);
+                        prepareContent();
+                    }
+                }
+            });
+        }
+    }
+
+    /**
+     * Prepares the voicemail content for playback.
+     * <p>
+     * This method will be called once we know that our voicemail has content (according to the
+     * content provider). this method asynchronously tries to prepare the data source through the
+     * media player. If preparation is successful, the media player will {@link #onPrepared()},
+     * and it will call {@link #onError()} otherwise.
+     */
+    private void prepareContent() {
+        if (mView == null) {
+            return;
+        }
+        Log.d(TAG, "prepareContent");
+
+        // Release the previous media player, otherwise there may be failures.
+        if (mMediaPlayer != null) {
+            mMediaPlayer.release();
+            mMediaPlayer = null;
+        }
+
+        mView.disableUiElements();
+        mIsPrepared = false;
+
+        try {
+            mMediaPlayer = new MediaPlayer();
+            mMediaPlayer.setOnPreparedListener(this);
+            mMediaPlayer.setOnErrorListener(this);
+            mMediaPlayer.setOnCompletionListener(this);
+
+            mMediaPlayer.reset();
+            mMediaPlayer.setDataSource(mContext, mVoicemailUri);
+            mMediaPlayer.setAudioStreamType(VoicemailAudioManager.PLAYBACK_STREAM);
+            mMediaPlayer.prepareAsync();
+        } catch (IOException e) {
+            handleError(e);
+        }
+    }
+
+    /**
+     * Once the media player is prepared, enables the UI and adopts the appropriate playback state.
+     */
+    @Override
+    public void onPrepared(MediaPlayer mp) {
+        if (mView == null) {
+            return;
+        }
+        Log.d(TAG, "onPrepared");
+        mIsPrepared = true;
+
+        mDuration.set(mMediaPlayer.getDuration());
+
+        Log.d(TAG, "onPrepared: mPosition=" + mPosition);
+        mView.setClipPosition(mPosition, mDuration.get());
+        mView.enableUiElements();
+        mMediaPlayer.seekTo(mPosition);
+
+        if (mIsPlaying) {
+            resumePlayback();
+        } else {
+            pausePlayback();
+        }
+    }
+
+    /**
+     * Invoked if preparing the media player fails, for example, if file is missing or the voicemail
+     * is an unknown file format that can't be played.
+     */
+    @Override
+    public boolean onError(MediaPlayer mp, int what, int extra) {
+        handleError(new IllegalStateException("MediaPlayer error listener invoked: " + extra));
+        return true;
+    }
+
+    private void handleError(Exception e) {
+        Log.d(TAG, "handleError: Could not play voicemail " + e);
+
+        if (mIsPrepared) {
+            mMediaPlayer.release();
+            mMediaPlayer = null;
+            mIsPrepared = false;
+        }
+
+        if (mView != null) {
+            mView.onPlaybackError();
+        }
+
+        mPosition = 0;
+        mIsPlaying = false;
+    }
+
+    /**
+     * After done playing the voicemail clip, reset the clip position to the start.
+     */
+    @Override
+    public void onCompletion(MediaPlayer mediaPlayer) {
+        pausePlayback();
+
+        // Reset the seekbar position to the beginning.
+        mPosition = 0;
+        if (mView != null) {
+            mView.setClipPosition(0, mDuration.get());
+        }
+    }
+
+    /**
+     * Only play voicemail when audio focus is granted. When it is lost (usually by another
+     * application requesting focus), pause playback.
+     *
+     * @param gainedFocus {@code true} if the audio focus was gained, {@code} false otherwise.
+     */
+    public void onAudioFocusChange(boolean gainedFocus) {
+        if (mIsPlaying == gainedFocus) {
+            // Nothing new here, just exit.
+            return;
+        }
+
+        if (!mIsPlaying) {
+            resumePlayback();
+        } else {
+            pausePlayback();
+        }
+    }
+
+    /**
+     * Resumes voicemail playback at the clip position stored by the presenter. Null-op if already
+     * playing.
+     */
+    public void resumePlayback() {
+        if (mView == null) {
+            return;
+        }
+
+        if (!mIsPrepared) {
+            // If we haven't downloaded the voicemail yet, attempt to download it.
+            mIsPlaying = requestContent();
+            return;
+        }
+
+        mIsPlaying = true;
+
+        if (mMediaPlayer != null && !mMediaPlayer.isPlaying()) {
+            // Clamp the start position between 0 and the duration.
+            mPosition = Math.max(0, Math.min(mPosition, mDuration.get()));
+
+            mMediaPlayer.seekTo(mPosition);
+
+            try {
+                // Grab audio focus.
+                // Can throw RejectedExecutionException.
+                mVoicemailAudioManager.requestAudioFocus();
+                mMediaPlayer.start();
+                setSpeakerphoneOn(mIsSpeakerphoneOn);
+            } catch (RejectedExecutionException e) {
+                handleError(e);
+            }
+        }
+
+        Log.d(TAG, "Resumed playback at " + mPosition + ".");
+        mView.onPlaybackStarted(mDuration.get(), getScheduledExecutorServiceInstance());
+    }
+
+    /**
+     * Pauses voicemail playback at the current position. Null-op if already paused.
+     */
+    public void pausePlayback() {
+        if (!mIsPrepared) {
+            return;
+        }
+
+        mIsPlaying = false;
+
+        if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {
+            mMediaPlayer.pause();
+        }
+
+        mPosition = mMediaPlayer == null ? 0 : mMediaPlayer.getCurrentPosition();
+
+        Log.d(TAG, "Paused playback at " + mPosition + ".");
+
+        if (mView != null) {
+            mView.onPlaybackStopped();
+        }
+
+        mVoicemailAudioManager.abandonAudioFocus();
+
+        if (mActivity != null) {
+            mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
+        }
+        disableProximitySensor(true /* waitForFarState */);
+    }
+
+    /**
+     * Pauses playback when the user starts seeking the position, and notes whether the voicemail is
+     * playing to know whether to resume playback once the user selects a new position.
+     */
+    public void pausePlaybackForSeeking() {
+        if (mMediaPlayer != null) {
+            mShouldResumePlaybackAfterSeeking = mMediaPlayer.isPlaying();
+        }
+        pausePlayback();
+    }
+
+    public void resumePlaybackAfterSeeking(int desiredPosition) {
+        mPosition = desiredPosition;
+        if (mShouldResumePlaybackAfterSeeking) {
+            mShouldResumePlaybackAfterSeeking = false;
+            resumePlayback();
+        }
+    }
+
+    private void enableProximitySensor() {
+        if (mProximityWakeLock == null || mIsSpeakerphoneOn || !mIsPrepared
+                || mMediaPlayer == null || !mMediaPlayer.isPlaying()) {
+            return;
+        }
+
+        if (!mProximityWakeLock.isHeld()) {
+            Log.i(TAG, "Acquiring proximity wake lock");
+            mProximityWakeLock.acquire();
+        } else {
+            Log.i(TAG, "Proximity wake lock already acquired");
+        }
+    }
+
+    private void disableProximitySensor(boolean waitForFarState) {
+        if (mProximityWakeLock == null) {
+            return;
+        }
+        if (mProximityWakeLock.isHeld()) {
+            Log.i(TAG, "Releasing proximity wake lock");
+            int flags = waitForFarState ? PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY : 0;
+            mProximityWakeLock.release(flags);
+        } else {
+            Log.i(TAG, "Proximity wake lock already released");
+        }
+    }
+
+    /**
+     * This is for use by UI interactions only. It simplifies UI logic.
+     */
+    public void toggleSpeakerphone() {
+        mVoicemailAudioManager.setSpeakerphoneOn(!mIsSpeakerphoneOn);
+        setSpeakerphoneOn(!mIsSpeakerphoneOn);
+    }
+
+    /**
+     * This method only handles app-level changes to the speakerphone. Audio layer changes should
+     * be handled separately. This is so that the VoicemailAudioManager can trigger changes to
+     * the presenter without the presenter triggering the audio manager and duplicating actions.
+     */
+    public void setSpeakerphoneOn(boolean on) {
+        if (mView == null) {
+            return;
+        }
+
+        mView.onSpeakerphoneOn(on);
+
+        mIsSpeakerphoneOn = on;
+
+        // This should run even if speakerphone is not being toggled because we may be switching
+        // from earpiece to headphone and vise versa. Also upon initial setup the default audio
+        // source is the earpiece, so we want to trigger the proximity sensor.
+        if (mIsPlaying) {
+            if (on || mVoicemailAudioManager.isWiredHeadsetPluggedIn()) {
+                disableProximitySensor(false /* waitForFarState */);
+                if (mIsPrepared && mMediaPlayer != null && mMediaPlayer.isPlaying()) {
+                    mActivity.getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
+                }
+            } else {
+                enableProximitySensor();
+                if (mActivity != null) {
+                    mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
+                }
+            }
+        }
+    }
+
+    public void setOnVoicemailDeletedListener(OnVoicemailDeletedListener listener) {
+        mOnVoicemailDeletedListener = listener;
+    }
+
+    public int getMediaPlayerPosition() {
+        return mIsPrepared && mMediaPlayer != null ? mMediaPlayer.getCurrentPosition() : 0;
+    }
+
+    /* package */ void onVoicemailDeleted() {
+        // Trampoline the event notification to the interested listener.
+        if (mOnVoicemailDeletedListener != null) {
+            mOnVoicemailDeletedListener.onVoicemailDeleted(mVoicemailUri);
+        }
+    }
+
+    /* package */ void onVoicemailDeleteUndo() {
+        // Trampoline the event notification to the interested listener.
+        if (mOnVoicemailDeletedListener != null) {
+            mOnVoicemailDeletedListener.onVoicemailDeleteUndo();
+        }
+    }
+
+    /* package */ void onVoicemailDeletedInDatabase() {
+        // Trampoline the event notification to the interested listener.
+        if (mOnVoicemailDeletedListener != null) {
+            mOnVoicemailDeletedListener.onVoicemailDeletedInDatabase();
+        }
+    }
+
+    private static synchronized ScheduledExecutorService getScheduledExecutorServiceInstance() {
+        if (mScheduledExecutorService == null) {
+            mScheduledExecutorService = Executors.newScheduledThreadPool(NUMBER_OF_THREADS_IN_POOL);
+        }
+        return mScheduledExecutorService;
+    }
+
+    @VisibleForTesting
+    public boolean isPlaying() {
+        return mIsPlaying;
+    }
+
+    @VisibleForTesting
+    public boolean isSpeakerphoneOn() {
+        return mIsSpeakerphoneOn;
+    }
+
+    @VisibleForTesting
+    public void clearInstance() {
+        sInstance = null;
+    }
+}
diff --git a/src/com/android/dialer/voicemail/VoicemailStatusHelper.java b/src/com/android/dialer/voicemail/VoicemailStatusHelper.java
new file mode 100644
index 0000000..d790b77
--- /dev/null
+++ b/src/com/android/dialer/voicemail/VoicemailStatusHelper.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.voicemail;
+
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.VoicemailContract.Status;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.List;
+
+/**
+ * Interface used by the call log UI to determine what user message, if any, related to voicemail
+ * source status needs to be shown. The messages are returned in the order of importance.
+ * <p>
+ * The implementation of this interface interacts with the voicemail content provider to fetch
+ * statuses of all the registered voicemail sources and determines if any status message needs to
+ * be shown. The user of this interface must observe/listen to provider changes and invoke
+ * this class to check if any message needs to be shown.
+ */
+public interface VoicemailStatusHelper {
+    @VisibleForTesting
+    public class StatusMessage {
+        /** Package of the source on behalf of which this message has to be shown.*/
+        public final String sourcePackage;
+        /**
+         * The string resource id of the status message that should be shown in the call log
+         * page. Set to -1, if this message is not to be shown in call log.
+         */
+        public final int callLogMessageId;
+        /**
+         * The string resource id of the status message that should be shown in the call details
+         * page. Set to -1, if this message is not to be shown in call details page.
+         */
+        public final int callDetailsMessageId;
+        /** The string resource id of the action message that should be shown. */
+        public final int actionMessageId;
+        /** URI for the corrective action, where applicable. Null if no action URI is available. */
+        public final Uri actionUri;
+
+        public StatusMessage(String sourcePackage, int callLogMessageId, int callDetailsMessageId,
+                int actionMessageId, Uri actionUri) {
+            this.sourcePackage = sourcePackage;
+            this.callLogMessageId = callLogMessageId;
+            this.callDetailsMessageId = callDetailsMessageId;
+            this.actionMessageId = actionMessageId;
+            this.actionUri = actionUri;
+        }
+
+        /** Whether this message should be shown in the call log page. */
+        public boolean showInCallLog() {
+            return callLogMessageId != -1;
+        }
+
+        /** Whether this message should be shown in the call details page. */
+        public boolean showInCallDetails() {
+            return callDetailsMessageId != -1;
+        }
+    }
+
+    /**
+     * Returns a list of messages, in the order or priority that should be shown to the user. An
+     * empty list is returned if no message needs to be shown.
+     * @param cursor The cursor pointing to the query on {@link Status#CONTENT_URI}. The projection
+     *      to be used is defined by the implementation class of this interface.
+     */
+    @VisibleForTesting
+    public List<StatusMessage> getStatusMessages(Cursor cursor);
+
+    /**
+     * Returns the number of active voicemail sources installed.
+     * <p>
+     * The number of sources is counted by querying the voicemail status table.
+     */
+    public int getNumberActivityVoicemailSources(Cursor cursor);
+}
diff --git a/src/com/android/dialer/voicemail/VoicemailStatusHelperImpl.java b/src/com/android/dialer/voicemail/VoicemailStatusHelperImpl.java
new file mode 100644
index 0000000..ff17868
--- /dev/null
+++ b/src/com/android/dialer/voicemail/VoicemailStatusHelperImpl.java
@@ -0,0 +1,272 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.voicemail;
+
+import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_CAN_BE_CONFIGURED;
+import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_OK;
+import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_NO_CONNECTION;
+import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_OK;
+import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING;
+import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION;
+import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK;
+
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.VoicemailContract.Status;
+
+import com.android.contacts.common.util.UriUtils;
+import com.android.dialer.R;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+/** Implementation of {@link VoicemailStatusHelper}. */
+public class VoicemailStatusHelperImpl implements VoicemailStatusHelper {
+    private static final int SOURCE_PACKAGE_INDEX = 0;
+    private static final int CONFIGURATION_STATE_INDEX = 1;
+    private static final int DATA_CHANNEL_STATE_INDEX = 2;
+    private static final int NOTIFICATION_CHANNEL_STATE_INDEX = 3;
+    private static final int SETTINGS_URI_INDEX = 4;
+    private static final int VOICEMAIL_ACCESS_URI_INDEX = 5;
+    private static final int NUM_COLUMNS = 6;
+    /** Projection on the voicemail_status table used by this class. */
+    public static final String[] PROJECTION = new String[NUM_COLUMNS];
+    static {
+        PROJECTION[SOURCE_PACKAGE_INDEX] = Status.SOURCE_PACKAGE;
+        PROJECTION[CONFIGURATION_STATE_INDEX] = Status.CONFIGURATION_STATE;
+        PROJECTION[DATA_CHANNEL_STATE_INDEX] = Status.DATA_CHANNEL_STATE;
+        PROJECTION[NOTIFICATION_CHANNEL_STATE_INDEX] = Status.NOTIFICATION_CHANNEL_STATE;
+        PROJECTION[SETTINGS_URI_INDEX] = Status.SETTINGS_URI;
+        PROJECTION[VOICEMAIL_ACCESS_URI_INDEX] = Status.VOICEMAIL_ACCESS_URI;
+    }
+
+    /** Possible user actions. */
+    public static enum Action {
+        NONE(-1),
+        CALL_VOICEMAIL(R.string.voicemail_status_action_call_server),
+        CONFIGURE_VOICEMAIL(R.string.voicemail_status_action_configure);
+
+        private final int mMessageId;
+        private Action(int messageId) {
+            mMessageId = messageId;
+        }
+
+        public int getMessageId() {
+            return mMessageId;
+        }
+    }
+
+    /**
+     * Overall state of the source status. Each state is associated with the corresponding display
+     * string and the corrective action. The states are also assigned a relative priority which is
+     * used to order the messages from different sources.
+     */
+    private static enum OverallState {
+        // TODO: Add separate string for call details and call log pages for the states that needs
+        // to be shown in both.
+        /** Both notification and data channel are not working. */
+        NO_CONNECTION(0, Action.CALL_VOICEMAIL, R.string.voicemail_status_voicemail_not_available,
+                R.string.voicemail_status_audio_not_available),
+        /** Notifications working, but data channel is not working. Audio cannot be downloaded. */
+        NO_DATA(1, Action.CALL_VOICEMAIL, R.string.voicemail_status_voicemail_not_available,
+                R.string.voicemail_status_audio_not_available),
+        /** Messages are known to be waiting but data channel is not working. */
+        MESSAGE_WAITING(2, Action.CALL_VOICEMAIL, R.string.voicemail_status_messages_waiting,
+                R.string.voicemail_status_audio_not_available),
+        /** Notification channel not working, but data channel is. */
+        NO_NOTIFICATIONS(3, Action.CALL_VOICEMAIL,
+                R.string.voicemail_status_voicemail_not_available),
+        /** Invite user to set up voicemail. */
+        INVITE_FOR_CONFIGURATION(4, Action.CONFIGURE_VOICEMAIL,
+                R.string.voicemail_status_configure_voicemail),
+        /**
+         * No detailed notifications, but data channel is working.
+         * This is normal mode of operation for certain sources. No action needed.
+         */
+        NO_DETAILED_NOTIFICATION(5, Action.NONE, -1),
+        /** Visual voicemail not yet set up. No local action needed. */
+        NOT_CONFIGURED(6, Action.NONE, -1),
+        /** Everything is OK. */
+        OK(7, Action.NONE, -1),
+        /** If one or more state value set by the source is not valid. */
+        INVALID(8, Action.NONE, -1);
+
+        private final int mPriority;
+        private final Action mAction;
+        private final int mCallLogMessageId;
+        private final int mCallDetailsMessageId;
+
+        private OverallState(int priority, Action action, int callLogMessageId) {
+            this(priority, action, callLogMessageId, -1);
+        }
+
+        private OverallState(int priority, Action action, int callLogMessageId,
+                int callDetailsMessageId) {
+            mPriority = priority;
+            mAction = action;
+            mCallLogMessageId = callLogMessageId;
+            mCallDetailsMessageId = callDetailsMessageId;
+        }
+
+        public Action getAction() {
+            return mAction;
+        }
+
+        public int getPriority() {
+            return mPriority;
+        }
+
+        public int getCallLogMessageId() {
+            return mCallLogMessageId;
+        }
+
+        public int getCallDetailsMessageId() {
+            return mCallDetailsMessageId;
+        }
+    }
+
+    /** A wrapper on {@link StatusMessage} which additionally stores the priority of the message. */
+    private static class MessageStatusWithPriority {
+        private final StatusMessage mMessage;
+        private final int mPriority;
+
+        public MessageStatusWithPriority(StatusMessage message, int priority) {
+            mMessage = message;
+            mPriority = priority;
+        }
+    }
+
+    @Override
+    public List<StatusMessage> getStatusMessages(Cursor cursor) {
+        List<MessageStatusWithPriority> messages =
+            new ArrayList<VoicemailStatusHelperImpl.MessageStatusWithPriority>();
+        cursor.moveToPosition(-1);
+        while(cursor.moveToNext()) {
+            MessageStatusWithPriority message = getMessageForStatusEntry(cursor);
+            if (message != null) {
+                messages.add(message);
+            }
+        }
+        // Finally reorder the messages by their priority.
+        return reorderMessages(messages);
+    }
+
+    @Override
+    public int getNumberActivityVoicemailSources(Cursor cursor) {
+        int count = 0;
+        cursor.moveToPosition(-1);
+        while(cursor.moveToNext()) {
+            if (isVoicemailSourceActive(cursor)) {
+                ++count;
+            }
+        }
+        return count;
+    }
+
+    /** Returns whether the source status in the cursor corresponds to an active source. */
+    private boolean isVoicemailSourceActive(Cursor cursor) {
+        return cursor.getString(SOURCE_PACKAGE_INDEX) != null
+                &&  cursor.getInt(CONFIGURATION_STATE_INDEX) == Status.CONFIGURATION_STATE_OK;
+    }
+
+    private List<StatusMessage> reorderMessages(List<MessageStatusWithPriority> messageWrappers) {
+        Collections.sort(messageWrappers, new Comparator<MessageStatusWithPriority>() {
+            @Override
+            public int compare(MessageStatusWithPriority msg1, MessageStatusWithPriority msg2) {
+                return msg1.mPriority - msg2.mPriority;
+            }
+        });
+        List<StatusMessage> reorderMessages = new ArrayList<VoicemailStatusHelper.StatusMessage>();
+        // Copy the ordered message objects into the final list.
+        for (MessageStatusWithPriority messageWrapper : messageWrappers) {
+            reorderMessages.add(messageWrapper.mMessage);
+        }
+        return reorderMessages;
+    }
+
+    /**
+     * Returns the message for the status entry pointed to by the cursor.
+     */
+    private MessageStatusWithPriority getMessageForStatusEntry(Cursor cursor) {
+        final String sourcePackage = cursor.getString(SOURCE_PACKAGE_INDEX);
+        if (sourcePackage == null) {
+            return null;
+        }
+        final OverallState overallState = getOverallState(cursor.getInt(CONFIGURATION_STATE_INDEX),
+                cursor.getInt(DATA_CHANNEL_STATE_INDEX),
+                cursor.getInt(NOTIFICATION_CHANNEL_STATE_INDEX));
+        final Action action = overallState.getAction();
+
+        // No source package or no action, means no message shown.
+        if (action == Action.NONE) {
+            return null;
+        }
+
+        Uri actionUri = null;
+        if (action == Action.CALL_VOICEMAIL) {
+            actionUri = UriUtils.parseUriOrNull(cursor.getString(VOICEMAIL_ACCESS_URI_INDEX));
+            // Even if actionUri is null, it is still be useful to show the notification.
+        } else if (action == Action.CONFIGURE_VOICEMAIL) {
+            actionUri = UriUtils.parseUriOrNull(cursor.getString(SETTINGS_URI_INDEX));
+            // If there is no settings URI, there is no point in showing the notification.
+            if (actionUri == null) {
+                return null;
+            }
+        }
+        return new MessageStatusWithPriority(
+                new StatusMessage(sourcePackage, overallState.getCallLogMessageId(),
+                        overallState.getCallDetailsMessageId(), action.getMessageId(),
+                        actionUri),
+                overallState.getPriority());
+    }
+
+    private OverallState getOverallState(int configurationState, int dataChannelState,
+            int notificationChannelState) {
+        if (configurationState == CONFIGURATION_STATE_OK) {
+            // Voicemail is configured. Let's see how is the data channel.
+            if (dataChannelState == DATA_CHANNEL_STATE_OK) {
+                // Data channel is fine. What about notification channel?
+                if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_OK) {
+                    return OverallState.OK;
+                } else if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING) {
+                    return OverallState.NO_DETAILED_NOTIFICATION;
+                } else if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_NO_CONNECTION) {
+                    return OverallState.NO_NOTIFICATIONS;
+                }
+            } else if (dataChannelState == DATA_CHANNEL_STATE_NO_CONNECTION) {
+                // Data channel is not working. What about notification channel?
+                if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_OK) {
+                    return OverallState.NO_DATA;
+                } else if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING) {
+                    return OverallState.MESSAGE_WAITING;
+                } else if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_NO_CONNECTION) {
+                    return OverallState.NO_CONNECTION;
+                }
+            }
+        } else if (configurationState == CONFIGURATION_STATE_CAN_BE_CONFIGURED) {
+            // Voicemail not configured. data/notification channel states are irrelevant.
+            return OverallState.INVITE_FOR_CONFIGURATION;
+        } else if (configurationState == Status.CONFIGURATION_STATE_NOT_CONFIGURED) {
+            // Voicemail not configured. data/notification channel states are irrelevant.
+            return OverallState.NOT_CONFIGURED;
+        }
+        // Will reach here only if the source has set an invalid value.
+        return OverallState.INVALID;
+    }
+}
diff --git a/src/com/android/dialer/voicemail/WiredHeadsetManager.java b/src/com/android/dialer/voicemail/WiredHeadsetManager.java
new file mode 100644
index 0000000..7351f4f
--- /dev/null
+++ b/src/com/android/dialer/voicemail/WiredHeadsetManager.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2015 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.dialer.voicemail;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.media.AudioManager;
+import android.util.Log;
+
+/** Listens for and caches headset state. */
+class WiredHeadsetManager {
+    private static final String TAG = WiredHeadsetManager.class.getSimpleName();
+
+    interface Listener {
+        void onWiredHeadsetPluggedInChanged(boolean oldIsPluggedIn, boolean newIsPluggedIn);
+    }
+
+    /** Receiver for wired headset plugged and unplugged events. */
+    private class WiredHeadsetBroadcastReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (AudioManager.ACTION_HEADSET_PLUG.equals(intent.getAction())) {
+                boolean isPluggedIn = intent.getIntExtra("state", 0) == 1;
+                Log.v(TAG, "ACTION_HEADSET_PLUG event, plugged in: " + isPluggedIn);
+                onHeadsetPluggedInChanged(isPluggedIn);
+            }
+        }
+    }
+
+    private final WiredHeadsetBroadcastReceiver mReceiver;
+    private boolean mIsPluggedIn;
+    private Listener mListener;
+    private Context mContext;
+
+    WiredHeadsetManager(Context context) {
+        mContext = context;
+        mReceiver = new WiredHeadsetBroadcastReceiver();
+
+        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+        mIsPluggedIn = audioManager.isWiredHeadsetOn();
+
+    }
+
+    void setListener(Listener listener) {
+        mListener = listener;
+    }
+
+    boolean isPluggedIn() {
+        return mIsPluggedIn;
+    }
+
+    void registerReceiver() {
+        // Register for misc other intent broadcasts.
+        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
+        mContext.registerReceiver(mReceiver, intentFilter);
+    }
+
+    void unregisterReceiver() {
+        mContext.unregisterReceiver(mReceiver);
+    }
+
+    private void onHeadsetPluggedInChanged(boolean isPluggedIn) {
+        if (mIsPluggedIn != isPluggedIn) {
+            Log.v(TAG, "onHeadsetPluggedInChanged, mIsPluggedIn: " + mIsPluggedIn + " -> "
+                    + isPluggedIn);
+            boolean oldIsPluggedIn = mIsPluggedIn;
+            mIsPluggedIn = isPluggedIn;
+            if (mListener != null) {
+                mListener.onWiredHeadsetPluggedInChanged(oldIsPluggedIn, mIsPluggedIn);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/dialer/widget/ActionBarController.java b/src/com/android/dialer/widget/ActionBarController.java
new file mode 100644
index 0000000..edf57b1
--- /dev/null
+++ b/src/com/android/dialer/widget/ActionBarController.java
@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2013 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.dialer.widget;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import android.animation.ValueAnimator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.os.Bundle;
+import android.util.Log;
+
+import com.android.dialer.DialtactsActivity;
+import com.android.phone.common.animation.AnimUtils.AnimationCallback;
+
+/**
+ * Controls the various animated properties of the actionBar: showing/hiding, fading/revealing,
+ * and collapsing/expanding, and assigns suitable properties to the actionBar based on the
+ * current state of the UI.
+ */
+public class ActionBarController {
+    public static final boolean DEBUG = DialtactsActivity.DEBUG;
+    public static final String TAG = "ActionBarController";
+    private static final String KEY_IS_SLID_UP = "key_actionbar_is_slid_up";
+    private static final String KEY_IS_FADED_OUT = "key_actionbar_is_faded_out";
+    private static final String KEY_IS_EXPANDED = "key_actionbar_is_expanded";
+
+    private ActivityUi mActivityUi;
+    private SearchEditTextLayout mSearchBox;
+
+    private boolean mIsActionBarSlidUp;
+
+    private final AnimationCallback mFadeOutCallback = new AnimationCallback() {
+        @Override
+        public void onAnimationEnd() {
+            slideActionBar(true /* slideUp */, false /* animate */);
+        }
+
+        @Override
+        public void onAnimationCancel() {
+            slideActionBar(true /* slideUp */, false /* animate */);
+        }
+    };
+
+    public interface ActivityUi {
+        public boolean isInSearchUi();
+        public boolean hasSearchQuery();
+        public boolean shouldShowActionBar();
+        public int getActionBarHeight();
+        public int getActionBarHideOffset();
+        public void setActionBarHideOffset(int offset);
+    }
+
+    public ActionBarController(ActivityUi activityUi, SearchEditTextLayout searchBox) {
+        mActivityUi = activityUi;
+        mSearchBox = searchBox;
+    }
+
+    /**
+     * @return Whether or not the action bar is currently showing (both slid down and visible)
+     */
+    public boolean isActionBarShowing() {
+        return !mIsActionBarSlidUp && !mSearchBox.isFadedOut();
+    }
+
+    /**
+     * Called when the user has tapped on the collapsed search box, to start a new search query.
+     */
+    public void onSearchBoxTapped() {
+        if (DEBUG) {
+            Log.d(TAG, "OnSearchBoxTapped: isInSearchUi " + mActivityUi.isInSearchUi());
+        }
+        if (!mActivityUi.isInSearchUi()) {
+            mSearchBox.expand(true /* animate */, true /* requestFocus */);
+        }
+    }
+
+    /**
+     * Called when search UI has been exited for some reason.
+     */
+    public void onSearchUiExited() {
+        if (DEBUG) {
+            Log.d(TAG, "OnSearchUIExited: isExpanded " + mSearchBox.isExpanded()
+                    + " isFadedOut: " + mSearchBox.isFadedOut()
+                    + " shouldShowActionBar: " + mActivityUi.shouldShowActionBar());
+        }
+        if (mSearchBox.isExpanded()) {
+            mSearchBox.collapse(true /* animate */);
+        }
+        if (mSearchBox.isFadedOut()) {
+            mSearchBox.fadeIn();
+        }
+
+        if (mActivityUi.shouldShowActionBar()) {
+            slideActionBar(false /* slideUp */, false /* animate */);
+        } else {
+            slideActionBar(true /* slideUp */, false /* animate */);
+        }
+    }
+
+    /**
+     * Called to indicate that the user is trying to hide the dialpad. Should be called before
+     * any state changes have actually occurred.
+     */
+    public void onDialpadDown() {
+        if (DEBUG) {
+            Log.d(TAG, "OnDialpadDown: isInSearchUi " + mActivityUi.isInSearchUi()
+                    + " hasSearchQuery: " + mActivityUi.hasSearchQuery()
+                    + " isFadedOut: " + mSearchBox.isFadedOut()
+                    + " isExpanded: " + mSearchBox.isExpanded());
+        }
+        if (mActivityUi.isInSearchUi()) {
+            if (mActivityUi.hasSearchQuery()) {
+                if (mSearchBox.isFadedOut()) {
+                    mSearchBox.setVisible(true);
+                }
+                if (!mSearchBox.isExpanded()) {
+                    mSearchBox.expand(false /* animate */, false /* requestFocus */);
+                }
+                slideActionBar(false /* slideUp */, true /* animate */);
+            } else {
+                mSearchBox.fadeIn();
+            }
+        }
+    }
+
+    /**
+     * Called to indicate that the user is trying to show the dialpad. Should be called before
+     * any state changes have actually occurred.
+     */
+    public void onDialpadUp() {
+        if (DEBUG) {
+            Log.d(TAG, "OnDialpadUp: isInSearchUi " + mActivityUi.isInSearchUi());
+        }
+        if (mActivityUi.isInSearchUi()) {
+            slideActionBar(true /* slideUp */, true /* animate */);
+        } else {
+            // From the lists fragment
+            mSearchBox.fadeOut(mFadeOutCallback);
+        }
+    }
+
+    public void slideActionBar(boolean slideUp, boolean animate) {
+        if (DEBUG) {
+            Log.d(TAG, "Sliding actionBar - up: " + slideUp + " animate: " + animate);
+        }
+        if (animate) {
+            ValueAnimator animator =
+                    slideUp ? ValueAnimator.ofFloat(0, 1) : ValueAnimator.ofFloat(1, 0);
+            animator.addUpdateListener(new AnimatorUpdateListener() {
+                @Override
+                public void onAnimationUpdate(ValueAnimator animation) {
+                    final float value = (float) animation.getAnimatedValue();
+                    setHideOffset(
+                            (int) (mActivityUi.getActionBarHeight() * value));
+                }
+            });
+            animator.start();
+        } else {
+           setHideOffset(slideUp ? mActivityUi.getActionBarHeight() : 0);
+        }
+        mIsActionBarSlidUp = slideUp;
+    }
+
+    public void setAlpha(float alphaValue) {
+        mSearchBox.animate().alpha(alphaValue).start();
+    }
+
+    public void setHideOffset(int offset) {
+        mIsActionBarSlidUp = offset >= mActivityUi.getActionBarHeight();
+        mActivityUi.setActionBarHideOffset(offset);
+    }
+
+    /**
+     * @return The offset the action bar is being translated upwards by
+     */
+    public int getHideOffset() {
+        return mActivityUi.getActionBarHideOffset();
+    }
+
+    public int getActionBarHeight() {
+        return mActivityUi.getActionBarHeight();
+    }
+
+    /**
+     * Saves the current state of the action bar into a provided {@link Bundle}
+     */
+    public void saveInstanceState(Bundle outState) {
+        outState.putBoolean(KEY_IS_SLID_UP, mIsActionBarSlidUp);
+        outState.putBoolean(KEY_IS_FADED_OUT, mSearchBox.isFadedOut());
+        outState.putBoolean(KEY_IS_EXPANDED, mSearchBox.isExpanded());
+    }
+
+    /**
+     * Restores the action bar state from a provided {@link Bundle}.
+     */
+    public void restoreInstanceState(Bundle inState) {
+        mIsActionBarSlidUp = inState.getBoolean(KEY_IS_SLID_UP);
+
+        final boolean isSearchBoxFadedOut = inState.getBoolean(KEY_IS_FADED_OUT);
+        if (isSearchBoxFadedOut) {
+            if (!mSearchBox.isFadedOut()) {
+                mSearchBox.setVisible(false);
+            }
+        } else if (mSearchBox.isFadedOut()) {
+                mSearchBox.setVisible(true);
+        }
+
+        final boolean isSearchBoxExpanded = inState.getBoolean(KEY_IS_EXPANDED);
+        if (isSearchBoxExpanded) {
+            if (!mSearchBox.isExpanded()) {
+                mSearchBox.expand(false, false);
+            }
+        } else if (mSearchBox.isExpanded()) {
+                mSearchBox.collapse(false);
+        }
+    }
+
+    /**
+     * This should be called after onCreateOptionsMenu has been called, when the actionbar has
+     * been laid out and actually has a height.
+     */
+    public void restoreActionBarOffset() {
+        slideActionBar(mIsActionBarSlidUp /* slideUp */, false /* animate */);
+    }
+
+    @VisibleForTesting
+    public boolean getIsActionBarSlidUp() {
+        return mIsActionBarSlidUp;
+    }
+}
diff --git a/src/com/android/dialer/widget/EmptyContentView.java b/src/com/android/dialer/widget/EmptyContentView.java
new file mode 100644
index 0000000..719fd3f
--- /dev/null
+++ b/src/com/android/dialer/widget/EmptyContentView.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2015 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.dialer.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.dialer.R;
+
+public class EmptyContentView extends LinearLayout implements View.OnClickListener {
+
+    public static final int NO_LABEL = 0;
+    public static final int NO_IMAGE = 0;
+
+    private ImageView mImageView;
+    private TextView mDescriptionView;
+    private TextView mActionView;
+    private OnEmptyViewActionButtonClickedListener mOnActionButtonClickedListener;
+
+    public interface OnEmptyViewActionButtonClickedListener {
+        public void onEmptyViewActionButtonClicked();
+    }
+
+    public EmptyContentView(Context context) {
+        this(context, null);
+    }
+
+    public EmptyContentView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        setOrientation(LinearLayout.VERTICAL);
+
+        final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
+                Context.LAYOUT_INFLATER_SERVICE);
+        inflater.inflate(R.layout.empty_content_view, this);
+        // Don't let touches fall through the empty view.
+        setClickable(true);
+        mImageView = (ImageView) findViewById(R.id.emptyListViewImage);
+        mDescriptionView = (TextView) findViewById(R.id.emptyListViewMessage);
+        mActionView = (TextView) findViewById(R.id.emptyListViewAction);
+        mActionView.setOnClickListener(this);
+    }
+
+    public void setDescription(int resourceId) {
+        if (resourceId == NO_LABEL) {
+            mDescriptionView.setText(null);
+            mDescriptionView.setVisibility(View.GONE);
+        } else {
+            mDescriptionView.setText(resourceId);
+            mDescriptionView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public void setImage(int resourceId) {
+        if (resourceId == NO_LABEL) {
+            mImageView.setImageDrawable(null);
+            mImageView.setVisibility(View.GONE);
+        } else {
+            mImageView.setImageResource(resourceId);
+            mImageView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public void setActionLabel(int resourceId) {
+        if (resourceId == NO_LABEL) {
+            mActionView.setText(null);
+            mActionView.setVisibility(View.GONE);
+        } else {
+            mActionView.setText(resourceId);
+            mActionView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public boolean isShowingContent() {
+        return mImageView.getVisibility() == View.VISIBLE
+                || mDescriptionView.getVisibility() == View.VISIBLE
+                || mActionView.getVisibility() == View.VISIBLE;
+    }
+
+    public void setActionClickedListener(OnEmptyViewActionButtonClickedListener listener) {
+        mOnActionButtonClickedListener = listener;
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (mOnActionButtonClickedListener != null) {
+            mOnActionButtonClickedListener.onEmptyViewActionButtonClicked();
+        }
+    }
+}
diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java
new file mode 100644
index 0000000..4f100dc
--- /dev/null
+++ b/src/com/android/dialer/widget/SearchEditTextLayout.java
@@ -0,0 +1,321 @@
+/*
+ * Copyright (C) 2014 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.dialer.widget;
+
+import android.animation.ValueAnimator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.FrameLayout;
+
+import com.android.dialer.R;
+import com.android.dialer.util.DialerUtils;
+import com.android.phone.common.animation.AnimUtils;
+
+public class SearchEditTextLayout extends FrameLayout {
+    private static final float EXPAND_MARGIN_FRACTION_START = 0.8f;
+    private static final int ANIMATION_DURATION = 200;
+
+    private OnKeyListener mPreImeKeyListener;
+    private int mTopMargin;
+    private int mBottomMargin;
+    private int mLeftMargin;
+    private int mRightMargin;
+
+    private float mCollapsedElevation;
+
+    /* Subclass-visible for testing */
+    protected boolean mIsExpanded = false;
+    protected boolean mIsFadedOut = false;
+
+    private View mCollapsed;
+    private View mExpanded;
+    private EditText mSearchView;
+    private View mSearchIcon;
+    private View mCollapsedSearchBox;
+    private View mVoiceSearchButtonView;
+    private View mOverflowButtonView;
+    private View mBackButtonView;
+    private View mExpandedSearchBox;
+    private View mClearButtonView;
+
+    private ValueAnimator mAnimator;
+
+    private Callback mCallback;
+
+    /**
+     * Listener for the back button next to the search view being pressed
+     */
+    public interface Callback {
+        public void onBackButtonClicked();
+        public void onSearchViewClicked();
+    }
+
+    public SearchEditTextLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public void setPreImeKeyListener(OnKeyListener listener) {
+        mPreImeKeyListener = listener;
+    }
+
+    public void setCallback(Callback listener) {
+        mCallback = listener;
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        MarginLayoutParams params = (MarginLayoutParams) getLayoutParams();
+        mTopMargin = params.topMargin;
+        mBottomMargin = params.bottomMargin;
+        mLeftMargin = params.leftMargin;
+        mRightMargin = params.rightMargin;
+
+        mCollapsedElevation = getElevation();
+
+        mCollapsed = findViewById(R.id.search_box_collapsed);
+        mExpanded = findViewById(R.id.search_box_expanded);
+        mSearchView = (EditText) mExpanded.findViewById(R.id.search_view);
+
+        mSearchIcon = findViewById(R.id.search_magnifying_glass);
+        mCollapsedSearchBox = findViewById(R.id.search_box_start_search);
+        mVoiceSearchButtonView = findViewById(R.id.voice_search_button);
+        mOverflowButtonView = findViewById(R.id.dialtacts_options_menu_button);
+        mBackButtonView = findViewById(R.id.search_back_button);
+        mExpandedSearchBox = findViewById(R.id.search_box_expanded);
+        mClearButtonView = findViewById(R.id.search_close_button);
+
+        // Convert a long click into a click to expand the search box, and then long click on the
+        // search view. This accelerates the long-press scenario for copy/paste.
+        mCollapsedSearchBox.setOnLongClickListener(new OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View view) {
+                mCollapsedSearchBox.performClick();
+                mSearchView.performLongClick();
+                return false;
+            }
+        });
+
+        mSearchView.setOnFocusChangeListener(new OnFocusChangeListener() {
+            @Override
+            public void onFocusChange(View v, boolean hasFocus) {
+                if (hasFocus) {
+                    DialerUtils.showInputMethod(v);
+                } else {
+                    DialerUtils.hideInputMethod(v);
+                }
+            }
+        });
+
+        mSearchView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mCallback != null) {
+                    mCallback.onSearchViewClicked();
+                }
+            }
+        });
+
+        mSearchView.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+                mClearButtonView.setVisibility(TextUtils.isEmpty(s) ? View.GONE : View.VISIBLE);
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+            }
+        });
+
+        findViewById(R.id.search_close_button).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mSearchView.setText(null);
+            }
+        });
+
+        findViewById(R.id.search_back_button).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mCallback != null) {
+                    mCallback.onBackButtonClicked();
+                }
+            }
+        });
+
+        super.onFinishInflate();
+    }
+
+    @Override
+    public boolean dispatchKeyEventPreIme(KeyEvent event) {
+        if (mPreImeKeyListener != null) {
+            if (mPreImeKeyListener.onKey(this, event.getKeyCode(), event)) {
+                return true;
+            }
+        }
+        return super.dispatchKeyEventPreIme(event);
+    }
+
+    public void fadeOut() {
+        fadeOut(null);
+    }
+
+    public void fadeOut(AnimUtils.AnimationCallback callback) {
+        AnimUtils.fadeOut(this, ANIMATION_DURATION, callback);
+        mIsFadedOut = true;
+    }
+
+    public void fadeIn() {
+        AnimUtils.fadeIn(this, ANIMATION_DURATION);
+        mIsFadedOut = false;
+    }
+
+    public void setVisible(boolean visible) {
+        if (visible) {
+            setAlpha(1);
+            setVisibility(View.VISIBLE);
+            mIsFadedOut = false;
+        } else {
+            setAlpha(0);
+            setVisibility(View.GONE);
+            mIsFadedOut = true;
+        }
+    }
+
+    public void expand(boolean animate, boolean requestFocus) {
+        updateVisibility(true /* isExpand */);
+
+        if (animate) {
+            AnimUtils.crossFadeViews(mExpanded, mCollapsed, ANIMATION_DURATION);
+            mAnimator = ValueAnimator.ofFloat(EXPAND_MARGIN_FRACTION_START, 0f);
+            setMargins(EXPAND_MARGIN_FRACTION_START);
+            prepareAnimator(true);
+        } else {
+            mExpanded.setVisibility(View.VISIBLE);
+            mExpanded.setAlpha(1);
+            setMargins(0f);
+            mCollapsed.setVisibility(View.GONE);
+        }
+
+        // Set 9-patch background. This owns the padding, so we need to restore the original values.
+        int paddingTop = this.getPaddingTop();
+        int paddingStart = this.getPaddingStart();
+        int paddingBottom = this.getPaddingBottom();
+        int paddingEnd = this.getPaddingEnd();
+        setBackgroundResource(R.drawable.search_shadow);
+        setElevation(0);
+        setPaddingRelative(paddingStart, paddingTop, paddingEnd, paddingBottom);
+
+        if (requestFocus) {
+            mSearchView.requestFocus();
+        }
+        mIsExpanded = true;
+    }
+
+    public void collapse(boolean animate) {
+        updateVisibility(false /* isExpand */);
+
+        if (animate) {
+            AnimUtils.crossFadeViews(mCollapsed, mExpanded, ANIMATION_DURATION);
+            mAnimator = ValueAnimator.ofFloat(0f, 1f);
+            prepareAnimator(false);
+        } else {
+            mCollapsed.setVisibility(View.VISIBLE);
+            mCollapsed.setAlpha(1);
+            setMargins(1f);
+            mExpanded.setVisibility(View.GONE);
+        }
+
+        mIsExpanded = false;
+        setElevation(mCollapsedElevation);
+        setBackgroundResource(R.drawable.rounded_corner);
+    }
+
+    /**
+     * Updates the visibility of views depending on whether we will show the expanded or collapsed
+     * search view. This helps prevent some jank with the crossfading if we are animating.
+     *
+     * @param isExpand Whether we are about to show the expanded search box.
+     */
+    private void updateVisibility(boolean isExpand) {
+        int collapsedViewVisibility = isExpand ? View.GONE : View.VISIBLE;
+        int expandedViewVisibility = isExpand ? View.VISIBLE : View.GONE;
+
+        mSearchIcon.setVisibility(collapsedViewVisibility);
+        mCollapsedSearchBox.setVisibility(collapsedViewVisibility);
+        mVoiceSearchButtonView.setVisibility(collapsedViewVisibility);
+        mOverflowButtonView.setVisibility(collapsedViewVisibility);
+        mBackButtonView.setVisibility(expandedViewVisibility);
+        // TODO: Prevents keyboard from jumping up in landscape mode after exiting the
+        // SearchFragment when the query string is empty. More elegant fix?
+        //mExpandedSearchBox.setVisibility(expandedViewVisibility);
+        if (TextUtils.isEmpty(mSearchView.getText())) {
+            mClearButtonView.setVisibility(View.GONE);
+        } else {
+            mClearButtonView.setVisibility(expandedViewVisibility);
+        }
+    }
+
+    private void prepareAnimator(final boolean expand) {
+        if (mAnimator != null) {
+            mAnimator.cancel();
+        }
+
+        mAnimator.addUpdateListener(new AnimatorUpdateListener() {
+            @Override
+            public void onAnimationUpdate(ValueAnimator animation) {
+                final Float fraction = (Float) animation.getAnimatedValue();
+                setMargins(fraction);
+            }
+        });
+
+        mAnimator.setDuration(ANIMATION_DURATION);
+        mAnimator.start();
+    }
+
+    public boolean isExpanded() {
+        return mIsExpanded;
+    }
+
+    public boolean isFadedOut() {
+        return mIsFadedOut;
+    }
+
+    /**
+     * Assigns margins to the search box as a fraction of its maximum margin size
+     *
+     * @param fraction How large the margins should be as a fraction of their full size
+     */
+    private void setMargins(float fraction) {
+        MarginLayoutParams params = (MarginLayoutParams) getLayoutParams();
+        params.topMargin = (int) (mTopMargin * fraction);
+        params.bottomMargin = (int) (mBottomMargin * fraction);
+        params.leftMargin = (int) (mLeftMargin * fraction);
+        params.rightMargin = (int) (mRightMargin * fraction);
+        requestLayout();
+    }
+}
diff --git a/src/com/android/dialerbind/DatabaseHelperManager.java b/src/com/android/dialerbind/DatabaseHelperManager.java
new file mode 100644
index 0000000..c929932
--- /dev/null
+++ b/src/com/android/dialerbind/DatabaseHelperManager.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2013 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.dialerbind;
+
+import android.content.Context;
+
+import com.android.dialer.database.DialerDatabaseHelper;
+
+
+public class DatabaseHelperManager {
+    public static DialerDatabaseHelper getDatabaseHelper(Context context) {
+        return DialerDatabaseHelper.getInstance(context);
+    }
+}
diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java
new file mode 100644
index 0000000..299d736
--- /dev/null
+++ b/src/com/android/dialerbind/ObjectFactory.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2013 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.dialerbind;
+
+import static com.android.dialer.calllog.CallLogAdapter.CallFetcher;
+
+import android.content.Context;
+import android.support.annotation.Nullable;
+import android.view.ViewStub;
+
+import com.android.dialer.calllog.CallLogAdapter;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.list.RegularSearchFragment;
+import com.android.dialer.logging.Logger;
+import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialer.service.ExtendedBlockingManager;
+import com.android.dialer.service.SpamButtonRenderer;
+import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
+
+/**
+ * Default static binding for various objects.
+ */
+public class ObjectFactory {
+
+    public static CachedNumberLookupService newCachedNumberLookupService() {
+        // no-op
+        return null;
+    }
+
+    public static String getFilteredNumberProviderAuthority() {
+        return "com.android.dialer.database.filterednumberprovider";
+    }
+
+    @Nullable
+    public static SpamButtonRenderer newSpamButtonRenderer(
+            Context context,
+            ViewStub stub) {
+        return null;
+    }
+
+    @Nullable
+    public static ExtendedBlockingManager getExtendedBlockingManager() {
+        return null;
+    }
+
+    /**
+     * Create a new instance of the call log adapter.
+     * @param context The context to use.
+     * @param callFetcher Instance of call fetcher to use.
+     * @param contactInfoHelper Instance of contact info helper class to use.
+     * @return Instance of CallLogAdapter.
+     */
+    public static CallLogAdapter newCallLogAdapter(
+            Context context,
+            CallFetcher callFetcher,
+            ContactInfoHelper contactInfoHelper,
+            VoicemailPlaybackPresenter voicemailPlaybackPresenter,
+            boolean isCallLogActivity) {
+        return new CallLogAdapter(
+                context,
+                callFetcher,
+                contactInfoHelper,
+                voicemailPlaybackPresenter,
+                isCallLogActivity);
+    }
+
+    public static Logger getLoggerInstance() {
+        // no-op
+        return null;
+    }
+
+    public static RegularSearchFragment newRegularSearchFragment() {
+        return new RegularSearchFragment();
+    }
+}
diff --git a/tests/Android.mk b/tests/Android.mk
new file mode 100644
index 0000000..07f4f00
--- /dev/null
+++ b/tests/Android.mk
@@ -0,0 +1,28 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+# We only want this apk build for tests.
+LOCAL_MODULE_TAGS := tests
+LOCAL_CERTIFICATE := shared
+
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-test
+
+# Include all test java files.
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+src_dirs := src \
+    ../../ContactsCommon/TestCommon/src
+
+# Include all test java files.
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
+
+LOCAL_STATIC_JAVA_LIBRARIES += \
+        mockito-target
+
+LOCAL_PACKAGE_NAME := DialerTests
+
+LOCAL_INSTRUMENTATION_FOR := Dialer
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_PACKAGE)
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
new file mode 100644
index 0000000..40c5502
--- /dev/null
+++ b/tests/AndroidManifest.xml
@@ -0,0 +1,69 @@
+<?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
+  -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.dialer.tests">
+
+    <uses-sdk
+        android:minSdkVersion="23"
+        android:targetSdkVersion="23" />
+
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+    <uses-permission android:name="android.permission.READ_CALL_LOG" />
+    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+
+    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
+    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
+    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
+    <uses-permission android:name="android.permission.READ_SYNC_STATS" />
+    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
+
+    <uses-permission android:name="android.permission.READ_PROFILE" />
+    <uses-permission android:name="android.permission.READ_SOCIAL_STREAM" />
+
+    <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <meta-data android:name="com.android.dialer.iconset" android:resource="@xml/iconset" />
+
+        <activity android:name=".calllog.FillCallLogTestActivity"
+            android:label="Call log filter test"
+            >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
+        android:targetPackage="com.android.dialer"
+        android:label="Dialer app tests">
+    </instrumentation>
+
+    <instrumentation android:name="com.android.dialer.DialerLaunchPerformance"
+        android:targetPackage="com.android.dialer"
+        android:label="Dialer launch performance">
+    </instrumentation>
+
+</manifest>
diff --git a/tests/assets/README.txt b/tests/assets/README.txt
new file mode 100644
index 0000000..6cea058
--- /dev/null
+++ b/tests/assets/README.txt
@@ -0,0 +1,3 @@
+quick_test_recording.mp3 is copyright 2011 by Hugo Hudson and is licensed under a
+Creative Commons Attribution 3.0 Unported License:
+  http://creativecommons.org/licenses/by/3.0/
diff --git a/tests/assets/quick_test_recording.mp3 b/tests/assets/quick_test_recording.mp3
new file mode 100644
index 0000000..ad7cb9c
--- /dev/null
+++ b/tests/assets/quick_test_recording.mp3
Binary files differ
diff --git a/tests/proguard.flags b/tests/proguard.flags
new file mode 100644
index 0000000..3991a14
--- /dev/null
+++ b/tests/proguard.flags
@@ -0,0 +1,20 @@
+-keep class com.android.contacts.model.Sources {
+  public <init>(...);
+}
+
+# Xml files containing onClick (menus and layouts) require that proguard not
+# remove their handlers.
+-keepclassmembers class * extends android.app.Activity {
+  public void *(android.view.View);
+  public void *(android.view.MenuItem);
+}
+
+# Any class or method annotated with NeededForTesting or NeededForReflection.
+-keep @com.android.contacts.common.test.NeededForTesting class *
+-keep @com.android.contacts.test.NeededForReflection class *
+-keepclassmembers class * {
+@com.android.contacts.common.test.NeededForTesting *;
+@com.android.contacts.test.NeededForReflection *;
+}
+
+-verbose
diff --git a/tests/res/drawable/phone_icon.png b/tests/res/drawable/phone_icon.png
new file mode 100644
index 0000000..4e613ec
--- /dev/null
+++ b/tests/res/drawable/phone_icon.png
Binary files differ
diff --git a/tests/res/layout/fill_call_log_test.xml b/tests/res/layout/fill_call_log_test.xml
new file mode 100644
index 0000000..43f475b
--- /dev/null
+++ b/tests/res/layout/fill_call_log_test.xml
@@ -0,0 +1,267 @@
+<?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
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="left"
+>
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/numberOfCallLogEntries"
+    />
+    <EditText
+        android:id="@+id/number"
+        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"
+        android:layout_height="wrap_content"
+        android:text="@string/addToCallLogButton"
+    />
+    <ProgressBar
+        android:id="@+id/progress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:indeterminate="false"
+        android:visibility="gone"
+    />
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/add_custom_entry"
+        />
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="left"
+        >
+        <RadioGroup
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+            <RadioButton
+                android:id="@+id/call_type_incoming"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/call_type_incoming"
+                android:textSize="9sp" />
+            <RadioButton
+                android:id="@+id/call_type_missed"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/call_type_missed"
+                android:textSize="9sp" />
+            <RadioButton
+                android:id="@+id/call_type_outgoing"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/call_type_outgoing"
+                android:textSize="9sp" />
+            <RadioButton
+                android:id="@+id/call_type_voicemail"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/call_type_voicemail"
+                android:textSize="9sp" />
+            <RadioButton
+                android:id="@+id/call_type_custom"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="Custom"
+                android:textSize="9sp" />
+            <EditText
+                android:id="@+id/call_type_custom_text"
+                android:layout_width="90dp"
+                android:layout_height="wrap_content"
+                android:text=""
+                android:inputType="number" />
+        </RadioGroup>
+        <CheckBox
+            android:id="@+id/call_type_video"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/call_type_video"
+            android:textSize="9sp"
+            />
+    </LinearLayout>
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="left"
+        >
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/call_date"
+            />
+        <TextView
+            android:id="@+id/call_date"
+            android:paddingStart="16dp"
+            android:layout_width="120dp"
+            android:layout_height="wrap_content"
+            />
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/edit"
+            android:onClick="showDatePickerDialog" />
+    </LinearLayout>
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="left"
+        >
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/call_time"
+            />
+        <TextView
+            android:id="@+id/call_time"
+            android:paddingStart="16dp"
+            android:layout_width="120dp"
+            android:layout_height="wrap_content"
+            />
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/edit"
+            android:onClick="showTimePickerDialog" />
+    </LinearLayout>
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/call_presentation"
+        />
+    <RadioGroup
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <RadioButton
+            android:id="@+id/presentation_allowed"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/presentation_allowed"
+            android:textSize="9sp" />
+        <RadioButton
+            android:id="@+id/presentation_restricted"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/presentation_restricted"
+            android:textSize="9sp" />
+        <RadioButton
+            android:id="@+id/presentation_unknown"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/presentation_unknown"
+            android:textSize="9sp" />
+        <RadioButton
+            android:id="@+id/presentation_payphone"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/presentation_payphone"
+            android:textSize="9sp" />
+    </RadioGroup>
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="left"
+        >
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/number"
+            />
+        <EditText
+            android:id="@+id/phone_number"
+            android:layout_width="180dp"
+            android:layout_height="wrap_content"
+            android:inputType="phone"
+            />
+    </LinearLayout>
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/call_account" />
+    <RadioGroup
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <RadioButton
+            android:id="@+id/account0"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/account0"
+            android:textSize="9sp" />
+        <RadioButton
+            android:id="@+id/account1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/account1"
+            android:textSize="9sp" />
+        <RadioButton
+            android:id="@+id/no_account"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/no_account"
+            android:textSize="9sp" />
+    </RadioGroup>
+    <Button
+        android:id="@+id/add_custom"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/addToCallLogButton"
+        android:onClick="addManualEntry"
+        />
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="left"
+        >
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/delta_after_add"
+            />
+        <EditText
+            android:id="@+id/delta_after_add"
+            android:layout_width="90dp"
+            android:layout_height="wrap_content"
+            android:text="-1"
+            android:inputType="number"
+            />
+    </LinearLayout>
+</LinearLayout>
diff --git a/tests/res/values/donottranslate_strings.xml b/tests/res/values/donottranslate_strings.xml
new file mode 100644
index 0000000..2f8017c
--- /dev/null
+++ b/tests/res/values/donottranslate_strings.xml
@@ -0,0 +1,60 @@
+<?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
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <string-array name="allIntents">
+        <!-- List modes -->
+        <!-- Various ways to start Contacts -->
+        <item>DIAL</item>
+        <item>DIAL phone (deprecated)</item>
+        <item>DIAL person (deprecated)</item>
+        <item>DIAL voicemail</item>
+        <item>CALL BUTTON</item>
+        <item>DIAL tel</item>
+        <item>VIEW tel</item>
+        <item>VIEW calls (call-log after a phone call)</item>
+        <item>VIEW calls item</item>
+        <item>CallDetailActivity (legacy)</item>
+        <item>CallLogActivity (legacy)</item>
+    </string-array>
+
+    <string name="addToCallLogButton">Add</string>
+    <string name="useRandomNumbers">Use random numbers</string>
+    <string name="numberOfCallLogEntries">Number of call log entries to add:</string>
+    <string name="addedLogEntriesToast">Added %1$d call log entries.</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="add_custom_entry">Add custom call log entry:</string>
+    <string name="call_type_incoming">Incoming</string>
+    <string name="call_type_missed">Missed</string>
+    <string name="call_type_outgoing">Outgoing</string>
+    <string name="call_type_video">Video</string>
+    <string name="call_type_voicemail">Voicemail</string>
+    <string name="call_date">Call date</string>
+    <string name="call_time">Call time</string>
+    <string name="edit">Edit</string>
+    <string name="number">Number</string>
+    <string name="call_presentation">Presentation</string>
+    <string name="presentation_allowed">Allowed</string>
+    <string name="presentation_restricted">Restricted</string>
+    <string name="presentation_unknown">Unknown</string>
+    <string name="presentation_payphone">Payphone</string>
+    <string name="delta_after_add">Offset call time after add (min): </string>
+    <string name="call_account">Account</string>
+    <string name="account0">Account 0</string>
+    <string name="account1">Account 1</string>
+    <string name="no_account">No Account</string>
+</resources>
diff --git a/tests/res/xml/iconset.xml b/tests/res/xml/iconset.xml
new file mode 100644
index 0000000..2f7798d
--- /dev/null
+++ b/tests/res/xml/iconset.xml
@@ -0,0 +1,23 @@
+<?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
+  -->
+
+<icon-set xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <icon android:mimeType="vnd.android.cursor.item/phone"
+        android:icon="@drawable/phone_icon" />
+
+</icon-set>
diff --git a/tests/src-N/com/android/dialer/SdkSelectionUtilsTest.java b/tests/src-N/com/android/dialer/SdkSelectionUtilsTest.java
new file mode 100644
index 0000000..2950ea0
--- /dev/null
+++ b/tests/src-N/com/android/dialer/SdkSelectionUtilsTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2015 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.dialer;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+// @formatter:off
+/**
+ * Run test with
+ * adb shell am instrument -e class com.android.dialer.SdkSelectionUtilsTest -w com.google.android.dialer.tests/android.test.InstrumentationTestRunner
+ */
+// @formatter:on
+@SmallTest
+public class SdkSelectionUtilsTest extends AndroidTestCase {
+
+    public void testTargetNSdk_True() {
+        assertTrue(SdkSelectionUtils.TARGET_N_SDK);
+    }
+}
\ No newline at end of file
diff --git a/tests/src-pre-N/com/android/dialer/SdkSelectionUtilsTest.java b/tests/src-pre-N/com/android/dialer/SdkSelectionUtilsTest.java
new file mode 100644
index 0000000..595f1cc
--- /dev/null
+++ b/tests/src-pre-N/com/android/dialer/SdkSelectionUtilsTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2015 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.dialer;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+// @formatter:off
+/**
+ * Run test with
+ * adb shell am instrument -e class com.android.dialer.SdkSelectionUtilsTest -w com.google.android.dialer.tests/android.test.InstrumentationTestRunner
+ */
+// @formatter:on
+@SmallTest
+public class SdkSelectionUtilsTest extends AndroidTestCase {
+
+    public void testTargetNSdk_False() {
+        assertFalse(SdkSelectionUtils.TARGET_N_SDK);
+    }
+}
\ No newline at end of file
diff --git a/tests/src/com/android/dialer/CallDetailActivityTest.java b/tests/src/com/android/dialer/CallDetailActivityTest.java
new file mode 100644
index 0000000..fec25f6
--- /dev/null
+++ b/tests/src/com/android/dialer/CallDetailActivityTest.java
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer;
+
+import static com.android.dialer.calllog.CallLogAsyncTaskUtil.Tasks;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.CallLog;
+import android.provider.VoicemailContract;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.test.suitebuilder.annotation.Suppress;
+import android.view.Menu;
+import android.widget.PopupMenu;
+import android.widget.TextView;
+
+import com.android.dialer.calllog.CallLogAsyncTaskUtil;
+import com.android.dialer.util.AppCompatConstants;
+import com.android.dialer.util.AsyncTaskExecutors;
+import com.android.dialer.util.FakeAsyncTaskExecutor;
+
+/**
+ * Unit tests for the {@link CallDetailActivity}. NOTE: The screen needs to be on for the
+ * UI-related tests to pass.
+ */
+@LargeTest
+public class CallDetailActivityTest extends ActivityInstrumentationTestCase2<CallDetailActivity> {
+    private static final String CONTACT_NUMBER = "+1412555555";
+    private static final String VOICEMAIL_FILE_LOCATION = "/sdcard/sadlfj893w4j23o9sfu.mp3";
+
+    private Uri mCallLogUri;
+    private Uri mVoicemailUri;
+    private FakeAsyncTaskExecutor mFakeAsyncTaskExecutor;
+    private CallDetailActivity mActivityUnderTest;
+
+    public CallDetailActivityTest() {
+        super(CallDetailActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mFakeAsyncTaskExecutor = new FakeAsyncTaskExecutor(getInstrumentation());
+        AsyncTaskExecutors.setFactoryForTest(mFakeAsyncTaskExecutor.getFactory());
+
+        // I don't like the default of focus-mode for tests, the green focus border makes the
+        // screenshots look weak.
+        setActivityInitialTouchMode(true);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        cleanUpUri();
+
+        AsyncTaskExecutors.setFactoryForTest(null);
+        CallLogAsyncTaskUtil.resetForTest();
+
+        super.tearDown();
+    }
+
+    /** Test for bug where missing Extras on intent used to start Activity causes NPE. */
+    public void testCallLogUriWithMissingExtrasShouldNotCauseNPE() throws Throwable {
+        setActivityIntentForTestCallEntry();
+        startActivityUnderTest();
+    }
+
+    /**
+     * Verifies the trash menu item is present and a voicemail URI is set.
+     */
+    @Suppress
+    public void testVoicemailDeleteButton() throws Throwable {
+        setActivityIntentForTestVoicemailEntry();
+        startActivityUnderTest();
+        mFakeAsyncTaskExecutor.runTask(Tasks.GET_CALL_DETAILS);
+
+        Menu optionsMenu = (new PopupMenu(mActivityUnderTest, null)).getMenu();
+        mActivityUnderTest.onCreateOptionsMenu(optionsMenu);
+        mActivityUnderTest.onPrepareOptionsMenu(optionsMenu);
+
+        assertTrue(mActivityUnderTest.hasVoicemail());
+        mActivityUnderTest.runOnUiThread(new Runnable() {
+            public void run() {
+                mActivityUnderTest.findViewById(R.id.call_detail_delete_menu_item).performClick();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+        mFakeAsyncTaskExecutor.runTask(Tasks.DELETE_VOICEMAIL);
+    }
+
+    /**
+     * Verifies the trash menu item is present and a voicemail URI is not set.
+     */
+    @Suppress
+    public void testRegularCallDoesHaveRemoveFromCallLog() throws Throwable {
+        setActivityIntentForTestCallEntry();
+        startActivityUnderTest();
+        mFakeAsyncTaskExecutor.runTask(Tasks.GET_CALL_DETAILS);
+
+        Menu optionsMenu = (new PopupMenu(mActivityUnderTest, null)).getMenu();
+        mActivityUnderTest.onCreateOptionsMenu(optionsMenu);
+        mActivityUnderTest.onPrepareOptionsMenu(optionsMenu);
+
+        assertFalse(mActivityUnderTest.hasVoicemail());
+        mActivityUnderTest.runOnUiThread(new Runnable() {
+            public void run() {
+                mActivityUnderTest.findViewById(R.id.call_detail_delete_menu_item).performClick();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+        mFakeAsyncTaskExecutor.runTask(Tasks.DELETE_CALL);
+    }
+
+    private void setActivityIntentForTestCallEntry() {
+        assertNull(mVoicemailUri);
+        assertNull(mCallLogUri);
+        ContentResolver contentResolver = getContentResolver();
+        ContentValues values = new ContentValues();
+        values.put(CallLog.Calls.NUMBER, CONTACT_NUMBER);
+        values.put(CallLog.Calls.NUMBER_PRESENTATION, CallLog.Calls.PRESENTATION_ALLOWED);
+        values.put(CallLog.Calls.TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
+        mCallLogUri = contentResolver.insert(CallLog.Calls.CONTENT_URI, values);
+        setActivityIntent(new Intent(Intent.ACTION_VIEW, mCallLogUri));
+    }
+
+    private void setActivityIntentForTestVoicemailEntry() {
+        assertNull(mVoicemailUri);
+        ContentResolver contentResolver = getContentResolver();
+        ContentValues values = new ContentValues();
+        values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
+        values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
+        // VoicemailContract.Voicemails._DATA
+        values.put("_data", VOICEMAIL_FILE_LOCATION);
+        mVoicemailUri = contentResolver.insert(VoicemailContract.Voicemails.CONTENT_URI, values);
+
+        Uri callLogUri = ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
+                ContentUris.parseId(mVoicemailUri));
+        Intent intent = new Intent(Intent.ACTION_VIEW, callLogUri);
+        intent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI, mVoicemailUri);
+        setActivityIntent(intent);
+    }
+
+    private void cleanUpUri() {
+        if (mVoicemailUri != null) {
+            getContentResolver().delete(VoicemailContract.Voicemails.CONTENT_URI,
+                    "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mVoicemailUri)) });
+            mVoicemailUri = null;
+        }
+        if (mCallLogUri != null) {
+            getContentResolver().delete(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
+                    "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mCallLogUri)) });
+            mCallLogUri = null;
+        }
+    }
+
+    private ContentResolver getContentResolver() {
+        return getInstrumentation().getTargetContext().getContentResolver();
+    }
+
+    private void startActivityUnderTest() throws Throwable {
+        assertNull(mActivityUnderTest);
+        mActivityUnderTest = getActivity();
+        assertNotNull("activity should not be null", mActivityUnderTest);
+    }
+}
diff --git a/tests/src/com/android/dialer/DialerLaunchPerformance.java b/tests/src/com/android/dialer/DialerLaunchPerformance.java
new file mode 100644
index 0000000..c409cc6
--- /dev/null
+++ b/tests/src/com/android/dialer/DialerLaunchPerformance.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2007 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.dialer;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.contacts.common.test.LaunchPerformanceBase;
+
+/**
+ * Instrumentation class for Address Book launch performance testing.
+ */
+public class DialerLaunchPerformance extends LaunchPerformanceBase {
+
+    @Override
+    public void onCreate(Bundle arguments) {
+        mIntent.setAction(Intent.ACTION_MAIN);
+        mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
+        mIntent.setComponent(new ComponentName("com.android.contacts",
+                "testcom.android.dialer.DialtactsActivity"));
+
+        start();
+    }
+
+    /**
+     * Calls LaunchApp and finish.
+     */
+    @Override
+    public void onStart() {
+        super.onStart();
+        LaunchApp();
+        finish(Activity.RESULT_OK, mResults);
+    }
+}
diff --git a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
new file mode 100644
index 0000000..80dfe35
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
@@ -0,0 +1,813 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.Intent;
+import android.database.MatrixCursor;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.VoicemailContract;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.text.TextUtils;
+import android.view.View;
+
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.dialer.contactinfo.ContactInfoCache;
+import com.android.dialer.util.AppCompatConstants;
+import com.android.dialer.util.TestConstants;
+import com.google.common.collect.Lists;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Unit tests for {@link CallLogAdapter}.
+ *
+ * adb shell am instrument \
+ *     -e com.android.dialer.calllog.CallLogAdapterTest \
+ *     -w com.android.dialer.tests/android.test.InstrumentationTestRunner
+ */
+public class CallLogAdapterTest extends AndroidTestCase {
+    private static final String EMPTY_STRING = "";
+    private static final int NO_VALUE_SET = -1;
+
+    private static final String TEST_CACHED_NAME_PRIMARY = "Cached Name";
+    private static final String TEST_CACHED_NAME_ALTERNATIVE = "Name Cached";
+    private static final String CONTACT_NAME_PRIMARY = "Contact Name";
+    private static final String CONTACT_NAME_ALTERNATIVE = "Name, Contact";
+    private static final String TEST_CACHED_NUMBER_LABEL = "label";
+    private static final int TEST_CACHED_NUMBER_TYPE = 1;
+    private static final String TEST_COUNTRY_ISO = "US";
+    private static final String TEST_DEFAULT_CUSTOM_LABEL = "myLabel";
+    private static final Uri TEST_LOOKUP_URI = Uri.parse("content://contacts/2");
+
+    private static final String TEST_NUMBER = "12125551000";
+    private static final String TEST_NUMBER_1 = "12345678";
+    private static final String TEST_NUMBER_2 = "87654321";
+    private static final String TEST_NUMBER_3 = "18273645";
+    private static final String TEST_POST_DIAL_DIGITS = ";12345";
+    private static final String TEST_FORMATTED_NUMBER = "1 212-555-1000";
+
+    // The object under test.
+    private TestCallLogAdapter mAdapter;
+
+    private MatrixCursor mCursor;
+
+    private View mView;
+    private CallLogListItemViewHolder mViewHolder;
+    private Random mRandom;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mRandom = new Random();
+
+        // Use a call fetcher that does not do anything.
+        CallLogAdapter.CallFetcher fakeCallFetcher = new CallLogAdapter.CallFetcher() {
+            @Override
+            public void fetchCalls() {}
+        };
+
+        ContactInfoHelper fakeContactInfoHelper =
+                new ContactInfoHelper(getContext(), TEST_COUNTRY_ISO) {
+                    @Override
+                    public ContactInfo lookupNumber(String number, String countryIso) {
+                        ContactInfo info = new ContactInfo();
+                        info.number = number;
+                        info.formattedNumber = number;
+                        return info;
+                    }
+                };
+
+        mAdapter = new TestCallLogAdapter(getContext(), fakeCallFetcher, fakeContactInfoHelper);
+
+        // The cursor used in the tests to store the entries to display.
+        mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
+        mCursor.moveToFirst();
+
+        // The views into which to store the data.
+        mViewHolder = CallLogListItemViewHolder.createForTest(getContext());
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mAdapter = null;
+        mCursor = null;
+        super.tearDown();
+    }
+
+    @MediumTest
+    public void testBindView_NumberOnlyNoCache() {
+        createCallLogEntry();
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertNameIs(mViewHolder, TEST_NUMBER);
+    }
+
+    @MediumTest
+    public void testBindView_PrivateCall() {
+        createPrivateCallLogEntry();
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertEquals(Calls.PRESENTATION_RESTRICTED, mViewHolder.numberPresentation);
+        assertNull(mViewHolder.primaryActionButtonView.getTag());
+        // QC should be disabled since there are no actions to be performed on this
+        // call.
+        assertFalse(mViewHolder.quickContactView.isEnabled());
+    }
+
+    @MediumTest
+    public void testBindView_UnknownCall() {
+        createUnknownCallLogEntry();
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertEquals(Calls.PRESENTATION_UNKNOWN, mViewHolder.numberPresentation);
+        assertNull(mViewHolder.primaryActionButtonView.getTag());
+        // QC should be disabled since there are no actions to be performed on this
+        // call.
+        assertFalse(mViewHolder.quickContactView.isEnabled());
+    }
+
+    @MediumTest
+    public void testBindView_WithoutQuickContactBadge() {
+        createCallLogEntry();
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        //assertFalse(mViewHolder.quickContactView.isEnabled());
+    }
+
+    @MediumTest
+    public void testBindView_CallButton() {
+        createCallLogEntry();
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        // The primaryActionView tag is set when the ViewHolder is binded. If it is possible
+        // to place a call to the phone number, a call intent will have been created which
+        // starts a phone call to the entry's number.
+        assertHasCallAction(mViewHolder);
+    }
+
+    @MediumTest
+    public void testBindView_FirstNameFirstOrder() {
+        createCallLogEntry();
+
+        mAdapter.getContactInfoCache()
+                .mockGetValue(createContactInfo(CONTACT_NAME_PRIMARY, CONTACT_NAME_ALTERNATIVE));
+
+        setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+        assertEquals(CONTACT_NAME_PRIMARY, mViewHolder.phoneCallDetailsViews.nameView.getText());
+    }
+
+    @MediumTest
+    public void testBindView_LastNameFirstOrder() {
+        createCallLogEntry();
+
+        mAdapter.getContactInfoCache()
+                .mockGetValue(createContactInfo(CONTACT_NAME_PRIMARY, CONTACT_NAME_ALTERNATIVE));
+
+        setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+        assertEquals(CONTACT_NAME_ALTERNATIVE,
+                mViewHolder.phoneCallDetailsViews.nameView.getText());
+    }
+
+    @MediumTest
+    public void testBindView_NameOrderCorrectOnChange() {
+        createCallLogEntry();
+
+        mAdapter.getContactInfoCache()
+                .mockGetValue(createContactInfo(CONTACT_NAME_PRIMARY, CONTACT_NAME_ALTERNATIVE));
+
+        Context context = getContext();
+        setNameDisplayOrder(context, ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+        assertEquals(CONTACT_NAME_PRIMARY,
+                mViewHolder.phoneCallDetailsViews.nameView.getText());
+
+        setNameDisplayOrder(context, ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
+        mAdapter.onResume();
+
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+        assertEquals(CONTACT_NAME_ALTERNATIVE,
+                mViewHolder.phoneCallDetailsViews.nameView.getText());
+    }
+
+    private void setNameDisplayOrder(Context context, int displayOrder) {
+        context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE).edit().putInt(
+                ContactsPreferences.DISPLAY_ORDER_KEY, displayOrder).commit();
+    }
+
+    @MediumTest
+    public void testBindView_CallButtonWithPostDialDigits() {
+        createCallLogEntry(TEST_NUMBER, TEST_POST_DIAL_DIGITS, NO_VALUE_SET, NO_VALUE_SET);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        if (PhoneNumberDisplayUtil.canShowPostDial()) {
+            assertHasCallActionToGivenNumber(mViewHolder, TEST_NUMBER + TEST_POST_DIAL_DIGITS);
+        }
+    }
+
+    @MediumTest
+    public void testBindView_VoicemailUri() {
+        createVoicemailCallLogEntry();
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertEquals(Uri.parse(mViewHolder.voicemailUri),
+                ContentUris.withAppendedId(VoicemailContract.Voicemails.CONTENT_URI, 0));
+        assertNull(mViewHolder.primaryActionButtonView.getTag());
+    }
+
+    @MediumTest
+    public void testBindView_NumberWithPostDialDigits() {
+        createCallLogEntry(TEST_NUMBER, TEST_POST_DIAL_DIGITS, NO_VALUE_SET, NO_VALUE_SET);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        if (PhoneNumberDisplayUtil.canShowPostDial()) {
+            assertNameIs(mViewHolder, TEST_NUMBER + TEST_POST_DIAL_DIGITS);
+        }
+    }
+
+    @MediumTest
+    public void testBindView_ContactWithPostDialDigits() {
+        createCallLogEntry(TEST_NUMBER, TEST_POST_DIAL_DIGITS, NO_VALUE_SET, NO_VALUE_SET);
+        mAdapter.injectContactInfoForTest(TEST_NUMBER + TEST_POST_DIAL_DIGITS, TEST_COUNTRY_ISO,
+                createContactInfo());
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        if (PhoneNumberDisplayUtil.canShowPostDial()) {
+            assertNameIs(mViewHolder, TEST_CACHED_NAME_PRIMARY);
+        }
+    }
+
+    @MediumTest
+    public void testPresentationAfterRebindingViewHolders() {
+        final int increment = 10;
+        final int size = increment * 4;
+
+        // Instantiate list of ViewHolders.
+        CallLogListItemViewHolder[] holders = new CallLogListItemViewHolder[size];
+        for (int i = 0; i < size; i++) {
+            holders[i] = CallLogListItemViewHolder.createForTest(getContext());
+        }
+
+        // Add first set of entries to the cursor.
+        for (int i = 0; i < increment; i++) {
+            createCallLogEntry();
+            createPrivateCallLogEntry();
+            createCallLogEntry();
+            createUnknownCallLogEntry();
+        }
+
+        mAdapter.changeCursor(mCursor);
+
+        // Verify correct appearance for presentation.
+        for (int i = 0; i < size; i++) {
+            mAdapter.onBindViewHolder(holders[i], i);
+            if (holders[i].numberPresentation == Calls.PRESENTATION_ALLOWED) {
+                assertHasCallAction(holders[i]);
+            } else {
+                assertNull(holders[i].primaryActionButtonView.getTag());
+                assertEquals(holders[i].number, EMPTY_STRING);
+            }
+        }
+
+        // Append the rest of the entries to the cursor. Keep the first set of ViewHolders
+        // so they are updated and not buitl from scratch. This checks for bugs which may
+        // be evident only after the call log is updated.
+        for (int i = 0; i < increment; i++) {
+            createPrivateCallLogEntry();
+            createCallLogEntry();
+            createUnknownCallLogEntry();
+            createCallLogEntry();
+        }
+
+        mCursor.move(size);
+
+        // Verify correct appearnce for presentation.
+        for (int i = 0; i < size; i++) {
+            mAdapter.onBindViewHolder(holders[i], i + size);
+            if (holders[i].numberPresentation == Calls.PRESENTATION_ALLOWED) {
+                assertHasCallAction(holders[i]);
+            } else {
+                assertNull(holders[i].primaryActionButtonView.getTag());
+                assertEquals(holders[i].number, EMPTY_STRING);
+            }
+        }
+    }
+
+   @MediumTest
+   public void testBindView_NoCallLogCacheNorMemoryCache_EnqueueRequest() {
+       createCallLogEntry();
+
+       // Bind the views of a single row.
+       mAdapter.changeCursor(mCursor);
+       mAdapter.onBindViewHolder(mViewHolder, 0);
+
+       // There is one request for contact details.
+       assertEquals(1, mAdapter.getContactInfoCache().requests.size());
+
+       TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
+       // It is for the number we need to show.
+       assertEquals(TEST_NUMBER, request.number);
+       // It has the right country.
+       assertEquals(TEST_COUNTRY_ISO, request.countryIso);
+       // Since there is nothing in the cache, it is an immediate request.
+       assertTrue("should be immediate", request.immediate);
+   }
+
+   @MediumTest
+   public void testBindView_CallLogCacheButNoMemoryCache_EnqueueRequest() {
+       createCallLogEntryWithCachedValues(false);
+
+       // Bind the views of a single row.
+       mAdapter.changeCursor(mCursor);
+       mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        // There is one request for contact details.
+        assertEquals(1, mAdapter.getContactInfoCache().requests.size());
+
+        TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
+
+        // The values passed to the request, match the ones in the call log cache.
+        assertEquals(TEST_CACHED_NAME_PRIMARY, request.callLogInfo.name);
+        assertEquals(TEST_CACHED_NUMBER_TYPE, request.callLogInfo.type);
+        assertEquals(TEST_CACHED_NUMBER_LABEL, request.callLogInfo.label);
+    }
+
+    @MediumTest
+    public void testBindView_NoCallLogButMemoryCache_EnqueueRequest() {
+        createCallLogEntry();
+        mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, createContactInfo());
+
+        // Bind the views of a single row.
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        // There is one request for contact details.
+        assertEquals(1, mAdapter.getContactInfoCache().requests.size());
+
+        TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
+        // Since there is something in the cache, it is not an immediate request.
+        assertFalse("should not be immediate", request.immediate);
+    }
+
+    @MediumTest
+    public void testBindView_BothCallLogAndMemoryCache_NoEnqueueRequest() {
+        createCallLogEntryWithCachedValues(true);
+
+        // Bind the views of a single row.
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        // Cache and call log are up-to-date: no need to request update.
+        assertEquals(0, mAdapter.getContactInfoCache().requests.size());
+    }
+
+    @MediumTest
+    public void testBindView_MismatchBetweenCallLogAndMemoryCache_EnqueueRequest() {
+        createCallLogEntryWithCachedValues(false);
+
+        // Contact info contains a different name.
+        ContactInfo info = createContactInfo();
+        info.name = "new name";
+        mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, info);
+
+        // Bind the views of a single row.
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        // There is one request for contact details.
+        assertEquals(1, mAdapter.getContactInfoCache().requests.size());
+
+        TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
+        // Since there is something in the cache, it is not an immediate request.
+        assertFalse("should not be immediate", request.immediate);
+    }
+
+    @MediumTest
+    public void testBindView_WithCachedName() {
+        createCallLogEntryWithCachedValues(
+                "John Doe",
+                Phone.TYPE_HOME,
+                TEST_CACHED_NUMBER_LABEL);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertNameIs(mViewHolder, "John Doe");
+        assertLabel(mViewHolder, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
+    }
+
+    @MediumTest
+    public void testBindView_UriNumber() {
+        createCallLogEntryWithCachedValues(
+                "sip:johndoe@gmail.com",
+                AppCompatConstants.CALLS_INCOMING_TYPE,
+                "John Doe",
+                Phone.TYPE_HOME,
+                TEST_DEFAULT_CUSTOM_LABEL,
+                EMPTY_STRING,
+                false /* inject */);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertNameIs(mViewHolder, "John Doe");
+        assertLabel(mViewHolder, "sip:johndoe@gmail.com", "sip:johndoe@gmail.com");
+    }
+
+    @MediumTest
+    public void testBindView_HomeLabel() {
+        createCallLogEntryWithCachedValues(
+                "John Doe",
+                Phone.TYPE_HOME,
+                TEST_CACHED_NUMBER_LABEL);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertNameIs(mViewHolder, "John Doe");
+        assertLabel(mViewHolder, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
+    }
+
+    @MediumTest
+    public void testBindView_WorkLabel() {
+        createCallLogEntryWithCachedValues(
+                "John Doe",
+                Phone.TYPE_WORK,
+                TEST_CACHED_NUMBER_LABEL);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertNameIs(mViewHolder, "John Doe");
+        assertLabel(mViewHolder, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_WORK));
+    }
+
+    @MediumTest
+    public void testBindView_CustomLabel() {
+        createCallLogEntryWithCachedValues(
+                "John Doe",
+                Phone.TYPE_CUSTOM,
+                TEST_DEFAULT_CUSTOM_LABEL);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertNameIs(mViewHolder, "John Doe");
+        assertLabel(mViewHolder, TEST_FORMATTED_NUMBER, TEST_DEFAULT_CUSTOM_LABEL);
+    }
+
+    @MediumTest
+    public void testBindView_NumberOnlyDbCachedFormattedNumber() {
+        createCallLogEntryWithCachedValues(
+                TEST_NUMBER,
+                AppCompatConstants.CALLS_INCOMING_TYPE,
+                EMPTY_STRING,
+                TEST_CACHED_NUMBER_TYPE,
+                TEST_CACHED_NUMBER_LABEL,
+                TEST_FORMATTED_NUMBER,
+                false /* inject */);
+
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
+
+        assertNameIs(mViewHolder, TEST_FORMATTED_NUMBER);
+    }
+
+    @MediumTest
+    public void testBindVoicemailPromoCard() {
+        createCallLogEntry(TEST_NUMBER_1);
+        createCallLogEntry(TEST_NUMBER_1);
+        createCallLogEntry(TEST_NUMBER_2);
+        createCallLogEntry(TEST_NUMBER_2);
+        createCallLogEntry(TEST_NUMBER_2);
+        createCallLogEntry(TEST_NUMBER_3);
+
+        // Bind the voicemail promo card.
+        mAdapter.showVoicemailPromoCard(true);
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(PromoCardViewHolder.createForTest(getContext()), 0);
+
+        // Check that displaying the promo card does not affect the grouping or list display.
+        mAdapter.onBindViewHolder(mViewHolder, 1);
+        assertEquals(2, mAdapter.getGroupSize(1));
+        assertEquals(TEST_NUMBER_1, mViewHolder.number);
+
+        mAdapter.onBindViewHolder(mViewHolder, 2);
+        assertEquals(3, mAdapter.getGroupSize(2));
+        assertEquals(TEST_NUMBER_2, mViewHolder.number);
+
+        mAdapter.onBindViewHolder(mViewHolder, 3);
+        assertEquals(1, mAdapter.getGroupSize(3));
+        assertEquals(TEST_NUMBER_3, mViewHolder.number);
+    }
+
+    private void createCallLogEntry() {
+        createCallLogEntry(TEST_NUMBER);
+    }
+
+    private void createCallLogEntry(String testNumber) {
+        createCallLogEntry(testNumber, EMPTY_STRING, NO_VALUE_SET, NO_VALUE_SET);
+    }
+
+    private void createPrivateCallLogEntry() {
+        createCallLogEntry(
+                EMPTY_STRING,
+                EMPTY_STRING,
+                Calls.PRESENTATION_RESTRICTED,
+                AppCompatConstants.CALLS_INCOMING_TYPE);
+    }
+
+    private void createUnknownCallLogEntry() {
+        createCallLogEntry(
+                EMPTY_STRING,
+                EMPTY_STRING,
+                Calls.PRESENTATION_UNKNOWN,
+                AppCompatConstants.CALLS_INCOMING_TYPE);
+    }
+
+    private void createVoicemailCallLogEntry() {
+        createCallLogEntry(TEST_NUMBER, EMPTY_STRING, NO_VALUE_SET, Calls.VOICEMAIL_TYPE);
+    }
+
+    private void createCallLogEntry(String number, String postDialDigits, int presentation, int type) {
+        Object[] values = getValues(number, postDialDigits, presentation, type);
+        mCursor.addRow(values);
+    }
+
+    private void createCallLogEntryWithCachedValues(boolean inject) {
+        createCallLogEntryWithCachedValues(
+                TEST_NUMBER,
+                NO_VALUE_SET,
+                TEST_CACHED_NAME_PRIMARY,
+                TEST_CACHED_NUMBER_TYPE,
+                TEST_CACHED_NUMBER_LABEL,
+                EMPTY_STRING,
+                inject);
+    }
+
+    private void createCallLogEntryWithCachedValues(
+            String cachedName, int cachedNumberType, String cachedNumberLabel) {
+        createCallLogEntryWithCachedValues(
+                TEST_NUMBER,
+                NO_VALUE_SET,
+                cachedName,
+                cachedNumberType,
+                cachedNumberLabel,
+                EMPTY_STRING,
+                false /* inject */);
+    }
+
+    /**
+     * Inserts a new call log entry
+     *
+     * It includes the values for the cached contact associated with the number.
+     *
+     * @param number The phone number.
+     * @param type Valid value of {@code Calls.TYPE}.
+     * @param cachedName The name of the contact with this number
+     * @param cachedNumberType The type of the number, from the contact with this number.
+     * @param cachedNumberLabel The label of the number, from the contact with this number.
+     * @param cachedFormattedNumber The formatted number, from the contact with this number.
+     * @param inject Whether to inject the contact info into the adapter's ContactInfoCache.
+    */
+    private void createCallLogEntryWithCachedValues(
+            String number,
+            int type,
+            String cachedName,
+            int cachedNumberType,
+            String cachedNumberLabel,
+            String cachedFormattedNumber,
+            boolean inject) {
+        Object[] values = getValues(number, EMPTY_STRING, NO_VALUE_SET, type);
+        values[CallLogQuery.CACHED_NAME] = cachedName;
+        values[CallLogQuery.CACHED_NUMBER_TYPE] = cachedNumberType;
+        values[CallLogQuery.CACHED_NUMBER_LABEL] = cachedNumberLabel;
+        values[CallLogQuery.CACHED_FORMATTED_NUMBER] = cachedFormattedNumber;
+
+        mCursor.addRow(values);
+
+        if (inject) {
+            ContactInfo contactInfo =
+                    createContactInfo(cachedName, cachedName, cachedNumberType, cachedNumberLabel);
+            mAdapter.injectContactInfoForTest(number, TEST_COUNTRY_ISO, contactInfo);
+        }
+    }
+
+    /**
+     * @param number The phone number.
+     * @param postDialDigits The post dial digits dialed (if any)
+     * @param presentation Number representing display rules for "allowed",
+     *               "payphone", "restricted", or "unknown".
+     * @param type The type of the call (outgoing/ingoing)
+     */
+    private Object[] getValues(
+            String number,
+            String postDialDigits,
+            int presentation,
+            int type) {
+        Object[] values = CallLogQueryTestUtils.createTestValues();
+
+        values[CallLogQuery.ID] = mCursor.getCount();
+        values[CallLogQuery.COUNTRY_ISO] = TEST_COUNTRY_ISO;
+        values[CallLogQuery.DATE] = new Date().getTime();
+        values[CallLogQuery.DURATION] = mRandom.nextInt(10 * 60);
+
+        if (!TextUtils.isEmpty(number)) {
+            values[CallLogQuery.NUMBER] = number;
+        }
+        if (!TextUtils.isEmpty(postDialDigits) && PhoneNumberDisplayUtil.canShowPostDial()) {
+            values[CallLogQuery.POST_DIAL_DIGITS] = postDialDigits;
+        }
+        if (presentation != NO_VALUE_SET) {
+            values[CallLogQuery.NUMBER_PRESENTATION] = presentation;
+        }
+        if (type != NO_VALUE_SET) {
+            values[CallLogQuery.CALL_TYPE] = type;
+        }
+        if (type == AppCompatConstants.CALLS_VOICEMAIL_TYPE) {
+            values[CallLogQuery.VOICEMAIL_URI] = ContentUris.withAppendedId(
+                    VoicemailContract.Voicemails.CONTENT_URI, mCursor.getCount());
+        }
+
+        return values;
+    }
+
+    private ContactInfo createContactInfo() {
+        return createContactInfo(
+                TEST_CACHED_NAME_PRIMARY,
+                TEST_CACHED_NAME_ALTERNATIVE);
+    }
+
+    private ContactInfo createContactInfo(String namePrimary, String nameAlternative) {
+        return createContactInfo(
+                namePrimary,
+                nameAlternative,
+                TEST_CACHED_NUMBER_TYPE,
+                TEST_CACHED_NUMBER_LABEL);
+    }
+
+    /** Returns a contact info with default values. */
+    private ContactInfo createContactInfo(String namePrimary, String nameAlternative, int type, String label) {
+        ContactInfo info = new ContactInfo();
+        info.number = TEST_NUMBER;
+        info.name = namePrimary;
+        info.nameAlternative = nameAlternative;
+        info.type = type;
+        info.label = label;
+        info.formattedNumber = TEST_FORMATTED_NUMBER;
+        info.normalizedNumber = TEST_NUMBER;
+        info.lookupUri = TEST_LOOKUP_URI;
+        return info;
+    }
+
+    // Asserts that the name text view is shown and contains the given text.
+    private void assertNameIs(CallLogListItemViewHolder viewHolder, String name) {
+        assertEquals(View.VISIBLE, viewHolder.phoneCallDetailsViews.nameView.getVisibility());
+        assertEquals(name, viewHolder.phoneCallDetailsViews.nameView.getText());
+    }
+
+    // Asserts that the label text view contains the given text.
+    private void assertLabel(
+            CallLogListItemViewHolder viewHolder, CharSequence number, CharSequence label) {
+        if (label != null) {
+            assertTrue(viewHolder.phoneCallDetailsViews.callLocationAndDate.getText()
+                    .toString().contains(label));
+        }
+    }
+
+    private void assertHasCallAction(CallLogListItemViewHolder viewHolder) {
+        assertHasCallActionToGivenNumber(viewHolder, TEST_NUMBER);
+    }
+
+    private void assertHasCallActionToGivenNumber(CallLogListItemViewHolder viewHolder,
+            String number) {
+        IntentProvider intentProvider =
+                (IntentProvider) viewHolder.primaryActionButtonView.getTag();
+        Intent intent = intentProvider.getIntent(getContext());
+        assertEquals(TestConstants.CALL_INTENT_ACTION, intent.getAction());
+        assertEquals(Uri.parse("tel:" + Uri.encode(number)), intent.getData());
+    }
+
+    /** Returns the label associated with a given phone type. */
+    private CharSequence getTypeLabel(int phoneType) {
+        return Phone.getTypeLabel(getContext().getResources(), phoneType, "");
+    }
+
+    /// Subclass of {@link CallLogAdapter} used in tests to intercept certain calls.
+    private static final class TestCallLogAdapter extends CallLogAdapter {
+        public TestCallLogAdapter(Context context, CallFetcher callFetcher,
+                ContactInfoHelper contactInfoHelper) {
+            super(context, callFetcher, contactInfoHelper, null, false);
+            mContactInfoCache = new TestContactInfoCache(
+                    contactInfoHelper, mOnContactInfoChangedListener);
+        }
+
+        public TestContactInfoCache getContactInfoCache() {
+            return (TestContactInfoCache) mContactInfoCache;
+        }
+
+        public void showVoicemailPromoCard(boolean show) {
+            mShowVoicemailPromoCard = show;
+        }
+    }
+
+    private static final class TestContactInfoCache extends ContactInfoCache {
+        public static class Request {
+            public final String number;
+            public final String countryIso;
+            public final ContactInfo callLogInfo;
+            public final boolean immediate;
+
+            public Request(String number, String countryIso, ContactInfo callLogInfo,
+                    boolean immediate) {
+                this.number = number;
+                this.countryIso = countryIso;
+                this.callLogInfo = callLogInfo;
+                this.immediate = immediate;
+            }
+        }
+
+        public final List<Request> requests = Lists.newArrayList();
+
+        /**
+         * Dummy contactInfo to return in the even that the getValue method has been mocked
+         */
+        private ContactInfo mContactInfo;
+
+        public TestContactInfoCache(
+                ContactInfoHelper contactInfoHelper, OnContactInfoChangedListener listener) {
+            super(contactInfoHelper, listener);
+        }
+
+        /**
+         * Sets the given value to be returned by all calls to
+         * {@link #getValue(String, String, ContactInfo)}
+         *
+         * @param contactInfo the contactInfo
+         */
+        public void mockGetValue(ContactInfo contactInfo) {
+            this.mContactInfo = contactInfo;
+        }
+
+        @Override
+        public ContactInfo getValue(String number, String countryIso,
+                ContactInfo cachedContactInfo) {
+            if (mContactInfo != null) {
+                return mContactInfo;
+            }
+            return super.getValue(number, countryIso, cachedContactInfo);
+        }
+
+        @Override
+        protected void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
+                boolean immediate) {
+            requests.add(new Request(number, countryIso, callLogInfo, immediate));
+        }
+    }
+}
diff --git a/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java b/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java
new file mode 100644
index 0000000..04463c2
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/CallLogGroupBuilderTest.java
@@ -0,0 +1,400 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import static com.google.common.collect.Lists.newArrayList;
+
+import android.database.MatrixCursor;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.dialer.util.AppCompatConstants;
+
+import java.util.List;
+
+/**
+ * Unit tests for {@link CallLogGroupBuilder}
+ */
+@SmallTest
+public class CallLogGroupBuilderTest extends AndroidTestCase {
+    /** A phone number for testing. */
+    private static final String TEST_NUMBER1 = "14125551234";
+    /** A phone number for testing. */
+    private static final String TEST_NUMBER2 = "14125555555";
+    /** A post-dial string for testing */
+    private static final String TEST_POST_DIAL_DIGITS = ";12435;0987";
+
+    /** The object under test. */
+    private CallLogGroupBuilder mBuilder;
+    /** Records the created groups. */
+    private FakeGroupCreator mFakeGroupCreator;
+    /** Cursor to store the values. */
+    private MatrixCursor mCursor;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mFakeGroupCreator = new FakeGroupCreator();
+        mBuilder = new CallLogGroupBuilder(mFakeGroupCreator);
+        createCursor();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mCursor = null;
+        mBuilder = null;
+        mFakeGroupCreator = null;
+        super.tearDown();
+    }
+
+    public void testAddGroups_NoCalls() {
+        mBuilder.addGroups(mCursor);
+        assertEquals(0, mFakeGroupCreator.groups.size());
+    }
+
+    public void testAddGroups_OneCall() {
+        addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
+        mBuilder.addGroups(mCursor);
+        assertEquals(1, mFakeGroupCreator.groups.size());
+    }
+
+    public void testAddGroups_TwoCallsNotMatching() {
+        addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
+        addCallLogEntry(TEST_NUMBER2, AppCompatConstants.CALLS_INCOMING_TYPE);
+        mBuilder.addGroups(mCursor);
+        assertEquals(2, mFakeGroupCreator.groups.size());
+    }
+
+    public void testAddGroups_ThreeCallsMatching() {
+        addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
+        addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
+        addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
+        mBuilder.addGroups(mCursor);
+        assertEquals(1, mFakeGroupCreator.groups.size());
+        assertGroupIs(0, 3, mFakeGroupCreator.groups.get(0));
+    }
+
+    public void testAddGroups_WithPostDialMatching() {
+        addCallLogEntryWithPostDialDigits(TEST_NUMBER1, TEST_POST_DIAL_DIGITS,
+                AppCompatConstants.CALLS_OUTGOING_TYPE);
+        addCallLogEntryWithPostDialDigits(TEST_NUMBER1, TEST_POST_DIAL_DIGITS,
+                AppCompatConstants.CALLS_OUTGOING_TYPE);
+        addCallLogEntryWithPostDialDigits(TEST_NUMBER1, "",
+                AppCompatConstants.CALLS_OUTGOING_TYPE);
+
+        mBuilder.addGroups(mCursor);
+
+        if (PhoneNumberDisplayUtil.canShowPostDial()) {
+            assertEquals(2, mFakeGroupCreator.groups.size());
+            assertGroupIs(0, 2, mFakeGroupCreator.groups.get(0));
+            assertGroupIs(2, 1, mFakeGroupCreator.groups.get(1));
+        } else {
+            assertEquals(1, mFakeGroupCreator.groups.size());
+            assertGroupIs(0, 3, mFakeGroupCreator.groups.get(0));
+        }
+    }
+
+    public void testAddGroups_MatchingIncomingAndOutgoing() {
+        addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
+        addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_OUTGOING_TYPE);
+        addCallLogEntry(TEST_NUMBER1, AppCompatConstants.CALLS_INCOMING_TYPE);
+        mBuilder.addGroups(mCursor);
+        assertEquals(1, mFakeGroupCreator.groups.size());
+        assertGroupIs(0, 3, mFakeGroupCreator.groups.get(0));
+    }
+
+    public void testGrouping_Voicemail() {
+        // Does not group with other types of calls, include voicemail themselves.
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
+    }
+
+    public void testGrouping_Missed() {
+        // Groups with one or more missed calls.
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_MISSED_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_MISSED_TYPE);
+        // Does not group with other types of calls.
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_MISSED_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_MISSED_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_MISSED_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
+    }
+
+    public void testGrouping_Incoming() {
+        // Groups with one or more incoming or outgoing.
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_INCOMING_TYPE,
+                AppCompatConstants.CALLS_INCOMING_TYPE,
+                AppCompatConstants.CALLS_OUTGOING_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_INCOMING_TYPE,
+                AppCompatConstants.CALLS_OUTGOING_TYPE,
+                AppCompatConstants.CALLS_INCOMING_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
+        // Does not group with voicemail and missed calls.
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+    }
+
+    public void testGrouping_Outgoing() {
+        // Groups with one or more incoming or outgoing.
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_OUTGOING_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_OUTGOING_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_OUTGOING_TYPE,
+                AppCompatConstants.CALLS_INCOMING_TYPE,
+                AppCompatConstants.CALLS_OUTGOING_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_OUTGOING_TYPE,
+                AppCompatConstants.CALLS_OUTGOING_TYPE,
+                AppCompatConstants.CALLS_INCOMING_TYPE);
+        assertCallsAreGrouped(
+                AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
+        // Does not group with voicemail and missed calls.
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+    }
+
+    public void testGrouping_Blocked() {
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_BLOCKED_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_BLOCKED_TYPE, AppCompatConstants.CALLS_OUTGOING_TYPE);
+        assertCallsAreNotGrouped(
+                AppCompatConstants.CALLS_BLOCKED_TYPE, AppCompatConstants.CALLS_MISSED_TYPE);
+
+    }
+
+    public void testAddGroups_Mixed() {
+        addMultipleCallLogEntries(TEST_NUMBER1,
+                AppCompatConstants.CALLS_VOICEMAIL_TYPE,   // Group 1: 0
+                AppCompatConstants.CALLS_INCOMING_TYPE,    // Group 2: 1-4
+                AppCompatConstants.CALLS_OUTGOING_TYPE,
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_VOICEMAIL_TYPE,   // Group 3: 5
+                AppCompatConstants.CALLS_INCOMING_TYPE,    // Group 4: 6
+                AppCompatConstants.CALLS_VOICEMAIL_TYPE,   // Group 5: 7
+                AppCompatConstants.CALLS_MISSED_TYPE,      // Group 6: 8-10
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_OUTGOING_TYPE);
+        mBuilder.addGroups(mCursor);
+
+        assertEquals(6, mFakeGroupCreator.groups.size());
+        assertGroupIs(0, 1, mFakeGroupCreator.groups.get(0));
+        assertGroupIs(1, 4, mFakeGroupCreator.groups.get(1));
+        assertGroupIs(5, 1, mFakeGroupCreator.groups.get(2));
+        assertGroupIs(6, 1, mFakeGroupCreator.groups.get(3));
+        assertGroupIs(7, 1, mFakeGroupCreator.groups.get(4));
+        assertGroupIs(8, 3, mFakeGroupCreator.groups.get(5));
+    }
+
+    public void testAddGroups_Blocked() {
+        addMultipleCallLogEntries(TEST_NUMBER1,
+                AppCompatConstants.CALLS_INCOMING_TYPE,     // Group 1: 0-1
+                AppCompatConstants.CALLS_OUTGOING_TYPE,
+                AppCompatConstants.CALLS_BLOCKED_TYPE,      // Group 2: 2
+                AppCompatConstants.CALLS_MISSED_TYPE,       // Group 3: 3
+                AppCompatConstants.CALLS_BLOCKED_TYPE,      // Group 4: 4-5
+                AppCompatConstants.CALLS_BLOCKED_TYPE);
+        mBuilder.addGroups(mCursor);
+
+        assertEquals(4, mFakeGroupCreator.groups.size());
+        assertGroupIs(0, 2, mFakeGroupCreator.groups.get(0));
+        assertGroupIs(2, 1, mFakeGroupCreator.groups.get(1));
+        assertGroupIs(3, 1, mFakeGroupCreator.groups.get(2));
+        assertGroupIs(4, 2, mFakeGroupCreator.groups.get(3));
+    }
+
+    public void testEqualPhoneNumbers() {
+        // Identical.
+        assertTrue(mBuilder.equalNumbers("6505555555", "6505555555"));
+        assertTrue(mBuilder.equalNumbers("650 555 5555", "650 555 5555"));
+        // Formatting.
+        assertTrue(mBuilder.equalNumbers("6505555555", "650 555 5555"));
+        assertTrue(mBuilder.equalNumbers("6505555555", "(650) 555-5555"));
+        assertTrue(mBuilder.equalNumbers("650 555 5555", "(650) 555-5555"));
+        // Short codes.
+        assertTrue(mBuilder.equalNumbers("55555", "55555"));
+        assertTrue(mBuilder.equalNumbers("55555", "555 55"));
+        // Different numbers.
+        assertFalse(mBuilder.equalNumbers("6505555555", "650555555"));
+        assertFalse(mBuilder.equalNumbers("6505555555", "6505555551"));
+        assertFalse(mBuilder.equalNumbers("650 555 5555", "650 555 555"));
+        assertFalse(mBuilder.equalNumbers("650 555 5555", "650 555 5551"));
+        assertFalse(mBuilder.equalNumbers("55555", "5555"));
+        assertFalse(mBuilder.equalNumbers("55555", "55551"));
+        // SIP addresses.
+        assertTrue(mBuilder.equalNumbers("6505555555@host.com", "6505555555@host.com"));
+        assertTrue(mBuilder.equalNumbers("6505555555@host.com", "6505555555@HOST.COM"));
+        assertTrue(mBuilder.equalNumbers("user@host.com", "user@host.com"));
+        assertTrue(mBuilder.equalNumbers("user@host.com", "user@HOST.COM"));
+        assertFalse(mBuilder.equalNumbers("USER@host.com", "user@host.com"));
+        assertFalse(mBuilder.equalNumbers("user@host.com", "user@host1.com"));
+        // SIP address vs phone number.
+        assertFalse(mBuilder.equalNumbers("6505555555@host.com", "6505555555"));
+        assertFalse(mBuilder.equalNumbers("6505555555", "6505555555@host.com"));
+        assertFalse(mBuilder.equalNumbers("user@host.com", "6505555555"));
+        assertFalse(mBuilder.equalNumbers("6505555555", "user@host.com"));
+        // Nulls.
+        assertTrue(mBuilder.equalNumbers(null, null));
+        assertFalse(mBuilder.equalNumbers(null, "6505555555"));
+        assertFalse(mBuilder.equalNumbers("6505555555", null));
+        assertFalse(mBuilder.equalNumbers(null, "6505555555@host.com"));
+        assertFalse(mBuilder.equalNumbers("6505555555@host.com", null));
+    }
+
+    public void testCompareSipAddresses() {
+        // Identical.
+        assertTrue(mBuilder.compareSipAddresses("6505555555@host.com", "6505555555@host.com"));
+        assertTrue(mBuilder.compareSipAddresses("user@host.com", "user@host.com"));
+        // Host is case insensitive.
+        assertTrue(mBuilder.compareSipAddresses("6505555555@host.com", "6505555555@HOST.COM"));
+        assertTrue(mBuilder.compareSipAddresses("user@host.com", "user@HOST.COM"));
+        // Userinfo is case sensitive.
+        assertFalse(mBuilder.compareSipAddresses("USER@host.com", "user@host.com"));
+        // Different hosts.
+        assertFalse(mBuilder.compareSipAddresses("user@host.com", "user@host1.com"));
+        // Different users.
+        assertFalse(mBuilder.compareSipAddresses("user1@host.com", "user@host.com"));
+        // Nulls.
+        assertTrue(mBuilder.compareSipAddresses(null, null));
+        assertFalse(mBuilder.compareSipAddresses(null, "6505555555@host.com"));
+        assertFalse(mBuilder.compareSipAddresses("6505555555@host.com", null));
+    }
+
+    /** Creates (or recreates) the cursor used to store the call log content for the tests. */
+    private void createCursor() {
+        mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
+    }
+
+    /** Clears the content of the {@link FakeGroupCreator} used in the tests. */
+    private void clearFakeGroupCreator() {
+        mFakeGroupCreator.groups.clear();
+    }
+
+    /** Asserts that calls of the given types are grouped together into a single group. */
+    private void assertCallsAreGrouped(int... types) {
+        createCursor();
+        clearFakeGroupCreator();
+        addMultipleCallLogEntries(TEST_NUMBER1, types);
+        mBuilder.addGroups(mCursor);
+        assertEquals(1, mFakeGroupCreator.groups.size());
+        assertGroupIs(0, types.length, mFakeGroupCreator.groups.get(0));
+
+    }
+
+    /** Asserts that calls of the given types are not grouped together at all. */
+    private void assertCallsAreNotGrouped(int... types) {
+        createCursor();
+        clearFakeGroupCreator();
+        addMultipleCallLogEntries(TEST_NUMBER1, types);
+        mBuilder.addGroups(mCursor);
+        assertEquals(types.length, mFakeGroupCreator.groups.size());
+    }
+
+    /** Adds a set of calls with the given types, all from the same number, in the old section. */
+    private void addMultipleCallLogEntries(String number, int... types) {
+        for (int type : types) {
+            addCallLogEntry(number, type);
+        }
+    }
+    /** Adds a call log entry with the given number and type to the cursor. */
+    private void addCallLogEntry(String number, int type) {
+        addCallLogEntryWithPostDialDigits(number, "", type);
+    }
+
+    /** Adds a call log entry with the given number, post-dial digits, and type to the cursor. */
+    private void addCallLogEntryWithPostDialDigits(String number, String postDialDigits, int type) {
+        mCursor.moveToNext();
+        Object[] values = CallLogQueryTestUtils.createTestValues();
+        values[CallLogQuery.ID] = mCursor.getPosition();
+        values[CallLogQuery.NUMBER] = number;
+        values[CallLogQuery.CALL_TYPE] = type;
+        if (PhoneNumberDisplayUtil.canShowPostDial()) {
+            values[CallLogQuery.POST_DIAL_DIGITS] = postDialDigits;
+        }
+        mCursor.addRow(values);
+    }
+
+    /** Adds a call log entry with a header to the cursor. */
+    private void addCallLogHeader(int section) {
+        mCursor.moveToNext();
+        Object[] values = CallLogQueryTestUtils.createTestValues();
+        values[CallLogQuery.ID] = mCursor.getPosition();
+        mCursor.addRow(values);
+    }
+
+    /** Asserts that the group matches the given values. */
+    private void assertGroupIs(int cursorPosition, int size, GroupSpec group) {
+        assertEquals(cursorPosition, group.cursorPosition);
+        assertEquals(size, group.size);
+    }
+
+    /** Defines an added group. Used by the {@link FakeGroupCreator}. */
+    private static class GroupSpec {
+        /** The starting position of the group. */
+        public final int cursorPosition;
+        /** The number of elements in the group. */
+        public final int size;
+
+        public GroupSpec(int cursorPosition, int size) {
+            this.cursorPosition = cursorPosition;
+            this.size = size;
+        }
+    }
+
+    /** Fake implementation of a GroupCreator which stores the created groups in a member field. */
+    private static class FakeGroupCreator implements CallLogGroupBuilder.GroupCreator {
+        /** The list of created groups. */
+        public final List<GroupSpec> groups = newArrayList();
+
+        @Override
+        public void addGroup(int cursorPosition, int size) {
+            groups.add(new GroupSpec(cursorPosition, size));
+        }
+
+        @Override
+        public void setDayGroup(long rowId, int dayGroup) {
+            //No-op
+        }
+
+        @Override
+        public void clearDayGroups() {
+            //No-op
+        }
+    }
+}
diff --git a/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java b/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
new file mode 100644
index 0000000..28caed4
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
@@ -0,0 +1,304 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.provider.CallLog.Calls;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.view.View;
+
+import com.android.contacts.common.CallUtil;
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.R;
+import com.android.dialer.calllog.calllogcache.TestTelecomCallLogCache;
+import com.android.dialer.util.AppCompatConstants;
+
+/**
+ * Unit tests for {@link CallLogListItemHelper}.
+ */
+@MediumTest
+public class CallLogListItemHelperTest extends AndroidTestCase {
+    /** A test phone number for phone calls. */
+    private static final String TEST_NUMBER = "14125555555";
+    /** The formatted version of {@link #TEST_NUMBER}. */
+    private static final String TEST_FORMATTED_NUMBER = "1-412-255-5555";
+    /** A test date value for phone calls. */
+    private static final long TEST_DATE = 1300000000;
+    /** A test duration value for phone calls. */
+    private static final long TEST_DURATION = 62300;
+    /** A test voicemail number. */
+    private static final String TEST_VOICEMAIL_NUMBER = "123";
+    /** The country ISO name used in the tests. */
+    private static final String TEST_COUNTRY_ISO = "US";
+    /** The geocoded location used in the tests. */
+    private static final String TEST_GEOCODE = "United States";
+
+    /** The object under test. */
+    private CallLogListItemHelper mHelper;
+
+    /** The views used in the tests. */
+    private CallLogListItemViewHolder mViewHolder;
+
+    private Context mContext;
+    private Resources mResources;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getContext();
+        mResources = mContext.getResources();
+        final TestTelecomCallLogCache phoneUtils =
+                new TestTelecomCallLogCache(mContext, TEST_VOICEMAIL_NUMBER);
+        PhoneCallDetailsHelper phoneCallDetailsHelper =
+                new PhoneCallDetailsHelper(mContext, mResources, phoneUtils);
+        mHelper = new CallLogListItemHelper(phoneCallDetailsHelper, mResources, phoneUtils);
+        mViewHolder = CallLogListItemViewHolder.createForTest(mContext);
+
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mHelper = null;
+        mViewHolder = null;
+        super.tearDown();
+    }
+
+    public void testSetPhoneCallDetails() {
+        setPhoneCallDetailsWithNumber("12125551234", Calls.PRESENTATION_ALLOWED,
+                "1-212-555-1234");
+        assertEquals(View.VISIBLE, mViewHolder.primaryActionButtonView.getVisibility());
+    }
+
+    public void testSetPhoneCallDetails_Unknown() {
+        setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_UNKNOWN, "");
+        assertNoCallIntent();
+    }
+
+    public void testSetPhoneCallDetails_Private() {
+        setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_RESTRICTED, "");
+        assertNoCallIntent();
+    }
+
+    public void testSetPhoneCallDetails_Payphone() {
+        setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_PAYPHONE, "");
+        assertNoCallIntent();
+    }
+
+    public void testSetPhoneCallDetails_VoicemailNumber() {
+        setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER,
+                Calls.PRESENTATION_ALLOWED, TEST_VOICEMAIL_NUMBER);
+        assertEquals(View.VISIBLE, mViewHolder.voicemailPlaybackView.getVisibility());
+    }
+
+    public void testSetPhoneCallDetails_ReadVoicemail() {
+        PhoneCallDetails details =
+                getPhoneCallDetailsWithTypes(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+        mHelper.setPhoneCallDetails(mViewHolder, details);
+        assertEquals(View.VISIBLE, mViewHolder.voicemailPlaybackView.getVisibility());
+    }
+
+    public void testSetPhoneCallDetails_UnreadVoicemail() {
+        PhoneCallDetails details =
+                getPhoneCallDetailsWithTypes(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+        mHelper.setPhoneCallDetails(mViewHolder, details);
+        assertEquals(View.VISIBLE, mViewHolder.voicemailPlaybackView.getVisibility());
+    }
+
+    public void testSetPhoneCallDetails_VoicemailFromUnknown() {
+        setPhoneCallDetailsWithNumberAndType("", Calls.PRESENTATION_UNKNOWN,
+                "", AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+        assertEquals(View.VISIBLE, mViewHolder.voicemailPlaybackView.getVisibility());
+    }
+
+    /**
+     * Test getCallDescriptionID method used to get the accessibility description for calls.
+     */
+    public void testGetCallDescriptionID_Answered() {
+        int[] callTypes = new int[] {AppCompatConstants.CALLS_INCOMING_TYPE};
+        assertEquals(R.string.description_incoming_answered_call,
+                mHelper.getCallDescriptionStringID(callTypes, true));
+    }
+
+    /**
+     * Test getCallDescriptionID method used to get the accessibility description for calls.
+     */
+    public void testGetCallDescriptionID_Missed() {
+        int[] callTypes = new int[] {AppCompatConstants.CALLS_MISSED_TYPE};
+        assertEquals(R.string.description_incoming_missed_call,
+                mHelper.getCallDescriptionStringID(callTypes, true));
+    }
+
+    /**
+     * Test getCallDescriptionID method used to get the accessibility description for calls.
+     * Test case where an outgoing call is made to a known number and there is a history of
+     * only a single call for this caller.
+     */
+    public void testGetCallDescriptionID_OutgoingSingle() {
+        int[] callTypes = new int[] {AppCompatConstants.CALLS_OUTGOING_TYPE};
+        assertEquals(R.string.description_outgoing_call,
+                mHelper.getCallDescriptionStringID(callTypes, true));
+    }
+
+    /**
+     * Test getCallDescriptionID method used to get the accessibility description for calls.
+     * Test case where an outgoing call is made to a known number and there is a history of
+     * many calls for this caller.
+     */
+    public void testGetCallDescriptionID_OutgoingMultiple() {
+        int[] callTypes = new int[] {
+            AppCompatConstants.CALLS_OUTGOING_TYPE,
+            AppCompatConstants.CALLS_OUTGOING_TYPE
+        };
+        assertEquals(R.string.description_outgoing_call,
+                mHelper.getCallDescriptionStringID(callTypes, true));
+    }
+
+    /**
+     * Test getCallDescription method used to get the accessibility description for calls.
+     * For read voicemail calls, we should have "Voicemail" in the description.
+     */
+    public void testGetCallDescriptionID_Voicemail() {
+        int[] callTypes = new int[] {AppCompatConstants.CALLS_VOICEMAIL_TYPE};
+        assertEquals(R.string.description_read_voicemail,
+                mHelper.getCallDescriptionStringID(callTypes, true));
+    }
+
+    /**
+     * Test getCallDescription method used to get the accessibility description for calls.
+     * For unread voicemail calls, we should have "Unread voicemail" in the description.
+     */
+    public void testGetCallDescriptionID_UnreadVoicemail() {
+        int[] callTypes = new int[] {AppCompatConstants.CALLS_VOICEMAIL_TYPE};
+        assertEquals(R.string.description_unread_voicemail,
+                mHelper.getCallDescriptionStringID(callTypes, false));
+    }
+
+    /**
+     * Test getCallDescription method used to get the accessibility description for calls.
+     * Test that the "X calls" message is not present if there is only a single call.
+     */
+    public void testGetCallDescription_NumCallsSingle() {
+        PhoneCallDetails details =
+                getPhoneCallDetailsWithTypes(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+        CharSequence description = mHelper.getCallDescription(details);
+
+        // Rather than hard coding the "X calls" string message, we'll generate it with an empty
+        // number of calls, and trim the resulting string.  This gets us just the word "calls",
+        // and ensures any trivial changes to that string resource won't unnecessarily break
+        // the unit test.
+        assertFalse(description.toString()
+                .contains(this.mResources.getString(R.string.description_num_calls, "").trim()));
+    }
+
+    /**
+     * Test getCallDescription method used to get the accessibility description for calls.
+     * Test that the "X calls" message is present if there are many calls.
+     */
+    public void testGetCallDescription_NumCallsMultiple() {
+        PhoneCallDetails details = getPhoneCallDetailsWithTypes(
+                AppCompatConstants.CALLS_VOICEMAIL_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
+        CharSequence description = mHelper.getCallDescription(details);
+        assertTrue(description.toString()
+                .contains(this.mResources.getString(R.string.description_num_calls, 2)));
+    }
+
+    /**
+     * Test getCallDescription method used to get the accessibility description for calls.
+     * Test that the "Video call." message is present if the call had video capability.
+     */
+    public void testGetCallDescription_Video() {
+        PhoneCallDetails details = getPhoneCallDetailsWithTypes(
+                AppCompatConstants.CALLS_INCOMING_TYPE, AppCompatConstants.CALLS_INCOMING_TYPE);
+        details.features = Calls.FEATURES_VIDEO;
+
+        CharSequence description = mHelper.getCallDescription(details);
+        final boolean isVideoEnabled = CallUtil.isVideoEnabled(getContext());
+        assertTrue(description.toString()
+                .contains(this.mResources.getString(
+                        isVideoEnabled
+                        ? R.string.description_video_call
+                        : R.string.description_num_calls,
+                                2)));
+    }
+
+    /** Asserts that the primary action view does not have a call intent. */
+    private void assertNoCallIntent() {
+        Object intentProvider = mViewHolder.primaryActionView.getTag();
+        // The intent provider should be null as there is no ability to make a call.
+        assertNull(intentProvider);
+    }
+
+    /** Sets the details of a phone call using the specified phone number. */
+    private void setPhoneCallDetailsWithNumber(String number,
+            int presentation, String formattedNumber) {
+        setPhoneCallDetailsWithNumberTypeAndPostDialDigits(number, "", presentation,
+                formattedNumber, Calls.INCOMING_TYPE);
+    }
+
+    /** Sets the details of a phone call using the specified phone number. */
+    private void setPhoneCallDetailsWithNumberAndType(String number,
+            int presentation, String formattedNumber, int callType) {
+        setPhoneCallDetailsWithNumberTypeAndPostDialDigits(number, "", presentation,
+                formattedNumber, callType);
+    }
+
+    /** Sets the details of a phone call using the specified phone number and post-dial digits. */
+    private void setPhoneCallDetailsWithNumberTypeAndPostDialDigits(String number,
+            String postDialDigits, int presentation, String formattedNumber, int callType) {
+        PhoneCallDetails details = getPhoneCallDetails(
+                number, postDialDigits, presentation, formattedNumber);
+        details.callTypes = new int[] {callType};
+        mHelper.setPhoneCallDetails(mViewHolder, details);
+    }
+
+    private PhoneCallDetails getPhoneCallDetails(
+            String number, String postDialDigits, int presentation, String formattedNumber) {
+        PhoneCallDetails details = new PhoneCallDetails(
+                mContext,
+                number,
+                presentation,
+                formattedNumber,
+                postDialDigits,
+                false /* isVoicemail */);
+        setDefaultDetails(details);
+        return details;
+    }
+
+    /** Returns the details of a phone call using the specified call type. */
+    private PhoneCallDetails getPhoneCallDetailsWithTypes(int... types) {
+        PhoneCallDetails details = new PhoneCallDetails(
+                mContext,
+                TEST_NUMBER,
+                Calls.PRESENTATION_ALLOWED,
+                TEST_FORMATTED_NUMBER,
+                "",
+                false /* isVoicemail */);
+        setDefaultDetails(details);
+        details.callTypes = types;
+        return details;
+    }
+
+    private void setDefaultDetails(PhoneCallDetails details) {
+        details.callTypes = new int[] {Calls.INCOMING_TYPE};
+        details.countryIso = TEST_COUNTRY_ISO;
+        details.date = TEST_DATE;
+        details.duration = TEST_DURATION;
+        details.geocode = TEST_GEOCODE;
+    }
+}
diff --git a/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java b/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
new file mode 100644
index 0000000..1e4a000
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import static junit.framework.Assert.assertEquals;
+
+import android.provider.CallLog.Calls;
+
+/**
+ * Helper class to create test values for {@link CallLogQuery}.
+ */
+public class CallLogQueryTestUtils {
+    public static Object[] createTestValues() {
+        Object[] values;
+        if (PhoneNumberDisplayUtil.canShowPostDial()) {
+            values = new Object[]{
+                    0L, "", 0L, 0L, Calls.INCOMING_TYPE, "", "", "", null, 0, null, null, null,
+                    null, 0L, null, 0, Calls.PRESENTATION_ALLOWED, null, null, 0, null, null,
+                    null, ""
+            };
+        } else {
+            values = new Object[]{
+                    0L, "", 0L, 0L, Calls.INCOMING_TYPE, "", "", "", null, 0, null, null, null,
+                    null, 0L, null, 0, Calls.PRESENTATION_ALLOWED, null, null, 0, null, null, null
+            };
+        }
+        assertEquals(CallLogQuery._PROJECTION.length, values.length);
+        return values;
+    }
+}
diff --git a/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java b/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java
new file mode 100644
index 0000000..588a27f
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog;
+
+import android.net.Uri;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.PhoneLookup;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+import com.android.contacts.common.test.mocks.ContactsMockContext;
+import com.android.contacts.common.test.mocks.MockContentProvider.Query;
+
+import junit.framework.Assert;
+
+@MediumTest
+public class ContactInfoHelperTest extends AndroidTestCase {
+
+    private static final String TEST_COUNTRY_ISO = "US";
+    private static final String TEST_DISPLAY_NAME = "Display Name";
+    private static final String TEST_DISPLAY_NAME_ALTERNATIVE = "Name, Display";
+    private static final String[] TEST_DISPLAY_NAME_ALTERNATIVE_ROW = new String[]{
+            TEST_DISPLAY_NAME_ALTERNATIVE};
+    private static final String TEST_LOOKUP_KEY = "lookupKey";
+    private static final String[] TEST_LOOKUP_ROW = new String[]{null, TEST_DISPLAY_NAME,
+            null, null, null, null, null, TEST_LOOKUP_KEY, null};
+
+    private Uri displayNameAlternativeUri;
+    private ContactsMockContext mContext;
+    private ContactInfo mContactInfo;
+    private ContactInfoHelper mContactInfoHelper;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        displayNameAlternativeUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI,
+                TEST_LOOKUP_KEY);
+        mContext = new ContactsMockContext(getContext());
+        mContactInfo = new ContactInfo();
+        mContactInfo.name = TEST_DISPLAY_NAME;
+        mContactInfo.nameAlternative = TEST_DISPLAY_NAME_ALTERNATIVE;
+        mContactInfoHelper = new ContactInfoHelper(mContext, TEST_COUNTRY_ISO);
+    }
+
+    public void testLookupContactFromUri_NullUri() {
+        Assert.assertNull(mContactInfoHelper.lookupContactFromUri(null));
+    }
+
+    public void testLookupContactFromUri_NoResults() {
+        setUpQueryExpectations(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
+                PhoneQuery.PHONE_LOOKUP_PROJECTION);
+
+        Assert.assertEquals(ContactInfo.EMPTY, mContactInfoHelper.lookupContactFromUri(
+                PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI));
+        mContext.verify();
+    }
+
+    public void testLookupContactFromUri_NoDisplayNameAlternative() {
+        setUpQueryExpectations(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
+                PhoneQuery.PHONE_LOOKUP_PROJECTION, TEST_LOOKUP_ROW);
+        setUpQueryExpectations(displayNameAlternativeUri,
+                PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION);
+
+        ContactInfo contactInfo = mContactInfoHelper.lookupContactFromUri(
+                PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI);
+        Assert.assertEquals(TEST_DISPLAY_NAME, contactInfo.name);
+        Assert.assertNull(contactInfo.nameAlternative);
+        mContext.verify();
+    }
+
+    public void testLookupContactFromUri_HasDisplayNameAlternative() {
+        setUpQueryExpectations(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
+                PhoneQuery.PHONE_LOOKUP_PROJECTION, TEST_LOOKUP_ROW);
+        setUpQueryExpectations(displayNameAlternativeUri,
+                PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION, TEST_DISPLAY_NAME_ALTERNATIVE_ROW);
+
+        ContactInfo contactInfo = mContactInfoHelper.lookupContactFromUri(
+                PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI);
+        Assert.assertEquals(TEST_DISPLAY_NAME, contactInfo.name);
+        Assert.assertEquals(TEST_DISPLAY_NAME_ALTERNATIVE, contactInfo.nameAlternative);
+        mContext.verify();
+    }
+
+    public void testLookupDisplayNameAlternative_NullLookup() {
+        Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, null));
+    }
+
+    public void testLookupDisplayNameAlternative_NoResults() {
+        setUpQueryExpectations(displayNameAlternativeUri,
+                PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION);
+        Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY));
+        mContext.verify();
+    }
+
+    public void testLookupDisplayNameAlternative_HasDisplayNameAlternative() {
+        setUpQueryExpectations(displayNameAlternativeUri,
+                PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION, TEST_DISPLAY_NAME_ALTERNATIVE_ROW);
+        Assert.assertEquals(TEST_DISPLAY_NAME_ALTERNATIVE,
+                mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY));
+        mContext.verify();
+    }
+
+    /*
+    * Sets up query expectations to return the given row for all queries for the given
+    * uri and projection. If row is null, an empty cursor is returned for query calls
+    */
+    private void setUpQueryExpectations(Uri uri, String[] projection, String...row) {
+        Query query = mContext.getContactsProvider().expectQuery(uri)
+                .withProjection(projection).withAnySelection().withAnySortOrder();
+        if (row == null || row.length == 0) {
+            query.returnEmptyCursor();
+            return;
+        }
+        query.returnRow(row);
+    }
+}
diff --git a/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java b/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
new file mode 100644
index 0000000..4d51f72
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.support.v7.widget.RecyclerView;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+
+/**
+ * Tests for {@link GroupingListAdapter}.
+ *
+ * Running all tests:
+ *
+ *   adb shell am instrument -e class com.android.dialer.calllog.GroupingListAdapterTests \
+ *     -w com.android.dialer.tests/android.test.InstrumentationTestRunner
+ */
+@MediumTest
+public class GroupingListAdapterTests extends AndroidTestCase {
+
+    static private final String[] PROJECTION = new String[] {
+        "_id",
+        "group",
+    };
+
+    private static final int GROUPING_COLUMN_INDEX = 1;
+
+    private MatrixCursor mCursor;
+    private long mNextId;
+
+    private GroupingListAdapter mAdapter = new GroupingListAdapter(null) {
+
+        @Override
+        protected void addGroups(Cursor cursor) {
+            int count = cursor.getCount();
+            int groupItemCount = 1;
+            cursor.moveToFirst();
+            String currentValue = cursor.getString(GROUPING_COLUMN_INDEX);
+            for (int i = 1; i < count; i++) {
+                cursor.moveToNext();
+                String value = cursor.getString(GROUPING_COLUMN_INDEX);
+                if (TextUtils.equals(value, currentValue)) {
+                    groupItemCount++;
+                } else {
+                    addGroup(i - groupItemCount, groupItemCount);
+                    groupItemCount = 1;
+                    currentValue = value;
+                }
+            }
+            addGroup(count - groupItemCount, groupItemCount);
+        }
+
+        @Override
+        public void onContentChanged() {
+            // Do nothing.
+        }
+
+        @Override
+        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int position) {
+            return null;
+        }
+
+        @Override
+        public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
+            // Do nothing.
+        }
+    };
+
+    private void buildCursor(String... numbers) {
+        mCursor = new MatrixCursor(PROJECTION);
+        mNextId = 1;
+        for (String number : numbers) {
+            mCursor.addRow(new Object[]{mNextId, number});
+            mNextId++;
+        }
+    }
+
+    public void testGroupingWithoutGroups() {
+        buildCursor("1", "2", "3");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(3, mAdapter.getItemCount());
+        assertMetadata(0, 1, "1");
+        assertMetadata(1, 1, "2");
+        assertMetadata(2, 1, "3");
+    }
+
+    public void testGroupingWithGroupAtTheBeginning() {
+        buildCursor("1", "1", "2");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(2, mAdapter.getItemCount());
+        assertMetadata(0, 2, "1");
+        assertMetadata(1, 1, "2");
+    }
+
+    public void testGroupingWithGroupInTheMiddle() {
+        buildCursor("1", "2", "2", "2", "3");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(3, mAdapter.getItemCount());
+        assertMetadata(0, 1, "1");
+        assertMetadata(1, 3, "2");
+        assertMetadata(2, 1, "3");
+    }
+
+    public void testGroupingWithGroupAtTheEnd() {
+        buildCursor("1", "2", "3", "3", "3");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(3, mAdapter.getItemCount());
+        assertMetadata(0, 1, "1");
+        assertMetadata(1, 1, "2");
+        assertMetadata(2, 3, "3");
+    }
+
+    public void testGroupingWithMultipleGroups() {
+        buildCursor("1", "2", "2", "3", "4", "4", "5", "5", "6");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(6, mAdapter.getItemCount());
+        assertMetadata(0, 1, "1");
+        assertMetadata(1, 2, "2");
+        assertMetadata(2, 1, "3");
+        assertMetadata(3, 2, "4");
+        assertMetadata(4, 2, "5");
+        assertMetadata(5, 1, "6");
+    }
+
+    public void testGroupDescriptorArrayGrowth() {
+        String[] numbers = new String[500];
+        for (int i = 0; i < numbers.length; i++) {
+
+            // Make groups of 2
+            numbers[i] = String.valueOf((i / 2) * 2);
+        }
+
+        buildCursor(numbers);
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(250, mAdapter.getItemCount());
+    }
+
+    private void assertMetadata(int listPosition, int groupSize, String objectValue) {
+        assertEquals(groupSize, mAdapter.getGroupSize(listPosition));
+        MatrixCursor cursor = (MatrixCursor) mAdapter.getItem(listPosition);
+        assertEquals(objectValue, cursor.getString(GROUPING_COLUMN_INDEX));
+    }
+}
diff --git a/tests/src/com/android/dialer/calllog/PhoneCallDetailsHelperTest.java b/tests/src/com/android/dialer/calllog/PhoneCallDetailsHelperTest.java
new file mode 100644
index 0000000..b6202b9
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/PhoneCallDetailsHelperTest.java
@@ -0,0 +1,464 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.calllog;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.provider.CallLog.Calls;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.text.Html;
+import android.text.Spanned;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.R;
+import com.android.dialer.calllog.calllogcache.TestTelecomCallLogCache;
+import com.android.dialer.util.AppCompatConstants;
+import com.android.dialer.util.LocaleTestUtils;
+
+import java.util.GregorianCalendar;
+import java.util.Locale;
+
+/**
+ * Unit tests for {@link PhoneCallDetailsHelper}.
+ */
+@MediumTest
+public class PhoneCallDetailsHelperTest extends AndroidTestCase {
+    /** The number to be used to access the voicemail. */
+    private static final String TEST_VOICEMAIL_NUMBER = "125";
+    /** The date of the call log entry. */
+    private static final long TEST_DATE =
+        new GregorianCalendar(2011, 5, 3, 13, 0, 0).getTimeInMillis();
+    private static final long INJECTED_CURRENT_DATE =
+        new GregorianCalendar(2011, 5, 4, 13, 0, 0).getTimeInMillis();
+    /** A test duration value for phone calls. */
+    private static final long TEST_DURATION = 62300;
+    /** The number of the caller/callee in the log entry. */
+    private static final String TEST_NUMBER = "14125555555";
+    /** The formatted version of {@link #TEST_NUMBER}. */
+    private static final String TEST_FORMATTED_NUMBER = "1-412-255-5555";
+    /** The country ISO name used in the tests. */
+    private static final String TEST_COUNTRY_ISO = "US";
+    /** The geocoded location used in the tests. */
+    private static final String TEST_GEOCODE = "United States";
+    /** Empty geocode label */
+    private static final String EMPTY_GEOCODE = "";
+    /** Empty post-dial digits label */
+    private static final String EMPTY_POSTDIAL = "";
+
+    /** The object under test. */
+    private PhoneCallDetailsHelper mHelper;
+    /** The views to fill. */
+    private PhoneCallDetailsViews mViews;
+    private TextView mNameView;
+    private LocaleTestUtils mLocaleTestUtils;
+    private TestTelecomCallLogCache mPhoneUtils;
+
+    private Context mContext;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getContext();
+        Resources resources = mContext.getResources();
+        mPhoneUtils = new TestTelecomCallLogCache(mContext, TEST_VOICEMAIL_NUMBER);
+        final TestTelecomCallLogCache phoneUtils = new TestTelecomCallLogCache(
+                mContext, TEST_VOICEMAIL_NUMBER);
+        mHelper = new PhoneCallDetailsHelper(mContext, resources, phoneUtils);
+        mHelper.setCurrentTimeForTest(INJECTED_CURRENT_DATE);
+        mViews = PhoneCallDetailsViews.createForTest(mContext);
+        mNameView = new TextView(mContext);
+        mLocaleTestUtils = new LocaleTestUtils(mContext);
+        mLocaleTestUtils.setLocale(Locale.US);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mLocaleTestUtils.restoreLocale();
+        mNameView = null;
+        mViews = null;
+        mHelper = null;
+        super.tearDown();
+    }
+
+    public void testSetPhoneCallDetails_Unknown() {
+        setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_UNKNOWN, "");
+        assertNameEqualsResource(R.string.unknown);
+    }
+
+    public void testSetPhoneCallDetails_Private() {
+        setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_RESTRICTED, "");
+        assertNameEqualsResource(R.string.private_num);
+    }
+
+    public void testSetPhoneCallDetails_Payphone() {
+        setPhoneCallDetailsWithNumber("", Calls.PRESENTATION_PAYPHONE, "");
+        assertNameEqualsResource(R.string.payphone);
+    }
+
+    public void testSetPhoneCallDetails_Voicemail() {
+        setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER,
+                Calls.PRESENTATION_ALLOWED, TEST_VOICEMAIL_NUMBER);
+        assertNameEqualsResource(R.string.voicemail);
+    }
+
+    // Voicemail date string has 3 different formats depending on how long ago the call was placed
+    public void testSetVoicemailPhoneCallDetails_Today() {
+        setVoicemailPhoneCallDetailsWithDate(System.currentTimeMillis());
+        assertLocationAndDateContains("Today at");
+    }
+
+    public void testSetVoicemailPhoneCallDetails_WithinCurrentYear() {
+        mHelper.setCurrentTimeForTest(INJECTED_CURRENT_DATE);
+        String formattedTestDate = "Jun 3 at 1:00 PM";
+        setVoicemailPhoneCallDetailsWithDate(TEST_DATE);
+        assertLocationAndDateContains(formattedTestDate);
+    }
+
+    public void testSetVoicemailPhoneCallDetails_OutsideCurrentYear() {
+        mHelper.setCurrentTimeForTest(INJECTED_CURRENT_DATE);
+        long testDate = new GregorianCalendar(2009, 5, 3, 13, 0, 0).getTimeInMillis();
+        String formattedTestDate = "Jun 3, 2009 at 1:00 PM";
+        setVoicemailPhoneCallDetailsWithDate(testDate);
+        assertLocationAndDateContains(formattedTestDate);
+    }
+
+    public void testVoicemailLocationNotShownWithDate() {
+        setVoicemailPhoneCallDetailsWithDate(TEST_DATE);
+        assertLocationAndDateExactEquals("Jun 3 at 1:00 PM");
+    }
+
+    /** Asserts that a char sequence is actually a Spanned corresponding to the expected HTML. */
+    private void assertEqualsHtml(String expectedHtml, CharSequence actualText) {
+        // In order to contain HTML, the text should actually be a Spanned.
+        assertTrue(actualText instanceof Spanned);
+        Spanned actualSpanned = (Spanned) actualText;
+        // Convert from and to HTML to take care of alternative formatting of HTML.
+        assertEquals(Html.toHtml(Html.fromHtml(expectedHtml)), Html.toHtml(actualSpanned));
+
+    }
+
+    public void testSetPhoneCallDetails_Date() {
+        mHelper.setCurrentTimeForTest(
+                new GregorianCalendar(2011, 5, 3, 13, 0, 0).getTimeInMillis());
+
+        setPhoneCallDetailsWithDate(
+                new GregorianCalendar(2011, 5, 3, 13, 0, 0).getTimeInMillis());
+        assertLocationAndDateContains("0 min. ago");
+
+        setPhoneCallDetailsWithDate(
+                new GregorianCalendar(2011, 5, 3, 12, 0, 0).getTimeInMillis());
+        assertLocationAndDateContains("1 hr. ago");
+
+        setPhoneCallDetailsWithDate(
+                new GregorianCalendar(2011, 5, 2, 13, 0, 0).getTimeInMillis());
+        assertLocationAndDateContains("Yesterday");
+
+        setPhoneCallDetailsWithDate(
+                new GregorianCalendar(2011, 5, 1, 13, 0, 0).getTimeInMillis());
+        assertLocationAndDateContains("2 days ago");
+    }
+
+    public void testSetPhoneCallDetails_CallTypeIcons() {
+        setPhoneCallDetailsWithCallTypeIcons(AppCompatConstants.CALLS_INCOMING_TYPE);
+        assertCallTypeIconsEquals(AppCompatConstants.CALLS_INCOMING_TYPE);
+
+        setPhoneCallDetailsWithCallTypeIcons(AppCompatConstants.CALLS_OUTGOING_TYPE);
+        assertCallTypeIconsEquals(AppCompatConstants.CALLS_OUTGOING_TYPE);
+
+        setPhoneCallDetailsWithCallTypeIcons(AppCompatConstants.CALLS_MISSED_TYPE);
+        assertCallTypeIconsEquals(AppCompatConstants.CALLS_MISSED_TYPE);
+
+        setPhoneCallDetailsWithCallTypeIcons(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+        assertCallTypeIconsEquals(AppCompatConstants.CALLS_VOICEMAIL_TYPE);
+    }
+
+    /**
+     * Tests a case where the video call feature is present.
+     */
+    public void testSetPhoneCallDetails_Video() {
+        PhoneCallDetails details = getPhoneCallDetails();
+        details.features = Calls.FEATURES_VIDEO;
+        mHelper.setPhoneCallDetails(mViews, details);
+
+        assertIsVideoCall(true);
+    }
+
+    /**
+     * Tests a case where the video call feature is not present.
+     */
+    public void testSetPhoneCallDetails_NoVideo() {
+        PhoneCallDetails details = getPhoneCallDetails();
+        details.features = 0;
+        mHelper.setPhoneCallDetails(mViews, details);
+
+        assertIsVideoCall(false);
+    }
+
+    public void testSetPhoneCallDetails_MultipleCallTypeIcons() {
+        setPhoneCallDetailsWithCallTypeIcons(
+                AppCompatConstants.CALLS_INCOMING_TYPE,
+                AppCompatConstants.CALLS_OUTGOING_TYPE);
+        assertCallTypeIconsEquals(
+                AppCompatConstants.CALLS_INCOMING_TYPE,
+                AppCompatConstants.CALLS_OUTGOING_TYPE);
+
+        setPhoneCallDetailsWithCallTypeIcons(
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_MISSED_TYPE);
+        assertCallTypeIconsEquals(
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_MISSED_TYPE);
+    }
+
+    public void testSetPhoneCallDetails_MultipleCallTypeIconsLastOneDropped() {
+        setPhoneCallDetailsWithCallTypeIcons(
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_INCOMING_TYPE,
+                AppCompatConstants.CALLS_OUTGOING_TYPE);
+        assertCallTypeIconsEqualsPlusOverflow("(4)",
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_MISSED_TYPE,
+                AppCompatConstants.CALLS_INCOMING_TYPE);
+    }
+
+    public void testSetPhoneCallDetails_Geocode() {
+        setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", "Pennsylvania");
+        assertNameEquals("1-412-555-5555");  // The phone number is shown as the name.
+        assertLocationAndDateContains("Pennsylvania"); // The geocode is shown as the label.
+    }
+
+    public void testSetPhoneCallDetails_NoGeocode() {
+        setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", null);
+        assertNameEquals("1-412-555-5555");  // The phone number is shown as the name.
+        assertLocationAndDateContains(EMPTY_GEOCODE); // The empty geocode is shown as the label.
+    }
+
+    public void testSetPhoneCallDetails_EmptyGeocode() {
+        setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", "");
+        assertNameEquals("1-412-555-5555");  // The phone number is shown as the name.
+        assertLocationAndDateContains(EMPTY_GEOCODE); // The empty geocode is shown as the label.
+    }
+
+    public void testSetPhoneCallDetails_NoGeocodeForVoicemail() {
+        setPhoneCallDetailsWithNumberAndGeocode(TEST_VOICEMAIL_NUMBER, "", "United States");
+        assertLocationAndDateContains(EMPTY_GEOCODE); // The empty geocode is shown as the label.
+    }
+
+    public void testSetPhoneCallDetails_Highlighted() {
+        setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER,
+                Calls.PRESENTATION_ALLOWED, "");
+    }
+
+    public void testSetCallDetailsHeader_NumberOnly() {
+        setCallDetailsHeaderWithNumber(TEST_NUMBER, Calls.PRESENTATION_ALLOWED);
+        assertEquals(View.VISIBLE, mNameView.getVisibility());
+        assertEquals("1-412-255-5555", mNameView.getText().toString());
+    }
+
+    public void testSetCallDetailsHeader_UnknownNumber() {
+        setCallDetailsHeaderWithNumber("", Calls.PRESENTATION_UNKNOWN);
+        assertEquals(View.VISIBLE, mNameView.getVisibility());
+        assertEquals("Unknown", mNameView.getText().toString());
+    }
+
+    public void testSetCallDetailsHeader_PrivateNumber() {
+        setCallDetailsHeaderWithNumber("", Calls.PRESENTATION_RESTRICTED);
+        assertEquals(View.VISIBLE, mNameView.getVisibility());
+        assertEquals("Private number", mNameView.getText().toString());
+    }
+
+    public void testSetCallDetailsHeader_PayphoneNumber() {
+        setCallDetailsHeaderWithNumber("", Calls.PRESENTATION_PAYPHONE);
+        assertEquals(View.VISIBLE, mNameView.getVisibility());
+        assertEquals("Payphone", mNameView.getText().toString());
+    }
+
+    public void testSetCallDetailsHeader_VoicemailNumber() {
+        PhoneCallDetails details = getPhoneCallDetails(
+                TEST_VOICEMAIL_NUMBER,
+                Calls.PRESENTATION_ALLOWED,
+                TEST_FORMATTED_NUMBER);
+        mHelper.setCallDetailsHeader(mNameView, details);
+        assertEquals(View.VISIBLE, mNameView.getVisibility());
+        assertEquals("Voicemail", mNameView.getText().toString());
+    }
+
+    public void testSetCallDetailsHeader() {
+        setCallDetailsHeader("John Doe");
+        assertEquals(View.VISIBLE, mNameView.getVisibility());
+        assertEquals("John Doe", mNameView.getText().toString());
+    }
+
+    public void testGetCallTypeOrLocation_Geocode() {
+        assertEquals(TEST_GEOCODE, mHelper.getCallTypeOrLocation(getPhoneCallDetails()));
+    }
+
+    public void testGetCallTypeOrLocation_CallType() {
+        PhoneCallDetails details = getPhoneCallDetails();
+        details.geocode = null;
+        details.numberType = Calls.INCOMING_TYPE;
+        mHelper.setPhoneTypeLabelForTest("mobile");
+        assertEquals("mobile", mHelper.getCallTypeOrLocation(details));
+    }
+
+    public void testGetCallTypeOrLocation_DisplayNumber() {
+        PhoneCallDetails details = getPhoneCallDetails("", Calls.PRESENTATION_ALLOWED,
+                TEST_FORMATTED_NUMBER);
+        details.namePrimary = "name";
+        assertEquals(TEST_FORMATTED_NUMBER, mHelper.getCallTypeOrLocation(details));
+    }
+
+    /** Asserts that the name text field contains the value of the given string resource. */
+    private void assertNameEqualsResource(int resId) {
+        assertNameEquals(getContext().getString(resId));
+    }
+
+    /** Asserts that the name text field contains the given string value. */
+    private void assertNameEquals(String text) {
+        assertEquals(text, mViews.nameView.getText().toString());
+    }
+
+    /** Asserts that the location and date text field contains the given string value. */
+    private void assertLocationAndDateContains(String text) {
+        assertTrue(mViews.callLocationAndDate.getText().toString().contains(text));
+    }
+
+    /** Asserts that the location and date text field exactly equals the given string value. */
+    private void assertLocationAndDateExactEquals(String text) {
+        assertEquals(text, mViews.callLocationAndDate.getText());
+    }
+
+    /** Asserts that the video icon is shown. */
+    private void assertIsVideoCall(boolean isVideoCall) {
+        assertEquals(isVideoCall, mViews.callTypeIcons.isVideoShown());
+    }
+
+    /** Asserts that the call type contains the images with the given drawables. */
+    private void assertCallTypeIconsEquals(int... ids) {
+        assertEquals(ids.length, mViews.callTypeIcons.getCount());
+        for (int index = 0; index < ids.length; ++index) {
+            int id = ids[index];
+            assertEquals(id, mViews.callTypeIcons.getCallType(index));
+        }
+        assertEquals(View.VISIBLE, mViews.callTypeIcons.getVisibility());
+    }
+
+    /**
+     * Asserts that the call type contains the images with the given drawables and shows the given
+     * text next to the icons.
+     */
+    private void assertCallTypeIconsEqualsPlusOverflow(String overflowText, int... ids) {
+        assertEquals(ids.length, mViews.callTypeIcons.getCount());
+        for (int index = 0; index < ids.length; ++index) {
+            int id = ids[index];
+            assertEquals(id, mViews.callTypeIcons.getCallType(index));
+        }
+        assertEquals(View.VISIBLE, mViews.callTypeIcons.getVisibility());
+        assertTrue(mViews.callLocationAndDate.getText().toString().contains(overflowText));
+        assertTrue(mViews.callLocationAndDate.getText().toString().contains("Yesterday"));
+    }
+
+    /** Sets the phone call details with default values and the given number. */
+    private void setPhoneCallDetailsWithNumber(String number, int presentation,
+            String formattedNumber) {
+        PhoneCallDetails details = getPhoneCallDetails(number, presentation, formattedNumber);
+        details.callTypes = new int[]{ AppCompatConstants.CALLS_VOICEMAIL_TYPE };
+        mHelper.setPhoneCallDetails(mViews, details);
+    }
+
+    /** Sets the phone call details with default values and the given number. */
+    private void setPhoneCallDetailsWithNumberAndGeocode(
+            String number, String formattedNumber, String geocodedLocation) {
+        PhoneCallDetails details = getPhoneCallDetails(
+                number, Calls.PRESENTATION_ALLOWED, formattedNumber);
+        details.geocode = geocodedLocation;
+        mHelper.setPhoneCallDetails(mViews, details);
+    }
+
+    /** Sets the phone call details with default values and the given date. */
+    private void setPhoneCallDetailsWithDate(long date) {
+        PhoneCallDetails details = getPhoneCallDetails();
+        details.date = date;
+        mHelper.setPhoneCallDetails(mViews, details);
+    }
+
+    private void setVoicemailPhoneCallDetailsWithDate(long date) {
+        PhoneCallDetails details = getPhoneCallDetails();
+        details.date = date;
+        details.callTypes = new int[] {Calls.VOICEMAIL_TYPE};
+        mHelper.setPhoneCallDetails(mViews, details);
+    }
+
+    /** Sets the phone call details with default values and the given call types using icons. */
+    private void setPhoneCallDetailsWithCallTypeIcons(int... callTypes) {
+        PhoneCallDetails details = getPhoneCallDetails();
+        details.callTypes = callTypes;
+        mHelper.setPhoneCallDetails(mViews, details);
+    }
+
+    private void setCallDetailsHeaderWithNumber(String number, int presentation) {
+        mHelper.setCallDetailsHeader(mNameView,
+                getPhoneCallDetails(number, presentation, TEST_FORMATTED_NUMBER));
+    }
+
+    private void setCallDetailsHeader(String name) {
+        PhoneCallDetails details = getPhoneCallDetails();
+        details.namePrimary = name;
+        mHelper.setCallDetailsHeader(mNameView, details);
+    }
+
+    private PhoneCallDetails getPhoneCallDetails() {
+        PhoneCallDetails details = new PhoneCallDetails(
+                mContext,
+                TEST_NUMBER,
+                Calls.PRESENTATION_ALLOWED,
+                TEST_FORMATTED_NUMBER,
+                EMPTY_POSTDIAL,
+                false /* isVoicemail */);
+        setDefaultDetails(details);
+        return details;
+    }
+
+    private PhoneCallDetails getPhoneCallDetails(
+            String number, int presentation, String formattedNumber) {
+        PhoneCallDetails details = new PhoneCallDetails(
+                mContext,
+                number,
+                presentation,
+                formattedNumber,
+                EMPTY_POSTDIAL,
+                isVoicemail(number));
+        setDefaultDetails(details);
+        return details;
+    }
+
+    private void setDefaultDetails(PhoneCallDetails details) {
+        details.callTypes = new int[]{ AppCompatConstants.CALLS_INCOMING_TYPE };
+        details.countryIso = TEST_COUNTRY_ISO;
+        details.date = TEST_DATE;
+        details.duration = TEST_DURATION;
+        details.geocode = TEST_GEOCODE;
+    }
+
+    private boolean isVoicemail(String number) {
+        return number.equals(TEST_VOICEMAIL_NUMBER);
+    }
+}
diff --git a/tests/src/com/android/dialer/calllog/calllogcache/TestTelecomCallLogCache.java b/tests/src/com/android/dialer/calllog/calllogcache/TestTelecomCallLogCache.java
new file mode 100644
index 0000000..077a498
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/calllogcache/TestTelecomCallLogCache.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2013 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.dialer.calllog.calllogcache;
+
+import android.content.Context;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+
+/**
+ * Modified version of {@link com.android.dialer.calllog.calllogcache.CallLogCache} to be used in
+ * tests that allows injecting the voicemail number.
+ *
+ * NOTE: This tests the pre-LMR1 version because currently none of the tests involve multi-SIM,
+ * but...
+ * TODO: write tests to test multi-SIM functionality in TelecomCallLogCache.
+ */
+public final class TestTelecomCallLogCache extends CallLogCache {
+    private CharSequence mVoicemailNumber;
+
+    public TestTelecomCallLogCache(Context context, CharSequence voicemailNumber) {
+        super(context);
+        mVoicemailNumber = voicemailNumber;
+    }
+
+    @Override
+    public boolean isVoicemailNumber(PhoneAccountHandle accountHandle, CharSequence number) {
+        return mVoicemailNumber.equals(number);
+    }
+
+    @Override
+    public String getAccountLabel(PhoneAccountHandle accountHandle) {
+        return null;
+    }
+
+    @Override
+    public int getAccountColor(PhoneAccountHandle accountHandle) {
+        return PhoneAccount.NO_HIGHLIGHT_COLOR;
+    }
+
+    @Override
+    public boolean doesAccountSupportCallSubject(PhoneAccountHandle accountHandle) {
+        return false;
+    }
+}
diff --git a/tests/src/com/android/dialer/compat/UserManagerCompatTest.java b/tests/src/com/android/dialer/compat/UserManagerCompatTest.java
new file mode 100644
index 0000000..ff734a1
--- /dev/null
+++ b/tests/src/com/android/dialer/compat/UserManagerCompatTest.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2015 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.dialer.compat;
+
+import android.test.AndroidTestCase;
+
+import com.android.contacts.common.compat.CompatUtils;
+
+public class UserManagerCompatTest extends AndroidTestCase {
+
+    public void testIsUserUnlocked_N_NullContext() {
+        if (!CompatUtils.isNCompatible()) {
+            return;
+        }
+        try {
+            UserManagerCompat.isUserUnlocked(null);
+            fail("Expected NullPointerException but none was thrown");
+        } catch (NullPointerException e) {}
+    }
+
+    public void testIsUserUnlocked_M_NullContext() {
+        if (CompatUtils.isNCompatible()) {
+            return;
+        }
+        assertTrue(UserManagerCompat.isUserUnlocked(null));
+    }
+
+    public void testIsUserUnlocked() {
+        assertTrue(UserManagerCompat.isUserUnlocked(getContext()));
+    }
+}
diff --git a/tests/src/com/android/dialer/database/DatabaseTestUtils.java b/tests/src/com/android/dialer/database/DatabaseTestUtils.java
new file mode 100644
index 0000000..03b4938
--- /dev/null
+++ b/tests/src/com/android/dialer/database/DatabaseTestUtils.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2015 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.dialer.database;
+
+import android.database.MatrixCursor;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.text.TextUtils;
+
+import com.android.dialer.database.DialerDatabaseHelper.ContactNumber;
+
+public class DatabaseTestUtils {
+    public static MatrixCursor constructNewNameCursor() {
+        final MatrixCursor cursor = new MatrixCursor(new String[]{
+                DialerDatabaseHelper.SmartDialDbColumns.DISPLAY_NAME_PRIMARY,
+                DialerDatabaseHelper.SmartDialDbColumns.CONTACT_ID});
+        return cursor;
+    }
+
+    public static MatrixCursor constructNewContactCursor() {
+        final MatrixCursor cursor = new MatrixCursor(new String[]{
+                    Phone._ID,                          // 0
+                    Phone.TYPE,                         // 1
+                    Phone.LABEL,                        // 2
+                    Phone.NUMBER,                       // 3
+                    Phone.CONTACT_ID,                   // 4
+                    Phone.LOOKUP_KEY,                   // 5
+                    Phone.DISPLAY_NAME_PRIMARY,         // 6
+                    Phone.PHOTO_ID,                     // 7
+                    Data.LAST_TIME_USED,                // 8
+                    Data.TIMES_USED,                    // 9
+                    Contacts.STARRED,                   // 10
+                    Data.IS_SUPER_PRIMARY,              // 11
+                    Contacts.IN_VISIBLE_GROUP,          // 12
+                    Data.IS_PRIMARY});                  // 13
+        return cursor;
+    }
+
+    public static ContactNumber constructNewContactWithDummyIds(MatrixCursor contactCursor,
+            MatrixCursor nameCursor, String number, int id, String displayName) {
+        return constructNewContact(contactCursor, nameCursor, id, number, id, String.valueOf(id),
+                displayName, 0, 0, 0, 0, 0, 0, 0);
+    }
+
+    public static ContactNumber constructNewContact(MatrixCursor contactCursor,
+            MatrixCursor nameCursor, int id, String number, int contactId, String lookupKey,
+            String displayName, int photoId, int lastTimeUsed, int timesUsed, int starred,
+            int isSuperPrimary, int inVisibleGroup, int isPrimary) {
+        if (contactCursor == null || nameCursor == null) {
+            throw new IllegalArgumentException("Provided MatrixCursors cannot be null");
+        }
+
+        if (TextUtils.isEmpty(number)) {
+            // Add a dummy number, otherwise DialerDatabaseHelper simply ignores the entire
+            // row if the number is empty
+            number = "0";
+        }
+
+        contactCursor.addRow(new Object[]{id, "", "", number, contactId, lookupKey, displayName,
+                photoId, lastTimeUsed, timesUsed, starred, isSuperPrimary, inVisibleGroup,
+                isPrimary});
+        nameCursor.addRow(new Object[]{displayName, contactId});
+
+        return new ContactNumber(contactId, id, displayName, number, lookupKey, 0, 0);
+    }
+}
diff --git a/tests/src/com/android/dialer/database/DialerDatabaseHelperTest.java b/tests/src/com/android/dialer/database/DialerDatabaseHelperTest.java
new file mode 100644
index 0000000..a95a79e
--- /dev/null
+++ b/tests/src/com/android/dialer/database/DialerDatabaseHelperTest.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2013 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.dialer.database;
+
+import static com.android.dialer.database.DatabaseTestUtils.*;
+
+import android.database.MatrixCursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.test.suitebuilder.annotation.Suppress;
+import android.test.AndroidTestCase;
+
+import com.android.dialer.database.DialerDatabaseHelper;
+import com.android.dialer.database.DialerDatabaseHelper.ContactNumber;
+import com.android.dialer.dialpad.SmartDialNameMatcher;
+import com.android.dialer.dialpad.SmartDialPrefix;
+
+import java.lang.Exception;
+import java.lang.Override;
+import java.util.ArrayList;
+
+/**
+ * Validates the behavior of the smart dial database helper with regards to contact updates and
+ * deletes.
+ * To run this test, use the command:
+ * adb shell am instrument -w -e class com.android.dialer.database.DialerDatabaseHelperTest /
+ * com.android.dialer.tests/android.test.InstrumentationTestRunner
+ */
+@SmallTest
+public class DialerDatabaseHelperTest extends AndroidTestCase {
+
+    private DialerDatabaseHelper mTestHelper;
+    private SQLiteDatabase mDb;
+
+    @Override
+    protected void setUp() {
+        mTestHelper = DialerDatabaseHelper.getNewInstanceForTest(getContext());
+        mDb = mTestHelper.getWritableDatabase();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+        mTestHelper.removeAllContacts(db);
+        super.tearDown();
+    }
+
+    /**
+     * Verifies that a new contact added into the database is a match after the update.
+     */
+    public void testForNewContacts() {
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 0L);
+        mTestHelper.insertNamePrefixes(mDb, nameCursor);
+        assertEquals(0, getMatchesFromDb("5105272357").size());
+
+        // Insert new contact
+        constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "510-527-2357", 0,  "James");
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 1L);
+        mTestHelper.insertNamePrefixes(mDb, nameCursor);
+        assertEquals(1, getMatchesFromDb("5105272357").size());
+    }
+
+    /**
+     * Verifies that a contact that has its phone number changed is a match after the update.
+     */
+    public void testForUpdatedContacts() {
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "510-527-2357", 0,  "James");
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 0L);
+        mTestHelper.insertNamePrefixes(mDb, nameCursor);
+        assertEquals(1, getMatchesFromDb("5105272357").size());
+        assertEquals(0, getMatchesFromDb("6501234567").size());
+
+        // Update the database with the new contact information
+        final MatrixCursor nameCursor2 =  constructNewNameCursor();
+        final MatrixCursor contactCursor2 = constructNewContactCursor();
+        constructNewContactWithDummyIds(contactCursor2, nameCursor2,
+                "650-123-4567", 0,  "James");
+        mTestHelper.removeUpdatedContacts(mDb, contactCursor2);
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor2, 1L);
+        mTestHelper.insertNamePrefixes(mDb, nameCursor2);
+
+        // Now verify the matches are correct based on the new information
+        assertEquals(0, getMatchesFromDb("5105272357").size());
+        assertEquals(1, getMatchesFromDb("6501234567").size());
+    }
+
+    /**
+     * Verifies that a contact that is deleted from CP2 is similarly deleted from the database
+     */
+    public void testForDeletedContacts() {
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "510-527-2357", 0,  "James");
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 0L);
+        mTestHelper.insertNamePrefixes(mDb, nameCursor);
+        assertEquals(1, getMatchesFromDb("5105272357").size());
+
+        // Delete the contact and update its projection.
+        final MatrixCursor deletedCursor =
+                new MatrixCursor(DialerDatabaseHelper.DeleteContactQuery.PROJECTION);
+        deletedCursor.addRow(new Object[] {0, 1L});
+        mTestHelper.removeDeletedContacts(mDb, deletedCursor);
+        assertEquals(0, getMatchesFromDb("5105272357").size());
+    }
+
+    /**
+     * Verifies that when a contact's number is deleted (but not the entire contact), the
+     * number is correctly deleted from the database.
+     */
+    public void testForDeletedNumber() {
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "510-527-2357", 0,  "James");
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(mDb, contactCursor, 0L);
+        mTestHelper.insertNamePrefixes(mDb, nameCursor);
+        assertEquals(1, getMatchesFromDb("5105272357").size());
+
+        // Match no longer exists after number was deleted from contact
+        final MatrixCursor updatedContactCursor =
+                new MatrixCursor(DialerDatabaseHelper.UpdatedContactQuery.PROJECTION);
+        updatedContactCursor.addRow(new Object[] {0});
+        mTestHelper.removeUpdatedContacts(mDb, updatedContactCursor);
+        assertEquals(0, getMatchesFromDb("5105272357").size());
+    }
+
+    private ArrayList<ContactNumber> getMatchesFromDb(String query) {
+        final SmartDialNameMatcher nameMatcher = new SmartDialNameMatcher(query,
+                SmartDialPrefix.getMap());
+        return mTestHelper.getLooseMatches(query, nameMatcher);
+    }
+}
diff --git a/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java b/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java
new file mode 100644
index 0000000..1191560
--- /dev/null
+++ b/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java
@@ -0,0 +1,232 @@
+/*
+ * Copyright (C) 2015 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.dialer.database;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.net.Uri;
+import android.test.ProviderTestCase2;
+import android.test.suitebuilder.annotation.MediumTest;
+
+@MediumTest
+public class FilteredNumberProviderTest extends
+        ProviderTestCase2<FilteredNumberProviderTest.TestFilteredNumberProvider> {
+    private ContentResolver mResolver;
+
+    private static final String TIME_ZONE_AMERICA_LOS_ANGELES = "America/Los_Angeles";
+    private static final String DEFAULT_TIMEZONE = TIME_ZONE_AMERICA_LOS_ANGELES;
+    private static final String DEFAULT_COUNTRY_ISO = "US";
+    private static final String TEST_NUMBER = "234567890";
+    private static final String TEST_NORMALIZED_NUMBER = "+1234567890";
+    private static final long TEST_TIME = 1439936706;
+
+    public FilteredNumberProviderTest () {
+        super(TestFilteredNumberProvider.class, FilteredNumberContract.AUTHORITY);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mResolver = getMockContentResolver();
+    }
+
+    public void testInsert() {
+        // Insert row
+        Uri uri = mResolver.insert(
+                FilteredNumberContract.FilteredNumber.CONTENT_URI,
+                getTestValues(null));
+        assertNotNull(uri);
+        long id = ContentUris.parseId(uri);
+        assertTrue(id > 0);
+    }
+
+    public void testQuery() {
+        Cursor cursor = mResolver.query(
+                FilteredNumberContract.FilteredNumber.CONTENT_URI, null, null, null, null);
+        assertNotNull(cursor);
+        assertEquals(cursor.getCount(), 0);
+        cursor.close();
+    }
+
+    public void testInsertAndQuery() {
+        // Insert row
+        ContentValues testValues = getTestValues(null);
+        Uri uri = mResolver.insert(FilteredNumberContract.FilteredNumber.CONTENT_URI, testValues);
+
+        // Query
+        Cursor cursor = mResolver.query(uri, null, null, null, null);
+        assertNotNull(cursor);
+        assertEquals(cursor.getCount(), 1);
+
+        cursor.moveToFirst();
+        assertCursorValues(cursor, testValues);
+        cursor.close();
+    }
+
+    public void testIllegalUri() {
+        try {
+            mResolver.query(
+                    Uri.withAppendedPath(
+                            FilteredNumberContract.FilteredNumber.CONTENT_URI,
+                            "ILLEGAL"), null, null, null, null);
+            fail("Expecting exception but none was thrown.");
+        } catch (IllegalArgumentException e) {
+        }
+    }
+
+    public void testQueryWithId() {
+        // Insert row
+        ContentValues testValues = getTestValues(null);
+        Uri uri = mResolver.insert(FilteredNumberContract.FilteredNumber.CONTENT_URI, testValues);
+        long id = ContentUris.parseId(uri);
+
+        // Query
+        Cursor cursor = mResolver.query(
+                ContentUris.withAppendedId(
+                        FilteredNumberContract.FilteredNumber.CONTENT_URI,
+                        id), null, null, null, null);
+        assertNotNull(cursor);
+        assertEquals(cursor.getCount(), 1);
+
+        cursor.moveToFirst();
+        assertCursorValues(cursor, testValues);
+        cursor.close();
+    }
+
+    public void testDelete() {
+        // Insert row
+        Uri uri = mResolver.insert(
+                FilteredNumberContract.FilteredNumber.CONTENT_URI,
+                getTestValues(null));
+        long id = ContentUris.parseId(uri);
+
+        // Delete row
+        int rows = mResolver.delete(
+                FilteredNumberContract.FilteredNumber.CONTENT_URI,
+                FilteredNumberContract.FilteredNumberColumns._ID + " = ?",
+                new String[]{Long.toString(id)});
+        assertEquals(rows, 1);
+
+        // Query
+        Cursor cursor =  mResolver.query(uri, null, null, null, null);
+        assertNotNull(cursor);
+        assertEquals(cursor.getCount(), 0);
+        cursor.close();
+    }
+
+    public void testUpdate() {
+        // Insert row
+        Uri uri = mResolver.insert(
+                FilteredNumberContract.FilteredNumber.CONTENT_URI,
+                getTestValues(null));
+
+        // Update row
+        ContentValues v = new ContentValues();
+        v.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 3);
+        v.put(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED, TEST_TIME);
+        int rows = mResolver.update(FilteredNumberContract.FilteredNumber.CONTENT_URI, v,
+                FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER + " = ?",
+                new String[]{TEST_NORMALIZED_NUMBER});
+        assertEquals(rows, 1);
+
+        ContentValues expected = getTestValues(TEST_TIME);
+        expected.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 3);
+        expected.put(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED, TEST_TIME);
+
+        // Re-query
+        Cursor cursor =  mResolver.query(uri, null, null, null, null);
+        assertNotNull(cursor);
+        assertEquals(cursor.getCount(), 1);
+        cursor.moveToFirst();
+        assertCursorValues(cursor, expected);
+        cursor.close();
+    }
+
+    public void testInsertDefaultValues() {
+        // Insert row
+        ContentValues v = getTestValues(null);
+        Uri uri = mResolver.insert(FilteredNumberContract.FilteredNumber.CONTENT_URI, v);
+        assertNotNull(uri);
+        long id = ContentUris.parseId(uri);
+        assertTrue(id > 0);
+
+        // Query
+        Cursor cursor =  mResolver.query(uri, null, null, null, null);
+        assertNotNull(cursor);
+        assertEquals(cursor.getCount(), 1);
+
+        int creationTimeIndex =
+                cursor.getColumnIndex(FilteredNumberContract.FilteredNumberColumns.CREATION_TIME);
+        cursor.moveToFirst();
+        assertEquals(cursor.getLong(creationTimeIndex), TEST_TIME);
+        cursor.close();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        getProvider().closeDb();
+        super.tearDown();
+    }
+
+    private ContentValues getTestValues(Long timeNow) {
+        ContentValues v = new ContentValues();
+        v.putNull(FilteredNumberContract.FilteredNumberColumns._ID);
+        v.put(FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER,
+                TEST_NORMALIZED_NUMBER);
+        v.put(FilteredNumberContract.FilteredNumberColumns.NUMBER, TEST_NUMBER);
+        v.put(FilteredNumberContract.FilteredNumberColumns.COUNTRY_ISO, DEFAULT_COUNTRY_ISO);
+        v.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 0);
+        v.putNull(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED);
+        v.put(FilteredNumberContract.FilteredNumberColumns.CREATION_TIME, timeNow);
+        v.put(FilteredNumberContract.FilteredNumberColumns.SOURCE, 1);
+        v.put(FilteredNumberContract.FilteredNumberColumns.TYPE, 1);
+        return v;
+    }
+
+    private void assertCursorValues(Cursor cursor, ContentValues expectedValues) {
+        ContentValues v = new ContentValues();
+        DatabaseUtils.cursorRowToContentValues(cursor, v);
+        v.remove(FilteredNumberContract.FilteredNumberColumns._ID);
+        expectedValues.remove(FilteredNumberContract.FilteredNumberColumns._ID);
+        assertEquals(v.toString(), expectedValues.toString());
+    }
+
+    public static class TestFilteredNumberProvider extends FilteredNumberProvider {
+        private DialerDatabaseHelper mDialerDatabaseHelper;
+
+        @Override
+        protected DialerDatabaseHelper getDatabaseHelper(Context context) {
+            if (mDialerDatabaseHelper == null) {
+                mDialerDatabaseHelper = DialerDatabaseHelper.getNewInstanceForTest(context);
+            }
+            return mDialerDatabaseHelper;
+        }
+
+        protected void closeDb() {
+            mDialerDatabaseHelper.close();
+        }
+
+        @Override
+        protected long getCurrentTimeMs() {
+            return TEST_TIME;
+        }
+    }
+}
diff --git a/tests/src/com/android/dialer/database/SmartDialPrefixTest.java b/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
new file mode 100644
index 0000000..78962e3
--- /dev/null
+++ b/tests/src/com/android/dialer/database/SmartDialPrefixTest.java
@@ -0,0 +1,523 @@
+/*
+ * Copyright (C) 2013 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.dialer.database;
+
+import static com.android.dialer.database.DatabaseTestUtils.*;
+
+import android.database.MatrixCursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.test.AndroidTestCase;
+
+import com.android.dialer.database.DialerDatabaseHelper;
+import com.android.dialer.database.DialerDatabaseHelper.ContactNumber;
+import com.android.dialer.dialpad.SmartDialNameMatcher;
+import com.android.dialer.dialpad.SmartDialPrefix;
+
+import java.lang.Exception;
+import java.lang.Override;
+import java.lang.String;
+import java.util.ArrayList;
+
+/**
+ * To run this test, use the command:
+ * adb shell am instrument -w -e class com.android.dialer.database.SmartDialPrefixTest /
+ * com.android.dialer.tests/android.test.InstrumentationTestRunner
+ */
+@SmallTest
+public class SmartDialPrefixTest extends AndroidTestCase {
+
+    private DialerDatabaseHelper mTestHelper;
+
+    public void testIsCountryNanp_CaseInsensitive() {
+        assertFalse(SmartDialPrefix.isCountryNanp(null));
+        assertFalse(SmartDialPrefix.isCountryNanp("CN"));
+        assertFalse(SmartDialPrefix.isCountryNanp("HK"));
+        assertFalse(SmartDialPrefix.isCountryNanp("uk"));
+        assertFalse(SmartDialPrefix.isCountryNanp("sg"));
+        assertTrue(SmartDialPrefix.isCountryNanp("US"));
+        assertTrue(SmartDialPrefix.isCountryNanp("CA"));
+        assertTrue(SmartDialPrefix.isCountryNanp("AS"));
+        assertTrue(SmartDialPrefix.isCountryNanp("AI"));
+        assertTrue(SmartDialPrefix.isCountryNanp("AG"));
+        assertTrue(SmartDialPrefix.isCountryNanp("BS"));
+        assertTrue(SmartDialPrefix.isCountryNanp("BB"));
+        assertTrue(SmartDialPrefix.isCountryNanp("bm"));
+        assertTrue(SmartDialPrefix.isCountryNanp("vg"));
+        assertTrue(SmartDialPrefix.isCountryNanp("ky"));
+        assertTrue(SmartDialPrefix.isCountryNanp("dm"));
+        assertTrue(SmartDialPrefix.isCountryNanp("do"));
+        assertTrue(SmartDialPrefix.isCountryNanp("gd"));
+        assertTrue(SmartDialPrefix.isCountryNanp("gu"));
+        assertTrue(SmartDialPrefix.isCountryNanp("jm"));
+        assertTrue(SmartDialPrefix.isCountryNanp("pr"));
+        assertTrue(SmartDialPrefix.isCountryNanp("ms"));
+        assertTrue(SmartDialPrefix.isCountryNanp("mp"));
+        assertTrue(SmartDialPrefix.isCountryNanp("kn"));
+        assertTrue(SmartDialPrefix.isCountryNanp("lc"));
+        assertTrue(SmartDialPrefix.isCountryNanp("vc"));
+        assertTrue(SmartDialPrefix.isCountryNanp("tt"));
+        assertTrue(SmartDialPrefix.isCountryNanp("tc"));
+        assertTrue(SmartDialPrefix.isCountryNanp("vi"));
+    }
+
+    @Override
+    protected void setUp() {
+        mTestHelper = DialerDatabaseHelper.getNewInstanceForTest(getContext());
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+        mTestHelper.removeAllContacts(db);
+        super.tearDown();
+    }
+
+    private ArrayList<ContactNumber> getLooseMatchesFromDb(String query) {
+        final SmartDialNameMatcher nameMatcher = new SmartDialNameMatcher(query,
+                SmartDialPrefix.getMap());
+        return mTestHelper.getLooseMatches(query, nameMatcher);
+    }
+
+    public void testPutForFullName() {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber jasonsmith = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "", 0, "Jason Smith");
+        final ContactNumber jasonsmitt = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "", 1, "Jason Smitt");
+        final ContactNumber alphabet = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "12345678", 2, "abc def ghi jkl mno pqrs tuv wxyz");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        final ArrayList<ContactNumber> result1 = getLooseMatchesFromDb("5276676484");
+        assertFalse(result1.contains(jasonsmitt));
+
+        final ArrayList<ContactNumber> result2 = getLooseMatchesFromDb("5276676488");
+        assertFalse(result2.contains(jasonsmith));
+        assertTrue(result2.contains(jasonsmitt));
+
+        assertTrue(getLooseMatchesFromDb("22233344455566677778889999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("33344455566677778889999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("44455566677778889999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("55566677778889999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("66677778889999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("77778889999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("8889999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("9999").contains(alphabet));
+
+        // Makes sure the phone number is correctly added.
+        assertTrue(getLooseMatchesFromDb("12345678").contains(alphabet));
+    }
+
+    public void testPutForPartialName() {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber maryjane = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "", 0, "Mary Jane");
+        final ContactNumber sarahsmith = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "", 1, "Sarah Smith");
+        final ContactNumber jasonsmitt = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "", 2, "Jason Smitt");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        final ArrayList<ContactNumber> result1 = getLooseMatchesFromDb("6279");
+        assertTrue(result1.contains(maryjane));
+        assertFalse(result1.contains(jasonsmitt));
+
+        // 72 corresponds to sa = "Sarah Smith" but not "Jason Smitt" or "Mary Jane"
+        final ArrayList<ContactNumber> result2 = getLooseMatchesFromDb("72");
+        assertFalse(result2.contains(maryjane));
+        assertTrue(result2.contains(sarahsmith));
+        assertFalse(result2.contains(jasonsmitt));
+
+        // 76 corresponds to sm = "Sarah Smith" and "Jason Smitt" but not "Mary Jane"
+        final ArrayList<ContactNumber> result3 = getLooseMatchesFromDb("76");
+        assertFalse(result3.contains(maryjane));
+        assertTrue(result3.contains(sarahsmith));
+        assertTrue(result3.contains(jasonsmitt));
+    }
+
+    public void testPutForNameTokens() {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber jasonfwilliams = constructNewContactWithDummyIds(contactCursor,
+                nameCursor, "", 0, "Jason F. Williams");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        assertTrue(getLooseMatchesFromDb("527").contains(jasonfwilliams));
+        // 72 corresponds to sa = "Sarah Smith" but not "Jason Smitt" or "Mary Jane"
+        assertTrue(getLooseMatchesFromDb("945").contains(jasonfwilliams));
+        // 76 corresponds to sm = "Sarah Smith" and "Jason Smitt" but not "Mary Jane"
+        assertFalse(getLooseMatchesFromDb("66").contains(jasonfwilliams));
+    }
+
+    public void testPutForInitialMatches() {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber martinjuniorharry = constructNewContactWithDummyIds(contactCursor,
+                nameCursor, "", 0, "Martin Jr Harry");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        // 654 corresponds to mjh = "(M)artin (J)r (H)arry"
+        assertTrue(getLooseMatchesFromDb("654").contains(martinjuniorharry));
+        // The reverse (456) does not match (for now)
+        assertFalse(getLooseMatchesFromDb("456").contains(martinjuniorharry));
+        // 6542 corresponds to mjha = "(M)artin (J)r (Ha)rry"
+        assertTrue(getLooseMatchesFromDb("6542").contains(martinjuniorharry));
+        // 542 corresponds to jha = "Martin (J)r (Ha)rry"
+        assertTrue(getLooseMatchesFromDb("542").contains(martinjuniorharry));
+        // 642 corresponds to mha = "(M)artin Jr (Ha)rry"
+        assertTrue(getLooseMatchesFromDb("642").contains(martinjuniorharry));
+        // 6542779 (M)artin (J)r (Harry)
+        assertTrue(getLooseMatchesFromDb("6542779").contains(martinjuniorharry));
+        // 65742779 (M)artin (Jr) (Harry)
+        assertTrue(getLooseMatchesFromDb("65742779").contains(martinjuniorharry));
+        // 542779 Martin (J)r (Harry)
+        assertTrue(getLooseMatchesFromDb("542779").contains(martinjuniorharry));
+        // 547 doesn't match
+        assertFalse(getLooseMatchesFromDb("547").contains(martinjuniorharry));
+        // 655 doesn't match
+        assertFalse(getLooseMatchesFromDb("655").contains(martinjuniorharry));
+        // 653 doesn't match
+        assertFalse(getLooseMatchesFromDb("653").contains(martinjuniorharry));
+        // 6543 doesn't match
+        assertFalse(getLooseMatchesFromDb("6543").contains(martinjuniorharry));
+
+        // 7 actual rows, + 1 for the dummy number we added
+        assertEquals(8, mTestHelper.countPrefixTableRows(db));
+    }
+
+    public void testPutForInitialMatchesForLongTokenNames() {
+
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber alphabet = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "12345678", 0, "abc def ghi jkl mno pqrs tuv wxyz");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        // Makes sure only only the first two and last two token are considered for initials.
+        // The cut-off constant can be set in SmartDialPrefix.java
+        assertTrue(getLooseMatchesFromDb("2389999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("239999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("23888").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("2333").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("289999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("2888").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("29999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("3888").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("39999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("389999").contains(alphabet));
+        assertTrue(getLooseMatchesFromDb("89999").contains(alphabet));
+    }
+
+    public void testCheckLongToken() {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber alphabet = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "1", 0,  " aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn" +
+                " oooo pppp qqqq rrrr ssss tttt uuuu vvvv wwww xxxx yyyy zzzz");
+
+        final ContactNumber alphabet2 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "1", 1, "aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrr" +
+                "ssssttttuuuuvvvvwwwwxxxxyyyyzzzz");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        assertTrue(getLooseMatchesFromDb("2222").contains(alphabet));
+        assertEquals(40, mTestHelper.countPrefixTableRows(db));
+    }
+
+    public void testAccentedCharacters() {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber reene = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "0", 0, "Reenée");
+        final ContactNumber bronte = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "0", 1, "Brontë");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        assertTrue(getLooseMatchesFromDb("733633").contains(reene));
+        assertTrue(getLooseMatchesFromDb("276683").contains(bronte));
+    }
+
+    public void testNumbersInName() {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber contact = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "0", 0, "12345678");
+        final ContactNumber teacher = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "0", 1, "1st Grade Teacher");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        assertTrue(getLooseMatchesFromDb("12345678").contains(contact));
+        assertTrue(getLooseMatchesFromDb("17847233").contains(teacher));
+        assertTrue(getLooseMatchesFromDb("14832").contains(teacher));
+    }
+
+    public void testPutForNumbers() {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber contactno1 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "510-527-2357", 0,  "James");
+        final ContactNumber contactno2 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "77212862357", 1, "James");
+        final ContactNumber contactno3 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "+13684976334", 2, "James");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        assertTrue(getLooseMatchesFromDb("510").contains(contactno1));
+        assertFalse(getLooseMatchesFromDb("511").contains(contactno1));
+        assertTrue(getLooseMatchesFromDb("77212862357").contains(contactno2));
+        assertFalse(getLooseMatchesFromDb("77212862356").contains(contactno2));
+        assertTrue(getLooseMatchesFromDb("1368").contains(contactno3));
+        assertFalse(getLooseMatchesFromDb("1367").contains(contactno3));
+    }
+
+    public void testPutNumbersCountryCode() {
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber contactno1 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "+13684976334", 0, "James");
+        final ContactNumber contactno2 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "+65 9177-6930", 1, "Jason");
+        final ContactNumber contactno3 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "+85212345678", 2, "Mike");
+        final ContactNumber contactno4 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "+85112345678", 3, "Invalid");
+        final ContactNumber contactno5 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "+852", 4, "Invalid");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        assertTrue(getLooseMatchesFromDb("1368").contains(contactno1));
+        assertTrue(getLooseMatchesFromDb("368497").contains(contactno1));
+        assertFalse(getLooseMatchesFromDb("2368497").contains(contactno1));
+
+        assertTrue(getLooseMatchesFromDb("6591776930").contains(contactno2));
+        assertTrue(getLooseMatchesFromDb("91776930").contains(contactno2));
+        assertFalse(getLooseMatchesFromDb("591776930").contains(contactno2));
+
+        assertTrue(getLooseMatchesFromDb("85212345678").contains(contactno3));
+        assertTrue(getLooseMatchesFromDb("12345678").contains(contactno3));
+        assertFalse(getLooseMatchesFromDb("5212345678").contains(contactno3));
+
+        assertTrue(getLooseMatchesFromDb("85112345678").contains(contactno4));
+        assertFalse(getLooseMatchesFromDb("12345678").contains(contactno4));
+    }
+
+    // Tests special case handling for NANP numbers
+    public void testPutNumbersNANP() {
+        SmartDialPrefix.setUserInNanpRegion(true);
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+        final ContactNumber contactno1 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "16503337596", 0, "James");
+        final ContactNumber contactno2 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "5109921234", 1, "Michael");
+        final ContactNumber contactno3 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "(415)-123-4567", 2, "Jason");
+        final ContactNumber contactno4 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "1 510-284-9170", 3, "Mike");
+        final ContactNumber contactno5 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "1-415-123-123", 4, "Invalid");
+        final ContactNumber contactno6 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "415-123-123", 5, "Invalid2");
+        final ContactNumber contactno7 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "+1-510-284-9170", 6, "Mike");
+        final ContactNumber contactno8 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "+1-510-284-917", 7, "Invalid");
+        final ContactNumber contactno9 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "+857-510-284-9170", 8, "Inv");
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        assertTrue(getLooseMatchesFromDb("16503337596").contains(contactno1));
+        assertTrue(getLooseMatchesFromDb("6503337596").contains(contactno1));
+        assertTrue(getLooseMatchesFromDb("3337596").contains(contactno1));
+
+        assertTrue(getLooseMatchesFromDb("5109921234").contains(contactno2));
+        assertTrue(getLooseMatchesFromDb("9921234").contains(contactno2));
+
+        assertTrue(getLooseMatchesFromDb("4151234567").contains(contactno3));
+        assertTrue(getLooseMatchesFromDb("1234567").contains(contactno3));
+
+        assertTrue(getLooseMatchesFromDb("15102849170").contains(contactno4));
+        assertTrue(getLooseMatchesFromDb("5102849170").contains(contactno4));
+        assertTrue(getLooseMatchesFromDb("2849170").contains(contactno4));
+
+        assertTrue(getLooseMatchesFromDb("1415123123").contains(contactno5));
+        assertFalse(getLooseMatchesFromDb("415123123").contains(contactno5));
+        assertFalse(getLooseMatchesFromDb("123123").contains(contactno5));
+
+        assertTrue(getLooseMatchesFromDb("415123123").contains(contactno6));
+        assertFalse(getLooseMatchesFromDb("123123").contains(contactno6));
+
+        assertTrue(getLooseMatchesFromDb("15102849170").contains(contactno7));
+        assertTrue(getLooseMatchesFromDb("5102849170").contains(contactno7));
+        assertTrue(getLooseMatchesFromDb("2849170").contains(contactno7));
+        assertFalse(getLooseMatchesFromDb("849170").contains(contactno7));
+        assertFalse(getLooseMatchesFromDb("10849170").contains(contactno7));
+
+        assertTrue(getLooseMatchesFromDb("1510284917").contains(contactno8));
+        assertTrue(getLooseMatchesFromDb("510284917").contains(contactno8));
+        assertFalse(getLooseMatchesFromDb("2849170").contains(contactno8));
+
+        assertTrue(getLooseMatchesFromDb("8575102849170").contains(contactno9));
+        assertFalse(getLooseMatchesFromDb("5102849170").contains(contactno9));
+        assertFalse(getLooseMatchesFromDb("2849170").contains(contactno9));
+
+        // TODO(klp) Adds test for non-NANP region number matchings.
+    }
+
+    // Tests special case handling for non-NANP numbers
+    public void testPutNumbersNonNANP() {
+        SmartDialPrefix.setUserInNanpRegion(false);
+        final SQLiteDatabase db = mTestHelper.getWritableDatabase();
+
+        final MatrixCursor nameCursor =  constructNewNameCursor();
+        final MatrixCursor contactCursor = constructNewContactCursor();
+
+        final ContactNumber contactno0 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "(415)-123-4567", 0, "Jason");
+        final ContactNumber contactno1 = constructNewContactWithDummyIds(contactCursor, nameCursor,
+                "1 510-284-9170", 1, "Mike");
+
+
+        mTestHelper.insertUpdatedContactsAndNumberPrefix(db, contactCursor, Long.valueOf(0));
+        mTestHelper.insertNamePrefixes(db, nameCursor);
+
+        nameCursor.close();
+        contactCursor.close();
+
+        assertTrue(getLooseMatchesFromDb("4151234567").contains(contactno0));
+        assertFalse(getLooseMatchesFromDb("1234567").contains(contactno0));
+
+        assertTrue(getLooseMatchesFromDb("15102849170").contains(contactno1));
+        assertFalse(getLooseMatchesFromDb("5102849170").contains(contactno1));
+        assertFalse(getLooseMatchesFromDb("2849170").contains(contactno1));
+    }
+
+    public void testParseInfo() {
+        final String name = "Mcdonald Jamie-Cullum";
+        final ArrayList<String> info = SmartDialPrefix.parseToIndexTokens(name);
+        assertEquals(3, info.size());
+        assertEquals(8, info.get(0).length());
+        assertEquals(5, info.get(1).length());
+        assertEquals(6, info.get(2).length());
+
+        final String name2 = "aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk";
+        final ArrayList<String> info2 = SmartDialPrefix.parseToIndexTokens(name2);
+        assertEquals(11, info2.size());
+        assertEquals(3, info2.get(0).length());
+        assertEquals(3, info2.get(10).length());
+
+        final String name3 = "this  is- a,test    name";
+        final ArrayList<String> info3 = SmartDialPrefix.parseToIndexTokens(name3);
+        assertEquals(5, info3.size());
+        assertEquals(2, info3.get(1).length());
+        assertEquals(1, info3.get(2).length());
+        assertEquals(4, info3.get(3).length());
+        assertEquals(4, info3.get(4).length());
+
+        final String name4 = "M c-Donald James";
+        final ArrayList<String> info4 = SmartDialPrefix.parseToIndexTokens(name4);
+        assertEquals(4, info4.size());
+        assertEquals(1, info4.get(1).length());
+        assertEquals(6, info4.get(2).length());
+
+        final String name5 = "   Aa'Bb    c    dddd  e'e";
+        final ArrayList<String> info5 = SmartDialPrefix.parseToIndexTokens(name5);
+        assertEquals(6, info5.size());
+        assertEquals(2, info5.get(0).length());
+        assertEquals(1, info5.get(5).length());
+    }
+}
diff --git a/tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java b/tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java
new file mode 100644
index 0000000..876c13b
--- /dev/null
+++ b/tests/src/com/android/dialer/dialpad/DialpadFragmentInstrumentationTest.java
@@ -0,0 +1,121 @@
+package com.android.dialer.dialpad;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.view.View;
+
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.R;
+
+/**
+ * Tests that rely on instrumenting an actual instance of a {@link DialpadFragment}.
+ */
+public class DialpadFragmentInstrumentationTest extends
+        ActivityInstrumentationTestCase2<DialtactsActivity> {
+    private DialtactsActivity mActivity;
+
+    public DialpadFragmentInstrumentationTest() {
+        super(DialtactsActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mActivity = getActivity();
+    }
+
+    /**
+     * Simulates a long click event on the zero key with a prior onPressed callback.
+     *
+     */
+    public void testManualLongClickZero_DeletesPreviousCharacter() {
+        final DialpadFragment fragment = showDialpad();
+        pressAndReleaseKey(9, fragment);
+
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                final View zeroKey = findViewByDigit(0, fragment);
+                fragment.onPressed(zeroKey, true);
+                fragment.onLongClick(zeroKey);
+            }
+        });
+
+        assertEquals("9+", fragment.getDigitsWidget().getText().toString());
+    }
+
+    /**
+     * Simulates a long click event on the zero key without a prior onPressed
+     * callback.
+     */
+    public void testSystemLongClickZero_PreservesPreviousCharacter() {
+        final DialpadFragment fragment = showDialpad();
+        pressAndReleaseKey(9, fragment);
+
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                final View zeroKey = findViewByDigit(0, fragment);
+                fragment.onLongClick(zeroKey);
+            }
+        });
+
+        assertEquals("9+", fragment.getDigitsWidget().getText().toString());
+    }
+
+    private DialpadFragment showDialpad() {
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                mActivity.showDialpad();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+        return (DialpadFragment) mActivity.getFragmentManager().findFragmentByTag(
+                DialtactsActivity.TAG_DIALPAD_FRAGMENT);
+    }
+
+    private void pressAndReleaseKey(int digit, final DialpadFragment fragment) {
+        final View dialpadKey = findViewByDigit(digit, fragment);
+        final String digitsBefore = fragment.getDigitsWidget().getText().toString();
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                fragment.onPressed(dialpadKey, true);
+                fragment.onPressed(dialpadKey, false);
+            }
+        });
+        assertEquals(digitsBefore + String.valueOf(digit),
+                fragment.getDigitsWidget().getText().toString());
+    }
+
+    private View findViewByDigit(int digit, DialpadFragment fragment) {
+        return fragment.getView().findViewById(getViewIdByDigit(digit));
+    }
+
+    private int getViewIdByDigit(int digit) {
+        switch (digit) {
+            case 0:
+                return R.id.zero;
+            case 1:
+                return R.id.one;
+            case 2:
+                return R.id.two;
+            case 3:
+                return R.id.three;
+            case 4:
+                return R.id.four;
+            case 5:
+                return R.id.five;
+            case 6:
+                return R.id.six;
+            case 7:
+                return R.id.seven;
+            case 8:
+                return R.id.eight;
+            case 9:
+                return R.id.nine;
+            default:
+                return 0;
+        }
+    }
+}
diff --git a/tests/src/com/android/dialer/dialpad/DialpadFragmentTest.java b/tests/src/com/android/dialer/dialpad/DialpadFragmentTest.java
new file mode 100644
index 0000000..3015e87
--- /dev/null
+++ b/tests/src/com/android/dialer/dialpad/DialpadFragmentTest.java
@@ -0,0 +1,111 @@
+/*
+ * 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.dialer.dialpad;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import junit.framework.TestCase;
+
+/** Unit tests for {@link DialpadFragment}. */
+@SmallTest
+public class DialpadFragmentTest extends TestCase {
+
+    public void testCanAddDigit_Valid() {
+        // end, middle, selection to end, middle selection
+        assertTrue(DialpadFragment.canAddDigit("123", 3, 3, ';'));
+        assertTrue(DialpadFragment.canAddDigit("123", 1, 1, ','));
+        assertTrue(DialpadFragment.canAddDigit("123", 1, 3, ';'));
+        assertTrue(DialpadFragment.canAddDigit("123", 1, 2, ','));
+    }
+
+    public void testCanAddDigit_InvalidCharacter() {
+        // only handles wait/pause
+        try {
+            DialpadFragment.canAddDigit("123", 1, 1, '5');
+            fail("Calling canAddDigit with invalid character should throw an exception");
+        } catch (IllegalArgumentException e) {
+        }
+    }
+
+    public void testCanAddDigit_BadOrNoSelection() {
+        // no selection
+        assertFalse(DialpadFragment.canAddDigit("123", -1, -1, ';'));
+        assertFalse(DialpadFragment.canAddDigit("123", -1, 1, ','));
+
+        // start > end
+        assertFalse(DialpadFragment.canAddDigit("123", 2, 1, ','));
+    }
+
+    public void testCanAddDigit_OutOfBounds() {
+        // start or end is > digits.length()
+        assertFalse(DialpadFragment.canAddDigit("123", 1, 4, ';'));
+        assertFalse(DialpadFragment.canAddDigit("123", 4, 4, ','));
+    }
+
+    public void testCanAddDigit_AsFirstCharacter() {
+        assertFalse(DialpadFragment.canAddDigit("", 0, 0, ','));
+        assertFalse(DialpadFragment.canAddDigit("123", 0, 0, ';'));
+        assertFalse(DialpadFragment.canAddDigit("123", 0, 2, ','));
+        assertFalse(DialpadFragment.canAddDigit("123", 0, 3, ','));
+    }
+
+    public void testCanAddDigit_AdjacentCharacters_Before() {
+        // before
+        assertFalse(DialpadFragment.canAddDigit("55;55", 2, 2, ';')); // WAIT
+        assertFalse(DialpadFragment.canAddDigit("55;55", 1, 2, ';'));
+        assertTrue(DialpadFragment.canAddDigit("55,55", 2, 2, ',')); // PAUSE
+        assertTrue(DialpadFragment.canAddDigit("55,55", 1, 2, ','));
+        assertTrue(DialpadFragment.canAddDigit("55;55", 2, 2, ',')); // WAIT & PAUSE
+        assertTrue(DialpadFragment.canAddDigit("55,55", 1, 2, ';'));
+    }
+
+    public void testCanAddDigit_AdjacentCharacters_After() {
+        // after
+        assertFalse(DialpadFragment.canAddDigit("55;55", 3, 3, ';')); // WAIT
+        assertFalse(DialpadFragment.canAddDigit("55;55", 3, 4, ';'));
+        assertTrue(DialpadFragment.canAddDigit("55,55", 3, 3, ',')); // PAUSE
+        assertTrue(DialpadFragment.canAddDigit("55,55", 3, 4, ','));
+        assertTrue(DialpadFragment.canAddDigit("55;55", 3, 3, ',')); // WAIT & PAUSE
+        assertTrue(DialpadFragment.canAddDigit("55,55", 3, 4, ';'));
+    }
+
+    public void testGetFormattedDigits_NoPostDialString() {
+        assertEquals("(510) 333-7596",
+                DialpadFragment.getFormattedDigits("5103337596", null, "US"));
+        assertEquals("(510) 333-7596",
+                DialpadFragment.getFormattedDigits("5103337596", "+15103337596", "US"));
+    }
+
+    public void testGetFormattedDigits_WithPostDialString() {
+        assertEquals("(510) 333-7596,1234",
+                DialpadFragment.getFormattedDigits("5103337596,1234", null, "US"));
+        assertEquals("(510) 333-7596;;1234",
+                DialpadFragment.getFormattedDigits("5103337596;;1234", null, "US"));
+        assertEquals("(510) 333-7596;123,,4",
+                DialpadFragment.getFormattedDigits("(510)3337596;123,,4", "+15103337596", "US"));
+    }
+
+    public void testGetFormattedDigits_PostDialStringOnly() {
+        assertEquals(",1234567", DialpadFragment.getFormattedDigits(",1234567", null, "US"));
+        assertEquals(";4321", DialpadFragment.getFormattedDigits(";4321", null, "US"));
+    }
+
+    public void testGetFormattedDigits_Invalid() {
+        assertEquals(null, DialpadFragment.getFormattedDigits(null, null, "US"));
+        assertEquals("", DialpadFragment.getFormattedDigits("", "+15104233335", "US"));
+    }
+}
diff --git a/tests/src/com/android/dialer/dialpad/SmartDialNameMatcherTest.java b/tests/src/com/android/dialer/dialpad/SmartDialNameMatcherTest.java
new file mode 100644
index 0000000..c1365f5
--- /dev/null
+++ b/tests/src/com/android/dialer/dialpad/SmartDialNameMatcherTest.java
@@ -0,0 +1,275 @@
+/*
+ * 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.dialer.dialpad;
+
+import android.test.suitebuilder.annotation.SmallTest;
+import android.test.suitebuilder.annotation.Suppress;
+import android.util.Log;
+import android.test.AndroidTestCase;
+
+import com.android.dialer.dialpad.SmartDialNameMatcher;
+import com.android.dialer.dialpad.SmartDialPrefix;
+
+import java.text.Normalizer;
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+
+@SmallTest
+public class SmartDialNameMatcherTest extends TestCase {
+    private static final String TAG = "SmartDialNameMatcherTest";
+
+    public void testMatches() {
+        // Test to ensure that all alphabetic characters are covered
+        checkMatches("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
+                "22233344455566677778889999" + "22233344455566677778889999", true, 0, 26 * 2);
+        // Should fail because of a mistyped 2 instead of 9 in the second last character
+        checkMatches("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
+                "22233344455566677778889999" + "22233344455566677778889929", false, 0, 0);
+
+        // Basic name test
+        checkMatches("joe", "5", true, 0, 1);
+        checkMatches("joe", "56", true, 0, 2);
+        checkMatches("joe", "563", true, 0, 3);
+
+        // Matches only word boundary.
+        checkMatches("joe", "63", false, 0, 0);
+        checkMatches("joe oe", "63", true, 4, 6);
+
+        // Test for a match across word boundaries
+        checkMatches("joe oe", "56363", true, 0, 6);
+    }
+
+    public void testMatches_repeatedLetters() {
+        checkMatches("aaaaaaaaaa", "2222222222", true, 0, 10);
+        // Fails because of one extra 2
+        checkMatches("aaaaaaaaaa", "22222222222", false, 0, 0);
+        checkMatches("zzzzzzzzzz zzzzzzzzzz", "99999999999999999999", true, 0, 21);
+    }
+
+    public void testMatches_repeatedSpaces() {
+        checkMatches("William     J  Smith", "9455426576", true, 0, 17);
+        checkMatches("William     J  Smith", "576", true, 12, 17);
+        // Fails because we start at non-word boundary
+        checkMatches("William     J  Smith", "6576", false, 0, 0);
+    }
+
+
+    public void testMatches_Initial() {
+        // wjs matches (W)illiam (J)ohn (S)mith
+        checkMatches("William John Smith", "957", true, 0, 1, 8, 9, 13, 14);
+        // wjsmit matches (W)illiam (J)ohn (Smit)h
+        checkMatches("William John Smith", "957648", true, 0, 1, 8, 9, 13, 17);
+        // wjohn matches (W)illiam (John) Smith
+        checkMatches("William John Smith", "95646", true, 0, 1, 8, 12);
+        // jsmi matches William (J)ohn (Smi)th
+        checkMatches("William John Smith", "5764", true, 8, 9, 13, 16);
+        // make sure multiple spaces don't mess things up
+        checkMatches("William        John   Smith", "5764", true, 15, 16, 22, 25);
+    }
+
+    public void testMatches_InitialWithSeparator() {
+        // wjs matches (W)illiam (J)ohn (S)mith
+        checkMatches("William John-Smith", "957", true, 0, 1, 8, 9, 13, 14);
+        // wjsmit matches (W)illiam (J)ohn-(OShe)a
+        checkMatches("William John-O'Shea", "956743", true, 0, 1, 8, 9, 13, 18);
+        // wjohn matches (W)illiam-(John) Smith
+        checkMatches("William-John Smith", "95646", true, 0, 1, 8, 12);
+        // jsmi matches William (J)ohn-(Smi)th
+        checkMatches("William John-Smith", "5764", true, 8, 9, 13, 16);
+        // wsmi matches (W)illiam John (Smi)th
+        checkMatches("William John-Smith", "9764", true, 0, 1, 13, 16);
+        // make sure multiple spaces don't mess things up
+        checkMatches("William        John---Smith", "5764", true, 15, 16, 22, 25);
+        // match tokens that are located directly after a non-space separator (studio)
+        checkMatches("Berkeley Hair-Studio", "788346", true, 14, 20);
+        // match tokens with same initials
+        checkMatches("H.Harold", "427653", true, 2, 8);
+        // various matching combinations of tokens with similar initials
+        checkMatches("Yo-Yoghurt Land", "964487", true, 3, 9);
+        checkMatches("Yo-Yoghurt Land", "96448785263", true, 3, 15);
+        checkMatches("Yo-Yoghurt Land", "95263", true, 3, 4, 11, 15);
+        checkMatches("Yo-Yoghurt Land", "995263", true, 0, 1, 3, 4, 11, 15);
+
+        checkMatches("ab zz ef", "23", true, 0, 1, 6, 7);
+    }
+
+    public void testMatches_repeatedSeparators() {
+        // Simple match for single token
+        checkMatches("John,,,,,Doe", "5646", true, 0, 4);
+        // Match across tokens
+        checkMatches("John,,,,,Doe", "56463", true, 0, 10);
+        // Match token after chain of separators
+        checkMatches("John,,,,,Doe", "363", true, 9, 12);
+    }
+
+    public void testMatches_LatinMix() {
+        // Latin + Chinese characters
+        checkMatches("Lee王力Wang宏", "59264", true, 0, 1, 5, 9);
+        // Latin + Japanese characters
+        checkMatches("千Abcd佳智Efgh佳IJKL", "222333444555", true, 1, 16);
+        // Latin + Arabic characters
+        checkMatches("Peterعبد الرحمنJames", "752637", true, 0, 1, 15, 20);
+    }
+
+    public void testMatches_umlaut() {
+        checkMatches("ÄÖÜäöü", "268268", true, 0, 6);
+    }
+
+    public void testMatches_NumberInName() {
+        // Number used as display name
+        checkMatches("+1-123-456-6789", "1234566789", true, 3, 15);
+        // Mix of numbers and letters
+        checkMatches("3rd Grade Teacher", "373", true, 0, 3);
+        checkMatches("1800 Win A Prize", "1800", true, 0, 4);
+        checkMatches("1800 Win A Prize", "1800946277493", true, 0, 16);
+        checkMatches("1800 Win A Prize", "977493", true, 5, 6, 11, 16);
+    }
+
+
+    // TODO: Great if it was treated as "s" or "ss. Figure out if possible without prefix trie?
+    @Suppress
+    public void testMatches_germanSharpS() {
+        checkMatches("ß", "s", true, 0, 1);
+        checkMatches("ß", "ss", true, 0, 1);
+    }
+
+    // TODO: Add this and make it work
+    @Suppress
+    public void testMatches_greek() {
+        // http://en.wikipedia.org/wiki/Greek_alphabet
+        fail("Greek letters aren't supported yet.");
+    }
+
+    // TODO: Add this and make it work
+    @Suppress
+    public void testMatches_cyrillic() {
+        // http://en.wikipedia.org/wiki/Cyrillic_script
+        fail("Cyrillic letters aren't supported yet.");
+    }
+
+
+    public void testMatches_NumberBasic() {
+        // Simple basic examples that start the match from the start of the number
+        checkMatchesNumber("5103337596", "510", true, 0, 3);
+        checkMatchesNumber("5103337596", "511", false, 0, 0);
+        checkMatchesNumber("5103337596", "5103337596", true, 0, 10);
+        checkMatchesNumber("123-456-789", "123456789", true, 0, 11);
+        checkMatchesNumber("123-456-789", "123456788", false, 0, 0);
+        checkMatchesNumber("09999999999", "099", true, 0, 3);
+    }
+
+    public void testMatches_NumberWithCountryCode() {
+        // These matches should ignore the country prefix
+        // USA (+1)
+        checkMatchesNumber("+15103337596", "5103337596", true, 2, 12);
+        checkMatchesNumber("+15103337596", "15103337596", true, 0, 12);
+
+        // Singapore (+65)
+        checkMatchesNumber("+6591776930", "6591", true, 0, 5);
+        checkMatchesNumber("+6591776930", "9177", true, 3, 7);
+        checkMatchesNumber("+6591776930", "5917", false, 3, 7);
+
+        // Hungary (+36)
+        checkMatchesNumber("+3612345678", "361234", true, 0, 7);
+        checkMatchesNumber("+3612345678", "1234", true, 3, 7);
+
+        // Hongkong (+852)
+        checkMatchesNumber("+852 2222 2222", "85222222222", true, 0, 14);
+        checkMatchesNumber("+852 2222 3333", "2222", true, 5, 9);
+
+        // Invalid (+854)
+        checkMatchesNumber("+854 1111 2222", "8541111", true, 0, 9);
+        checkMatchesNumber("+854 1111 2222", "1111", false, 0, 0);
+    }
+
+    public void testMatches_NumberNANP() {
+        SmartDialPrefix.setUserInNanpRegion(true);
+        // An 11 digit number prefixed with 1 should be matched by the 10 digit number, as well as
+        // the 7 digit number (without area code)
+        checkMatchesNumber("1-510-333-7596", "5103337596", true, true, 2, 14);
+        checkMatchesNumber("1-510-333-7596", "3337596", true, true, 6, 14);
+
+        // An 11 digit number prefixed with +1 should be matched by the 10 digit number, as well as
+        // the 7 digit number (without area code)
+        checkMatchesNumber("+1-510-333-7596", "5103337596", true, true, 3, 15);
+        checkMatchesNumber("+1-510-333-7596", "3337596", true, true, 7, 15);
+        checkMatchesNumber("+1-510-333-7596", "103337596", false, true, 0, 0);
+        checkMatchesNumber("+1-510-333-7596", "337596", false, true, 0, 0);
+        checkMatchesNumber("+1510 3337596", "5103337596", true, true, 2, 13);
+        checkMatchesNumber("+1510 3337596", "3337596", true, true, 6, 13);
+        checkMatchesNumber("+1510 3337596", "103337596", false, true, 0, 0);
+        checkMatchesNumber("+1510 3337596", "37596", false, true, 0, 0);
+
+        // Invalid NANP numbers should not be matched
+        checkMatchesNumber("1-510-333-759", "510333759", false, true, 0, 0);
+        checkMatchesNumber("510-333-759", "333759", false, true, 0, 0);
+
+        // match should fail if NANP flag is switched off
+        checkMatchesNumber("1-510-333-7596", "3337596", false, false, 0, 0);
+
+        // A 10 digit number without a 1 prefix should be matched by the 7 digit number
+        checkMatchesNumber("(650) 292 2323", "2922323", true, true, 6, 14);
+        checkMatchesNumber("(650) 292 2323", "6502922323", true, true, 0, 14);
+        // match should fail if NANP flag is switched off
+        checkMatchesNumber("(650) 292 2323", "2922323", false, false, 0, 0);
+        // But this should still match (since it is the full number)
+        checkMatchesNumber("(650) 292 2323", "6502922323", true, false, 0, 14);
+    }
+
+
+    private void checkMatchesNumber(String number, String query, boolean expectedMatches,
+            int matchStart, int matchEnd) {
+        checkMatchesNumber(number, query, expectedMatches, false, matchStart, matchEnd);
+    }
+
+    private void checkMatchesNumber(String number, String query, boolean expectedMatches,
+            boolean matchNanp, int matchStart, int matchEnd) {
+        final SmartDialNameMatcher matcher = new SmartDialNameMatcher(query);
+        final SmartDialMatchPosition pos = matcher.matchesNumber(number, query, matchNanp);
+        assertEquals(expectedMatches, pos != null);
+        if (expectedMatches) {
+            assertEquals("start", matchStart, pos.start);
+            assertEquals("end", matchEnd, pos.end);
+        }
+    }
+
+    private void checkMatches(String displayName, String query, boolean expectedMatches,
+            int... expectedMatchPositions) {
+        final SmartDialNameMatcher matcher = new SmartDialNameMatcher(query);
+        final ArrayList<SmartDialMatchPosition> matchPositions =
+                new ArrayList<SmartDialMatchPosition>();
+        final boolean matches = matcher.matchesCombination(
+                displayName, query, matchPositions);
+        Log.d(TAG, "query=" + query + "  text=" + displayName
+                + "  nfd=" + Normalizer.normalize(displayName, Normalizer.Form.NFD)
+                + "  nfc=" + Normalizer.normalize(displayName, Normalizer.Form.NFC)
+                + "  nfkd=" + Normalizer.normalize(displayName, Normalizer.Form.NFKD)
+                + "  nfkc=" + Normalizer.normalize(displayName, Normalizer.Form.NFKC)
+                + "  matches=" + matches);
+        assertEquals("matches", expectedMatches, matches);
+        final int length = expectedMatchPositions.length;
+        assertEquals(length % 2, 0);
+        if (matches) {
+            for (int i = 0; i < length/2; i++) {
+                assertEquals("start", expectedMatchPositions[i * 2], matchPositions.get(i).start);
+                assertEquals("end", expectedMatchPositions[i * 2 + 1], matchPositions.get(i).end);
+            }
+        }
+    }
+
+}
diff --git a/tests/src/com/android/dialer/dialpad/UnicodeDialerKeyListenerTest.java b/tests/src/com/android/dialer/dialpad/UnicodeDialerKeyListenerTest.java
new file mode 100644
index 0000000..21ccec3
--- /dev/null
+++ b/tests/src/com/android/dialer/dialpad/UnicodeDialerKeyListenerTest.java
@@ -0,0 +1,74 @@
+/*
+ * 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.dialer.dialpad;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.dialer.dialpad.UnicodeDialerKeyListener;
+
+import junit.framework.TestCase;
+/**
+ * Test case for {@link UnicodeDialerKeyListener}.
+ *
+ * adb shell am instrument -w -e class com.android.contacts.dialpad.UnicodeDialerKeyListenerTest \
+       com.android.contacts.tests/android.test.InstrumentationTestRunner
+ */
+@SmallTest
+public class UnicodeDialerKeyListenerTest extends TestCase {
+    private static UnicodeDialerKeyListener mUnicodeDialerKeyListener;
+
+    // Pasted numeric digits should remain unchanged
+    public void testNumericDigits() {
+        // The last 3 arguments don't matter because {@link NumberKeyListener} doesn't care
+        // about dest, dstart, dend in
+        // public CharSequence filter (CharSequence source, int start, int end,
+        //         Spanned dest, int dstart, int dend)
+        // anyway. This applies to all tests.
+        assertEquals(null, mUnicodeDialerKeyListener.filter("111222333", 0, 9, null, 0, 0));
+    }
+
+    // Pasted Arabic digits should be converted to ascii digits
+    public void testArabicDigits() {
+        assertEquals("0123456789", mUnicodeDialerKeyListener.filter("٠١٢٣٤٥٦٧٨٩", 0, 10,
+                null, 0, 0));
+    }
+
+    // Pasted Farsi(Persian) digits should be converted to ascii digits
+    // Note the difference in digits 4, 5 and 6 when compared to arabic. The rest of the digits
+    // look the same compared to the Arabic digits but they actually have different unicode codes.
+    public void testFarsiDigits() {
+        assertEquals("0123456789", mUnicodeDialerKeyListener.filter("۰۱۲۳۴۵۶۷۸۹", 0, 10,
+                null, 0, 0));
+    }
+
+    // This is a rare use case but we should make sure it works all the same.
+    public void testCombinationDigits() {
+        assertEquals("15102849177", mUnicodeDialerKeyListener.filter("۱510٢٨٤۹۱۷۷", 0, 11,
+                null, 0, 0));
+    }
+
+    // Test that a normal digit string with dashes is returned unfiltered
+    public void testDashes() {
+        assertEquals(null, mUnicodeDialerKeyListener.filter("1510-284-9177", 0, 13,
+                null, 0, 0));
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        mUnicodeDialerKeyListener = UnicodeDialerKeyListener.INSTANCE;
+    }
+}
diff --git a/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java b/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
new file mode 100644
index 0000000..ccd95ab
--- /dev/null
+++ b/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2015 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.dialer.filterednumber;
+
+import android.preference.PreferenceManager;
+import android.test.AndroidTestCase;
+
+import com.android.contacts.common.test.mocks.ContactsMockContext;
+import com.android.contacts.common.test.mocks.MockContentProvider.Query;
+import com.android.dialer.database.FilteredNumberContract;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
+import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
+
+public class FilteredNumbersUtilTest extends AndroidTestCase {
+
+    private static final String COUNTRY_ISO = "US";
+
+    // Wed Nov 11 2015 15:00:00
+    private static final long EARLIER_TIME = 1447282800000l;
+
+    // Wed Nov 11 2015 15:01:40
+    private static final long LATER_TIME = 1447282900000l;
+
+    private static final String[] FILTERED_NUMBER_PROJECTION = new String[] {
+            FilteredNumberColumns.CREATION_TIME };
+
+    private static final String NORMALIZED_NUMBER = "+16503903411";
+
+    private static final long NULL_CREATION_TIME = -1;
+
+    private ContactsMockContext mContext;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mContext = new ContactsMockContext(getContext(), FilteredNumberContract.AUTHORITY);
+
+        // Reset whether an emergency number was dialed
+        PreferenceManager.getDefaultSharedPreferences(mContext)
+                .edit()
+                .putLong(FilteredNumbersUtil.LAST_EMERGENCY_CALL_MS_PREF_KEY, 0)
+                .apply();
+    }
+
+    public void testShouldBlockVoicemail_NotBlocked() {
+        setupShouldBlockVoicemailQuery(NULL_CREATION_TIME);
+        assertFalse(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
+                COUNTRY_ISO, EARLIER_TIME));
+    }
+
+    public void testShouldBlockVoicemail_BlockedBeforeVoicemail() {
+        setupShouldBlockVoicemailQuery(EARLIER_TIME);
+        assertTrue(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
+                COUNTRY_ISO, LATER_TIME));
+    }
+
+    public void testShouldBlockVoicemail_BlockedAfterVoicemail() {
+        setupShouldBlockVoicemailQuery(LATER_TIME);
+        assertFalse(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
+                COUNTRY_ISO, EARLIER_TIME));
+    }
+
+    public void testShouldBlockVoicemail_BlockedSameTimeAsVoicemail() {
+        setupShouldBlockVoicemailQuery(EARLIER_TIME);
+        assertTrue(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
+                COUNTRY_ISO, EARLIER_TIME));
+    }
+
+    public void testShouldBlockVoicemail_BlockedInSameMinuteAsVoicemail() {
+        setupShouldBlockVoicemailQuery(EARLIER_TIME);
+        assertTrue(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
+                COUNTRY_ISO, EARLIER_TIME + 30000));
+    }
+
+    public void testShouldBlockVoicemail_AfterEmergencyCall() {
+        // Just called emergency services
+        PreferenceManager.getDefaultSharedPreferences(mContext)
+                .edit()
+                .putLong(FilteredNumbersUtil.LAST_EMERGENCY_CALL_MS_PREF_KEY,
+                        System.currentTimeMillis())
+                .apply();
+        assertFalse(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
+                COUNTRY_ISO, 0));
+    }
+
+    private void setupShouldBlockVoicemailQuery(long creationTimeMs) {
+        Query query = mContext.getContactsProvider().expectQuery(FilteredNumber.CONTENT_URI)
+                .withProjection(FILTERED_NUMBER_PROJECTION)
+                .withAnySelection()
+                .withAnySortOrder();
+        if (creationTimeMs == NULL_CREATION_TIME) {
+            query.returnEmptyCursor();
+            return;
+        }
+        query.returnRow(creationTimeMs);
+    }
+}
diff --git a/tests/src/com/android/dialer/interactions/PhoneNumberInteractionTest.java b/tests/src/com/android/dialer/interactions/PhoneNumberInteractionTest.java
new file mode 100644
index 0000000..54a07cc
--- /dev/null
+++ b/tests/src/com/android/dialer/interactions/PhoneNumberInteractionTest.java
@@ -0,0 +1,262 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.interactions;
+
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.content.DialogInterface.OnDismissListener;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.RawContacts;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.test.mocks.ContactsMockContext;
+import com.android.contacts.common.test.mocks.MockContentProvider;
+import com.android.contacts.common.test.mocks.MockContentProvider.Query;
+import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.interactions.PhoneNumberInteraction.PhoneItem;
+import com.android.dialer.util.TestConstants;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Tests for {@link com.android.contacts.common.interactions.PhoneNumberInteraction}.
+ *
+ *   adb shell am instrument \
+ *     -w com.android.dialer.tests/android.test.InstrumentationTestRunner
+ */
+@SmallTest
+public class PhoneNumberInteractionTest extends InstrumentationTestCase {
+    private final static class TestPhoneNumberInteraction extends PhoneNumberInteraction {
+        private ArrayList<PhoneItem> mPhoneList;
+
+        public TestPhoneNumberInteraction(Context context, int interactionType,
+                OnDismissListener dismissListener) {
+            super(context, interactionType, dismissListener);
+        }
+
+        @Override
+        void showDisambiguationDialog(ArrayList<PhoneItem> phoneList) {
+            this.mPhoneList = phoneList;
+        }
+
+        public void waitForLoader() {
+            final CursorLoader loader = getLoader();
+            try {
+                final Method waitMethod = CursorLoader.class.getMethod("waitForLoader");
+                waitMethod.invoke(loader, null);
+            } catch(Exception e) {
+                // ignore
+            }
+        }
+    }
+
+    private ContactsMockContext mContext;
+    private MockContentProvider mContactsProvider;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = new ContactsMockContext(getInstrumentation().getTargetContext());
+        mContactsProvider = mContext.getContactsProvider();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mContactsProvider.verify();
+        super.tearDown();
+    }
+
+    public void testSendSmsWhenOnlyOneNumberAvailable() {
+        Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
+        expectQuery(contactUri)
+                .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
+                        Phone.CONTENT_ITEM_TYPE, 13);
+
+        TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
+                mContext, ContactDisplayUtils.INTERACTION_SMS, null);
+
+        interaction.startInteraction(contactUri);
+        interaction.waitForLoader();
+
+        Intent intent = mContext.getIntentForStartActivity();
+        assertNotNull(intent);
+
+        assertEquals(Intent.ACTION_SENDTO, intent.getAction());
+        assertEquals("sms:123", intent.getDataString());
+    }
+
+    public void testSendSmsWhenDataIdIsProvided() {
+        Uri dataUri = ContentUris.withAppendedId(Data.CONTENT_URI, 1);
+        expectQuery(dataUri, true /* isDataUri */ )
+                .returnRow(1, "987", 0, null, null, Phone.TYPE_HOME, null,
+                        Phone.CONTENT_ITEM_TYPE, 1);
+
+        TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
+                mContext, ContactDisplayUtils.INTERACTION_SMS, null);
+
+        interaction.startInteraction(dataUri);
+        interaction.waitForLoader();
+
+        Intent intent = mContext.getIntentForStartActivity();
+        assertNotNull(intent);
+
+        assertEquals(Intent.ACTION_SENDTO, intent.getAction());
+        assertEquals("sms:987", intent.getDataString());
+    }
+
+    public void testSendSmsWhenThereIsPrimaryNumber() {
+        Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
+        expectQuery(contactUri)
+                .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
+                        Phone.CONTENT_ITEM_TYPE, 13)
+                .returnRow(2, "456", 1, null, null, Phone.TYPE_HOME, null,
+                        Phone.CONTENT_ITEM_TYPE, 13);
+
+        TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
+                mContext, ContactDisplayUtils.INTERACTION_SMS, null);
+
+        interaction.startInteraction(contactUri);
+        interaction.waitForLoader();
+
+        Intent intent = mContext.getIntentForStartActivity();
+        assertNotNull(intent);
+
+        assertEquals(Intent.ACTION_SENDTO, intent.getAction());
+        assertEquals("sms:456", intent.getDataString());
+    }
+
+    public void testShouldCollapseWith() {
+        PhoneNumberInteraction.PhoneItem phoneItem1 = new PhoneNumberInteraction.PhoneItem();
+        PhoneNumberInteraction.PhoneItem phoneItem2 = new PhoneNumberInteraction.PhoneItem();
+
+        phoneItem1.phoneNumber = "123";
+        phoneItem2.phoneNumber = "123";
+
+        assertTrue(phoneItem1.shouldCollapseWith(phoneItem2, mContext));
+
+        phoneItem1.phoneNumber = "123";
+        phoneItem2.phoneNumber = "456";
+
+        assertFalse(phoneItem1.shouldCollapseWith(phoneItem2, mContext));
+
+        phoneItem1.phoneNumber = "123#,123";
+        phoneItem2.phoneNumber = "123#,456";
+
+        assertFalse(phoneItem1.shouldCollapseWith(phoneItem2, mContext));
+    }
+
+    public void testCallNumberWhenThereAreDuplicates() {
+        Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
+        expectQuery(contactUri)
+                .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
+                        Phone.CONTENT_ITEM_TYPE, 13)
+                .returnRow(2, "123", 0, null, null, Phone.TYPE_WORK, null,
+                        Phone.CONTENT_ITEM_TYPE, 13);
+
+        TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
+                mContext, ContactDisplayUtils.INTERACTION_CALL, null);
+
+        interaction.startInteraction(contactUri);
+        interaction.waitForLoader();
+
+        Intent intent = mContext.getIntentForStartActivity();
+        assertNotNull(intent);
+
+        assertEquals(TestConstants.CALL_INTENT_ACTION, intent.getAction());
+        assertEquals("tel:123", intent.getDataString());
+    }
+
+    public void testCallWithSip() {
+        Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
+        expectQuery(contactUri)
+                .returnRow(1, "example@example.com", 0, null, null, Phone.TYPE_HOME, null,
+                        SipAddress.CONTENT_ITEM_TYPE, 13);
+        TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
+                mContext, ContactDisplayUtils.INTERACTION_CALL, null);
+
+        interaction.startInteraction(contactUri);
+        interaction.waitForLoader();
+
+        Intent intent = mContext.getIntentForStartActivity();
+        assertNotNull(intent);
+
+        assertEquals(TestConstants.CALL_INTENT_ACTION, intent.getAction());
+        assertEquals("sip:example%40example.com", intent.getDataString());
+    }
+
+    public void testShowDisambigDialogForCalling() {
+        Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
+        expectQuery(contactUri)
+                .returnRow(1, "123", 0, "account", null, Phone.TYPE_HOME, "label",
+                        Phone.CONTENT_ITEM_TYPE, 13)
+                .returnRow(2, "456", 0, null, null, Phone.TYPE_WORK, null,
+                        Phone.CONTENT_ITEM_TYPE, 13);
+
+        TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
+                mContext, ContactDisplayUtils.INTERACTION_CALL, null);
+
+        interaction.startInteraction(contactUri);
+        interaction.waitForLoader();
+
+        List<PhoneItem> items = interaction.mPhoneList;
+        assertNotNull(items);
+        assertEquals(2, items.size());
+
+        PhoneItem item = items.get(0);
+        assertEquals(1, item.id);
+        assertEquals("123", item.phoneNumber);
+        assertEquals("account", item.accountType);
+        assertEquals(Phone.TYPE_HOME, item.type);
+        assertEquals("label", item.label);
+    }
+
+    private Query expectQuery(Uri contactUri) {
+        return expectQuery(contactUri, false);
+    }
+
+    private Query expectQuery(Uri uri, boolean isDataUri) {
+        final Uri dataUri;
+        if (isDataUri) {
+            dataUri = uri;
+        } else {
+            dataUri = Uri.withAppendedPath(uri, Contacts.Data.CONTENT_DIRECTORY);
+        }
+        return mContactsProvider
+                .expectQuery(dataUri)
+                .withProjection(
+                        Phone._ID,
+                        Phone.NUMBER,
+                        Phone.IS_SUPER_PRIMARY,
+                        RawContacts.ACCOUNT_TYPE,
+                        RawContacts.DATA_SET,
+                        Phone.TYPE,
+                        Phone.LABEL,
+                        Phone.MIMETYPE,
+                        Phone.CONTACT_ID)
+                .withSelection("mimetype IN ('vnd.android.cursor.item/phone_v2',"
+                        + " 'vnd.android.cursor.item/sip_address') AND data1 NOT NULL");
+    }
+}
diff --git a/tests/src/com/android/dialer/list/PhoneFavoritesTileAdapterTest.java b/tests/src/com/android/dialer/list/PhoneFavoritesTileAdapterTest.java
new file mode 100644
index 0000000..8819384
--- /dev/null
+++ b/tests/src/com/android/dialer/list/PhoneFavoritesTileAdapterTest.java
@@ -0,0 +1,301 @@
+package com.android.dialer.list;
+
+import com.google.common.collect.Lists;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.provider.ContactsContract.PinnedPositions;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.contacts.common.ContactTileLoaderFactory;
+import com.android.contacts.common.list.ContactEntry;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.dialer.list.PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener;
+
+import junit.framework.Assert;
+
+import java.util.ArrayList;
+
+@SmallTest
+public class PhoneFavoritesTileAdapterTest extends AndroidTestCase {
+
+    private static final OnDataSetChangedForAnimationListener NOOP_ANIMATION_LISTENER =
+            new OnDataSetChangedForAnimationListener() {
+                @Override
+                public void onDataSetChangedForAnimation(long... idsInPlace) {}
+
+                @Override
+                public void cacheOffsetsForDatasetChange() {}
+            };
+
+    private PhoneFavoritesTileAdapter mAdapter;
+
+    @Override
+    public void setUp() {
+        this.mAdapter = new PhoneFavoritesTileAdapter(getContext(), null, NOOP_ANIMATION_LISTENER);
+    }
+
+    /**
+     * For all arrangeContactsByPinnedPosition tests, the id for a particular ContactEntry
+     * represents the index at which it should be located after calling
+     * arrangeContactsByPinnedPosition
+     */
+
+    public void testArrangeContactsByPinnedPosition_NoPinned() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
+                getTestContactEntry(1), getTestContactEntry(2));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_NoPinned_RemoveDemoted() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
+                getTestContactEntry(-1, PinnedPositions.DEMOTED), getTestContactEntry(1));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 2);
+    }
+
+    public void testArrangeContactsByPinnedPosition_OnePinned_Beginning() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1),
+                getTestContactEntry(0, 1), getTestContactEntry(2));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_OnePinned_Middle() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
+                getTestContactEntry(1, 2), getTestContactEntry(2));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_OnePinned_End() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
+                getTestContactEntry(2, 3), getTestContactEntry(1));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_OnePinned_Outside() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0),
+                getTestContactEntry(2, 5), getTestContactEntry(1));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_OnePinned_RemoveDemoted() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
+                getTestContactEntry(-1, PinnedPositions.DEMOTED), getTestContactEntry(0));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 2);
+    }
+
+    public void testArrangeContactsByPinnedPosition_TwoPinned_Split() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0, 1),
+                getTestContactEntry(1), getTestContactEntry(2, 3));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_TwoPinned_Adjacent() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
+                getTestContactEntry(0), getTestContactEntry(2, 3));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_TwoPinned_Conflict_UnpinnedBefore() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
+                getTestContactEntry(0), getTestContactEntry(2, 2));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_TwoPinned_Conflict_UnpinnedAfter() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0, 1),
+                getTestContactEntry(2), getTestContactEntry(1, 1));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_TwoPinned_Conflict_RemoveDemoted() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
+                getTestContactEntry(-1, PinnedPositions.DEMOTED), getTestContactEntry(0, 2));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 2);
+    }
+
+    public void testArrangeContactsByPinnedPosition_AllPinned() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
+                getTestContactEntry(0, 1), getTestContactEntry(2, 3));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_AllPinned_TwoConflicts_ConflictsFirst() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(1, 2),
+                getTestContactEntry(0, 2), getTestContactEntry(2, 3));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_AllPinned_TwoConflicts_ConflictsLast() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(0, 2),
+                getTestContactEntry(1, 3), getTestContactEntry(2, 3));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_AllPinned_AllConflicts() {
+        ArrayList<ContactEntry> toArrange = Lists.newArrayList(getTestContactEntry(2, 3),
+                getTestContactEntry(1, 3), getTestContactEntry(0, 3));
+        mAdapter.arrangeContactsByPinnedPosition(toArrange);
+
+        assertContactEntryListPositionsMatchId(toArrange, 3);
+    }
+
+    public void testArrangeContactsByPinnedPosition_All_Pinned_AllConflicts_SortNameAlternative() {
+        Context context  = getContext();
+        context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE).edit()
+                .putInt(ContactsPreferences.SORT_ORDER_KEY,
+                        ContactsPreferences.SORT_ORDER_ALTERNATIVE)
+                .commit();
+        ArrayList<ContactEntry> actual = Lists.newArrayList(
+                getTestContactEntry(1, 3, "2", "1"),
+                getTestContactEntry(2, 3, "0", "2"),
+                getTestContactEntry(0, 3, "1", "0")
+        );
+        mAdapter.arrangeContactsByPinnedPosition(actual);
+
+        assertContactEntryListPositionsMatchId(actual, 3);
+    }
+
+    /**
+     * TODO: Add tests
+     *
+     * This method assumes that contacts have already been reordered by
+     * arrangeContactsByPinnedPosition, so we can test it with a less expansive set of test data.
+     *
+     * Test cases:
+     * Pin a single contact at the start, middle and end of a completely unpinned list
+     * Pin a single contact at the start, middle and end of a list with various numbers of
+     * pinned contacts
+     * Pin a single contact at the start, middle and end of a list where all contacts are pinned
+     * such that contacts are forced to the left as necessary.
+     */
+    public void testGetReflowedPinnedPositions() {
+
+    }
+
+    public void testSetContactCursor_DisplayNameOrder_Primary() {
+        setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+        Cursor testCursor = getCursorForTest(1, 0);
+        mAdapter.setContactCursor(testCursor);
+        Assert.assertEquals(1, mAdapter.mContactEntries.size());
+        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
+                mAdapter.mContactEntries.get(0).nameDisplayOrder);
+    }
+
+    public void testSetContactCursor_DisplayNameOrder_Alternative() {
+        setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
+        Cursor testCursor = getCursorForTest(1, 0);
+        mAdapter.setContactCursor(testCursor);
+        Assert.assertEquals(1, mAdapter.mContactEntries.size());
+        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE,
+                mAdapter.mContactEntries.get(0).nameDisplayOrder);
+    }
+
+    public void testSetContactCursor_DisplayNameOrder_Changed() {
+        setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_PRIMARY);
+        Cursor testCursor = getCursorForTest(1, 0);
+        mAdapter.setContactCursor(testCursor);
+        Assert.assertEquals(1, mAdapter.mContactEntries.size());
+        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY,
+                mAdapter.mContactEntries.get(0).nameDisplayOrder);
+
+        setNameDisplayOrder(getContext(), ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
+        mAdapter.refreshContactsPreferences();
+        mAdapter.setContactCursor(testCursor);
+        Assert.assertEquals(1, mAdapter.mContactEntries.size());
+        Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE,
+                mAdapter.mContactEntries.get(0).nameDisplayOrder);
+    }
+
+    private void setNameDisplayOrder(Context context, int displayOrder) {
+        context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE).edit().putInt(
+                ContactsPreferences.DISPLAY_ORDER_KEY, displayOrder).commit();
+    }
+
+    /**
+     * Returns a cursor containing starred and frequent contacts for test purposes.
+     *
+     * @param numStarred Number of starred contacts in the cursor. Cannot be a negative number.
+     * @param numFrequents Number of frequent contacts in the cursor. Cannot be a negative number.
+     * @return Cursor containing the required number of rows, each representing one ContactEntry
+     */
+    private Cursor getCursorForTest(int numStarred, int numFrequents) {
+        assertTrue(numStarred >= 0);
+        assertTrue(numFrequents >= 0);
+        final MatrixCursor c = new MatrixCursor(ContactTileLoaderFactory.COLUMNS_PHONE_ONLY);
+        int countId = 0;
+
+        // Add starred contact entries. These entries have the starred field set to 1 (true).
+        // The only field that really matters for testing is the contact id.
+        for (int i = 0; i < numStarred; i++) {
+            c.addRow(new Object[] {countId, null, 1, null, null, 0, 0, null, 0,
+                    PinnedPositions.UNPINNED, countId, null});
+            countId++;
+        }
+
+        // Add frequent contact entries. These entries have the starred field set to 0 (false).
+        for (int i = 0; i < numFrequents; i++) {
+            c.addRow(new Object[] {countId, null, 0, null, null, 0, 0, null, 0,
+                    PinnedPositions.UNPINNED, countId, null});
+            countId++;
+        }
+        return c;
+    }
+
+    private ContactEntry getTestContactEntry(int id) {
+        return getTestContactEntry(id, PinnedPositions.UNPINNED);
+    }
+
+    private ContactEntry getTestContactEntry(int id, int pinned) {
+        return getTestContactEntry(id, pinned, String.valueOf(id), String.valueOf(id));
+    }
+
+    private ContactEntry getTestContactEntry(int id, int pinned, String namePrimaryAppend,
+            String nameAlternativeAppend) {
+        ContactEntry contactEntry = new ContactEntry();
+        contactEntry.id = id;
+        contactEntry.pinned = pinned;
+        contactEntry.namePrimary = namePrimaryAppend;
+        contactEntry.nameAlternative = nameAlternativeAppend;
+        return contactEntry;
+    }
+
+    private void assertContactEntryListPositionsMatchId(ArrayList<ContactEntry> contactEntries,
+            int expectedSize) {
+        Assert.assertEquals(expectedSize, contactEntries.size());
+        for (int i = 0; i < expectedSize; ++i) {
+            Assert.assertEquals(i, contactEntries.get(i).id);
+        }
+    }
+}
diff --git a/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java b/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java
new file mode 100644
index 0000000..da41dfc
--- /dev/null
+++ b/tests/src/com/android/dialer/tests/calllog/FillCallLogTestActivity.java
@@ -0,0 +1,658 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.tests.calllog;
+
+import android.app.Activity;
+import android.app.DatePickerDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.LoaderManager;
+import android.app.TimePickerDialog;
+import android.content.ContentProviderClient;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.CursorLoader;
+import android.content.Loader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.provider.CallLog.Calls;
+import android.provider.VoicemailContract;
+import android.provider.VoicemailContract.Status;
+import android.provider.VoicemailContract.Voicemails;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.text.format.DateFormat;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.DatePicker;
+import android.widget.EditText;
+import android.widget.ProgressBar;
+import android.widget.RadioButton;
+import android.widget.TextView;
+import android.widget.TimePicker;
+import android.widget.Toast;
+
+import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
+import com.android.dialer.tests.R;
+import com.android.dialer.util.AppCompatConstants;
+import com.android.dialer.util.TelecomUtil;
+
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Activity to add entries to the call log for testing.
+ */
+public class FillCallLogTestActivity extends Activity {
+    private static final String TAG = "FillCallLogTestActivity";
+    /** 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[] {
+        AppCompatConstants.CALLS_INCOMING_TYPE,
+        AppCompatConstants.CALLS_OUTGOING_TYPE,
+        AppCompatConstants.CALLS_MISSED_TYPE
+    };
+
+    private TextView mNumberTextView;
+    private Button mAddButton;
+    private ProgressBar mProgressBar;
+    private CheckBox mUseRandomNumbers;
+    private RadioButton mCallTypeIncoming;
+    private RadioButton mCallTypeMissed;
+    private RadioButton mCallTypeOutgoing;
+    private RadioButton mCallTypeVoicemail;
+    private RadioButton mCallTypeCustom;
+    private EditText mCustomCallTypeTextView;
+    private CheckBox mCallTypeVideo;
+    private RadioButton mPresentationAllowed;
+    private RadioButton mPresentationRestricted;
+    private RadioButton mPresentationUnknown;
+    private RadioButton mPresentationPayphone;
+    private TextView mCallDate;
+    private TextView mCallTime;
+    private TextView mPhoneNumber;
+    private EditText mOffset;
+
+    private int mCallTimeHour;
+    private int mCallTimeMinute;
+    private int mCallDateYear;
+    private int mCallDateMonth;
+    private int mCallDateDay;
+    private RadioButton mAccount0;
+    private RadioButton mAccount1;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.fill_call_log_test);
+        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;
+                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);
+                mProgressBar.setMax(count);
+                mProgressBar.setVisibility(View.VISIBLE);
+            }
+        });
+
+        mCallTypeIncoming = (RadioButton) findViewById(R.id.call_type_incoming);
+        mCallTypeMissed = (RadioButton) findViewById(R.id.call_type_missed);
+        mCallTypeOutgoing = (RadioButton) findViewById(R.id.call_type_outgoing);
+        mCallTypeVoicemail = (RadioButton) findViewById(R.id.call_type_voicemail);
+        mCallTypeCustom = (RadioButton) findViewById(R.id.call_type_custom);
+        mCustomCallTypeTextView = (EditText) findViewById(R.id.call_type_custom_text);
+        mCallTypeVideo = (CheckBox) findViewById(R.id.call_type_video);
+        mPresentationAllowed = (RadioButton) findViewById(R.id.presentation_allowed);
+        mPresentationPayphone = (RadioButton) findViewById(R.id.presentation_payphone);
+        mPresentationUnknown = (RadioButton) findViewById(R.id.presentation_unknown);
+        mPresentationRestricted = (RadioButton) findViewById(R.id.presentation_restricted);
+        mCallTime = (TextView) findViewById(R.id.call_time);
+        mCallDate = (TextView) findViewById(R.id.call_date);
+        mPhoneNumber = (TextView) findViewById(R.id.phone_number);
+        mOffset = (EditText) findViewById(R.id.delta_after_add);
+        mAccount0 = (RadioButton) findViewById(R.id.account0);
+        mAccount1 = (RadioButton) findViewById(R.id.account1);
+
+        mCustomCallTypeTextView.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+                // Do nothing.
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+                // Toggle the custom call type radio button if the text is changed/focused.
+                mCallTypeCustom.toggle();
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                // Do nothing.
+            }
+        });
+
+        // Use the current time as the default values for the picker
+        final Calendar c = Calendar.getInstance();
+        mCallTimeHour = c.get(Calendar.HOUR_OF_DAY);
+        mCallTimeMinute = c.get(Calendar.MINUTE);
+        mCallDateYear = c.get(Calendar.YEAR);
+        mCallDateMonth = c.get(Calendar.MONTH);
+        mCallDateDay = c.get(Calendar.DAY_OF_MONTH);
+        setDisplayDate();
+        setDisplayTime();
+    }
+
+    /**
+     * Adds a number of entries to the call log. The content of the entries is based on existing
+     * entries.
+     *
+     * @param count the number of entries to add
+     */
+    private void addEntriesToCallLog(final int count, boolean useRandomNumbers) {
+        if (useRandomNumbers) {
+            addRandomNumbers(count);
+        } else {
+            getLoaderManager().initLoader(CALLLOG_LOADER_ID, null,
+                    new CallLogLoaderListener(count));
+        }
+    }
+
+    /**
+     * Calls when the insertion has completed.
+     *
+     * @param message the message to show in a toast to the user
+     */
+    private void insertCompleted(String message) {
+        // Hide the progress bar.
+        mProgressBar.setVisibility(View.GONE);
+        // Re-enable the add button.
+        mNumberTextView.setEnabled(true);
+        mAddButton.setEnabled(true);
+        mNumberTextView.setText("");
+        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
+    }
+
+
+    /**
+     * Creates a {@link ContentValues} object containing values corresponding to the given cursor.
+     *
+     * @param cursor the cursor from which to get the values
+     * @return a newly created content values object
+     */
+    private ContentValues createContentValuesFromCursor(Cursor cursor) {
+        ContentValues values = new ContentValues();
+        for (int column = 0; column < cursor.getColumnCount();
+                ++column) {
+            String name = cursor.getColumnName(column);
+            switch (cursor.getType(column)) {
+                case Cursor.FIELD_TYPE_STRING:
+                    values.put(name, cursor.getString(column));
+                    break;
+                case Cursor.FIELD_TYPE_INTEGER:
+                    values.put(name, cursor.getLong(column));
+                    break;
+                case Cursor.FIELD_TYPE_FLOAT:
+                    values.put(name, cursor.getDouble(column));
+                    break;
+                case Cursor.FIELD_TYPE_BLOB:
+                    values.put(name, cursor.getBlob(column));
+                    break;
+                case Cursor.FIELD_TYPE_NULL:
+                    values.putNull(name);
+                    break;
+                default:
+                    Log.d(TAG, "Invalid value in cursor: " + cursor.getType(column));
+                    break;
+            }
+        }
+        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.NUMBER_PRESENTATION, Calls.PRESENTATION_ALLOWED);
+            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. */
+        private final int mCount;
+
+        private CallLogLoaderListener(int count) {
+            mCount = count;
+        }
+
+        @Override
+        public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+            Log.d(TAG, "onCreateLoader");
+            return new CursorLoader(FillCallLogTestActivity.this, Calls.CONTENT_URI,
+                    null, null, null, null);
+        }
+
+        @Override
+        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+            try {
+                Log.d(TAG, "onLoadFinished");
+
+                if (data.getCount() == 0) {
+                    // If there are no entries in the call log, we cannot generate new ones.
+                    insertCompleted(getString(R.string.noLogEntriesToast));
+                    return;
+                }
+
+                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);
+            }
+        }
+
+        @Override
+        public void onLoaderReset(Loader<Cursor> loader) {}
+    }
+
+    /** 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 ContentValues[] mValues;
+
+        public AsyncCallLogInserter(ContentValues[] values) {
+            mValues = values;
+        }
+
+        @Override
+        protected Integer doInBackground(Void... params) {
+            Log.d(TAG, "doInBackground");
+            return insertIntoCallLog();
+        }
+
+        @Override
+        protected void onProgressUpdate(Integer... values) {
+            Log.d(TAG, "onProgressUpdate");
+            updateCount(values[0]);
+        }
+
+        @Override
+        protected void onPostExecute(Integer count) {
+            Log.d(TAG, "onPostExecute");
+            insertCompleted(getString(R.string.addedLogEntriesToast, count));
+        }
+
+        /**
+         * Inserts a number of entries in the call log based on the given templates.
+         *
+         * @return the number of inserted entries
+         */
+        private Integer insertIntoCallLog() {
+            int inserted = 0;
+
+            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)
+                        - RNG.nextInt(24 * 60 * 60 * (index + 1)) * 1000L);
+                // Add some randomness to the duration.
+                if (values.getAsLong(Calls.DURATION) > 0) {
+                    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(
+                                Calls.CONTENT_URI);
+                try {
+                    Log.d(TAG, "adding entry to call log");
+                    contentProvider.insert(Calls.CONTENT_URI, values);
+                    ++inserted;
+                    this.publishProgress(inserted);
+                } catch (RemoteException e) {
+                    Log.d(TAG, "insert failed", e);
+                }
+            }
+            return inserted;
+        }
+    }
+
+    /**
+     * Updates the count shown to the user corresponding to the number of entries added.
+     *
+     * @param count the number of entries inserted so far
+     */
+    public void updateCount(Integer count) {
+        mProgressBar.setProgress(count);
+    }
+
+    /**
+     * Determines the call type for a manually entered call.
+     *
+     * @return Call type.
+     */
+    private int getManualCallType() {
+        if (mCallTypeIncoming.isChecked()) {
+            return AppCompatConstants.CALLS_INCOMING_TYPE;
+        } else if (mCallTypeOutgoing.isChecked()) {
+            return AppCompatConstants.CALLS_OUTGOING_TYPE;
+        } else if (mCallTypeVoicemail.isChecked()) {
+            return AppCompatConstants.CALLS_VOICEMAIL_TYPE;
+        } else if (mCallTypeCustom.isChecked()) {
+            return Integer.parseInt(mCustomCallTypeTextView.getText().toString());
+        } else {
+            return AppCompatConstants.CALLS_MISSED_TYPE;
+        }
+    }
+
+    /**
+     * Determines the presentation for a manually entered call.
+     *
+     * @return Presentation.
+     */
+    private int getManualPresentation() {
+        if (mPresentationAllowed.isChecked()) {
+            return Calls.PRESENTATION_ALLOWED;
+        } else if (mPresentationPayphone.isChecked()) {
+            return Calls.PRESENTATION_PAYPHONE;
+        } else if (mPresentationRestricted.isChecked()) {
+            return Calls.PRESENTATION_RESTRICTED;
+        } else {
+            return Calls.PRESENTATION_UNKNOWN;
+        }
+    }
+
+    private PhoneAccountHandle getManualAccount() {
+        List <PhoneAccountHandle> accountHandles = TelecomUtil.getCallCapablePhoneAccounts(this);
+        //TODO: hide the corresponding radio buttons if no accounts are available.
+        if (mAccount0.isChecked()) {
+            return accountHandles.get(0);
+        } else if (mAccount1.isChecked()){
+            return accountHandles.get(1);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Shows a time picker dialog, storing the results in the time field.
+     */
+    public void showTimePickerDialog(View v) {
+        DialogFragment newFragment = new TimePickerFragment();
+        newFragment.show(getFragmentManager(),"timePicker");
+    }
+
+    /**
+     * Helper class to display time picker and store the hour/minute.
+     */
+    public class TimePickerFragment extends DialogFragment
+            implements TimePickerDialog.OnTimeSetListener {
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            // Create a new instance of TimePickerDialog and return it
+            return new TimePickerDialog(getActivity(), this, mCallTimeHour, mCallTimeMinute,
+                    DateFormat.is24HourFormat(getActivity()));
+        }
+
+        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
+            mCallTimeHour = hourOfDay;
+            mCallTimeMinute = minute;
+            setDisplayTime();
+        }
+    }
+
+    /**
+     * Sets the call time TextView to the current selected time.
+     */
+    private void setDisplayTime() {
+        mCallTime.setText(String.format("%02d:%02d", mCallTimeHour, mCallTimeMinute));
+    }
+
+    /**
+     * Sets the call date Textview to the current selected date
+     */
+    private void setDisplayDate() {
+        mCallDate.setText(String.format("%04d-%02d-%02d", mCallDateYear, mCallDateMonth,
+                mCallDateDay));
+    }
+
+    /**
+     * Shows a date picker dialog.
+     */
+    public void showDatePickerDialog(View v) {
+        DialogFragment newFragment = new DatePickerFragment();
+        newFragment.show(getFragmentManager(),"datePicker");
+    }
+
+    /**
+     * Helper class to show a date picker.
+     */
+    public class DatePickerFragment extends DialogFragment
+            implements DatePickerDialog.OnDateSetListener {
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            // Create a new instance of DatePickerDialog and return it
+            return new DatePickerDialog(getActivity(), this, mCallDateYear, mCallDateMonth,
+                    mCallDateDay);
+        }
+
+        public void onDateSet(DatePicker view, int year, int month, int day) {
+            mCallDateYear = year;
+            mCallDateMonth = month;
+            mCallDateDay = day;
+            setDisplayDate();
+        }
+    }
+
+    /**
+     * OnClick handler for the button that adds a manual call log entry to the call log.
+     *
+     * @param v Calling view.
+     */
+    public void addManualEntry(View v) {
+        Calendar dateTime = Calendar.getInstance();
+        dateTime.set(mCallDateYear, mCallDateMonth, mCallDateDay, mCallTimeHour, mCallTimeMinute);
+
+        int features = mCallTypeVideo.isChecked() ? Calls.FEATURES_VIDEO : 0;
+        Long dataUsage = null;
+        if (mCallTypeVideo.isChecked()) {
+            // Some random data usage up to 50MB.
+            dataUsage = (long) RNG.nextInt(52428800);
+        }
+
+        if (getManualCallType() == AppCompatConstants.CALLS_VOICEMAIL_TYPE) {
+            addManualVoicemail(dateTime.getTimeInMillis());
+        } else {
+            addCall(mPhoneNumber.getText().toString(), getManualPresentation(),
+                    getManualCallType(), features, getManualAccount(),
+                    dateTime.getTimeInMillis(), RNG.nextInt(60 * 60), dataUsage);
+        }
+
+        // Subtract offset from the call date/time and store as new date/time
+        int offset = Integer.parseInt(mOffset.getText().toString());
+
+        dateTime.add(Calendar.MINUTE, offset);
+        mCallDateYear = dateTime.get(Calendar.YEAR);
+        mCallDateMonth = dateTime.get(Calendar.MONTH);
+        mCallDateDay = dateTime.get(Calendar.DAY_OF_MONTH);
+        mCallTimeHour = dateTime.get(Calendar.HOUR_OF_DAY);
+        mCallTimeMinute = dateTime.get(Calendar.MINUTE);
+        setDisplayDate();
+        setDisplayTime();
+    }
+
+    // Copied and modified to compile unbundled from android.provider.CallLog
+    public Uri addCall(String number,
+            int presentation, int callType, int features, PhoneAccountHandle accountHandle,
+            long start, int duration, Long dataUsage) {
+        final ContentResolver resolver = getContentResolver();
+        int numberPresentation = Calls.PRESENTATION_ALLOWED;
+
+        String accountAddress = null;
+        if (accountHandle != null) {
+            PhoneAccount account = TelecomUtil.getPhoneAccount(this, accountHandle);
+            if (account != null) {
+                Uri address = account.getSubscriptionAddress();
+                if (address != null) {
+                    accountAddress = address.getSchemeSpecificPart();
+                }
+            }
+        }
+
+        if (numberPresentation != Calls.PRESENTATION_ALLOWED) {
+            number = "";
+        }
+
+        // accountHandle information
+        String accountComponentString = null;
+        String accountId = null;
+        if (accountHandle != null) {
+            accountComponentString = accountHandle.getComponentName().flattenToString();
+            accountId = accountHandle.getId();
+        }
+
+        ContentValues values = new ContentValues(6);
+
+        values.put(Calls.NUMBER, number);
+        values.put(Calls.NUMBER_PRESENTATION, Integer.valueOf(numberPresentation));
+        values.put(Calls.TYPE, Integer.valueOf(callType));
+        values.put(Calls.FEATURES, features);
+        values.put(Calls.DATE, Long.valueOf(start));
+        values.put(Calls.DURATION, Long.valueOf(duration));
+        if (dataUsage != null) {
+            values.put(Calls.DATA_USAGE, dataUsage);
+        }
+        values.put(Calls.PHONE_ACCOUNT_COMPONENT_NAME, accountComponentString);
+        values.put(Calls.PHONE_ACCOUNT_ID, accountId);
+        // Calls.PHONE_ACCOUNT_ADDRESS
+        values.put("phone_account_address", accountAddress);
+        values.put(Calls.NEW, Integer.valueOf(1));
+
+        if (callType == AppCompatConstants.CALLS_MISSED_TYPE) {
+            values.put(Calls.IS_READ, 0);
+        }
+
+        return addEntryAndRemoveExpiredEntries(this, Calls.CONTENT_URI, values);
+    }
+
+    // Copied from android.provider.CallLog
+    private static Uri addEntryAndRemoveExpiredEntries(Context context, Uri uri,
+            ContentValues values) {
+        final ContentResolver resolver = context.getContentResolver();
+        Uri result = resolver.insert(uri, values);
+        resolver.delete(uri, "_id IN " +
+                "(SELECT _id FROM calls ORDER BY " + Calls.DEFAULT_SORT_ORDER
+                + " LIMIT -1 OFFSET 500)", null);
+        return result;
+    }
+
+    private void addManualVoicemail(Long time) {
+        final ContentValues contentValues = new ContentValues();
+        contentValues.put(Voicemails.DATE, time);
+        contentValues.put(Voicemails.NUMBER, mPhoneNumber.getText().toString());
+        contentValues.put(Voicemails.DURATION, 5000);
+        contentValues.put(Voicemails.SOURCE_PACKAGE, getPackageName());
+        contentValues.put(Voicemails.SOURCE_DATA, 500);
+        contentValues.put(Voicemails.IS_READ, 0);
+
+        getContentResolver().insert(VoicemailContract.Voicemails.buildSourceUri(getPackageName()),
+                contentValues);
+
+        updateVoicemailStatus();
+    }
+
+    private void updateVoicemailStatus() {
+        ContentResolver contentResolver = getContentResolver();
+        Uri statusUri = VoicemailContract.Status.buildSourceUri(getPackageName());
+        final PhoneAccountHandle accountHandle = getManualAccount();
+
+        ContentValues values = new ContentValues();
+        values.put(Status.PHONE_ACCOUNT_COMPONENT_NAME, getPackageName());
+        values.put(Status.PHONE_ACCOUNT_ID, "ACCOUNT_ID");
+        values.put(Status.CONFIGURATION_STATE, VoicemailContract.Status.CONFIGURATION_STATE_OK);
+        values.put(Status.DATA_CHANNEL_STATE, VoicemailContract.Status.DATA_CHANNEL_STATE_OK);
+        values.put(Status.NOTIFICATION_CHANNEL_STATE,
+                VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK);
+
+        contentResolver.insert(statusUri, values);
+    }
+}
diff --git a/tests/src/com/android/dialer/util/DialerUtilsTest.java b/tests/src/com/android/dialer/util/DialerUtilsTest.java
new file mode 100644
index 0000000..ccd6dfd
--- /dev/null
+++ b/tests/src/com/android/dialer/util/DialerUtilsTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2014 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.dialer.util;
+
+import com.android.dialer.calllog.PhoneCallDetailsHelper;
+import com.google.common.collect.Lists;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.util.ArrayList;
+
+/**
+ * Performs tests of the DialerUtils class.
+ */
+@SmallTest
+public class DialerUtilsTest extends AndroidTestCase {
+
+    private Resources mResources;
+
+    /**
+     * List of items to be concatenated together for CharSequence join tests.
+     */
+    private ArrayList<CharSequence> mItems = Lists.newArrayList();
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        Context context = getContext();
+        mResources = context.getResources();
+    }
+
+    /**
+     * Tests joining an empty list of {@link CharSequence}.
+     */
+    public void testJoinEmpty() {
+        mItems.clear();
+        CharSequence joined = DialerUtils.join(mResources, mItems);
+        assertEquals("", joined);
+    }
+
+    /**
+     * Tests joining a list of {@link CharSequence} with a single entry.
+     */
+    public void testJoinOne() {
+        mItems.clear();
+        mItems.add("Hello");
+        CharSequence joined = DialerUtils.join(mResources, mItems);
+        assertEquals("Hello", joined);
+    }
+
+    /**
+     * Tests joining a list of {@link CharSequence} with a multiple entries.
+     */
+    public void testJoinTwo() {
+        mItems.clear();
+        mItems.add("Hello");
+        mItems.add("there");
+        CharSequence joined = DialerUtils.join(mResources, mItems);
+        assertEquals("Hello, there", joined);
+    }
+}
diff --git a/tests/src/com/android/dialer/util/ExpirableCacheTest.java b/tests/src/com/android/dialer/util/ExpirableCacheTest.java
new file mode 100644
index 0000000..b81ad75
--- /dev/null
+++ b/tests/src/com/android/dialer/util/ExpirableCacheTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.util;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.util.LruCache;
+
+import com.android.dialer.util.ExpirableCache.CachedValue;
+
+/**
+ * Unit tests for {@link ExpirableCache}.
+ */
+@SmallTest
+public class ExpirableCacheTest extends AndroidTestCase {
+    /** The object under test. */
+    private ExpirableCache<String, Integer> mCache;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        LruCache<String, CachedValue<Integer>> lruCache =
+            new LruCache<String, ExpirableCache.CachedValue<Integer>>(20);
+        mCache = ExpirableCache.create(lruCache);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mCache = null;
+        super.tearDown();
+    }
+
+    public void testPut() {
+        mCache.put("a", 1);
+        mCache.put("b", 2);
+        assertEquals(1, mCache.getPossiblyExpired("a").intValue());
+        assertEquals(2, mCache.getPossiblyExpired("b").intValue());
+        mCache.put("a", 3);
+        assertEquals(3, mCache.getPossiblyExpired("a").intValue());
+    }
+
+    public void testGet_NotExisting() {
+        assertNull(mCache.getPossiblyExpired("a"));
+        mCache.put("b", 1);
+        assertNull(mCache.getPossiblyExpired("a"));
+    }
+
+    public void testGet_Expired() {
+        mCache.put("a", 1);
+        assertEquals(1, mCache.getPossiblyExpired("a").intValue());
+        mCache.expireAll();
+        assertEquals(1, mCache.getPossiblyExpired("a").intValue());
+    }
+
+    public void testGetNotExpired_NotExisting() {
+        assertNull(mCache.get("a"));
+        mCache.put("b", 1);
+        assertNull(mCache.get("a"));
+    }
+
+    public void testGetNotExpired_Expired() {
+        mCache.put("a", 1);
+        assertEquals(1, mCache.get("a").intValue());
+        mCache.expireAll();
+        assertNull(mCache.get("a"));
+    }
+
+    public void testGetCachedValue_NotExisting() {
+        assertNull(mCache.getCachedValue("a"));
+        mCache.put("b", 1);
+        assertNull(mCache.getCachedValue("a"));
+    }
+
+    public void testGetCachedValue_Expired() {
+        mCache.put("a", 1);
+        assertFalse("Should not be expired", mCache.getCachedValue("a").isExpired());
+        mCache.expireAll();
+        assertTrue("Should be expired", mCache.getCachedValue("a").isExpired());
+    }
+
+    public void testGetChangedValue_PutAfterExpired() {
+        mCache.put("a", 1);
+        mCache.expireAll();
+        mCache.put("a", 1);
+        assertFalse("Should not be expired", mCache.getCachedValue("a").isExpired());
+    }
+
+    public void testComputingCache() {
+        // Creates a cache in which all unknown values default to zero.
+        mCache = ExpirableCache.create(
+                new LruCache<String, ExpirableCache.CachedValue<Integer>>(10) {
+                    @Override
+                    protected CachedValue<Integer> create(String key) {
+                        return mCache.newCachedValue(0);
+                    }
+                });
+
+        // The first time we request a new value, we add it to the cache.
+        CachedValue<Integer> cachedValue = mCache.getCachedValue("a");
+        assertNotNull("Should have been created implicitly", cachedValue);
+        assertEquals(0, cachedValue.getValue().intValue());
+        assertFalse("Should not be expired", cachedValue.isExpired());
+
+        // If we expire all the values, the implicitly created value will also be marked as expired.
+        mCache.expireAll();
+        CachedValue<Integer> expiredCachedValue = mCache.getCachedValue("a");
+        assertNotNull("Should have been created implicitly", expiredCachedValue);
+        assertEquals(0, expiredCachedValue.getValue().intValue());
+        assertTrue("Should be expired", expiredCachedValue.isExpired());
+    }
+}
diff --git a/tests/src/com/android/dialer/util/FakeAsyncTaskExecutor.java b/tests/src/com/android/dialer/util/FakeAsyncTaskExecutor.java
new file mode 100644
index 0000000..52cdf7e
--- /dev/null
+++ b/tests/src/com/android/dialer/util/FakeAsyncTaskExecutor.java
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.util;
+
+import android.app.Instrumentation;
+import android.os.AsyncTask;
+
+import com.google.common.collect.Lists;
+
+import junit.framework.Assert;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
+import java.util.concurrent.TimeUnit;
+
+import javax.annotation.concurrent.GuardedBy;
+import javax.annotation.concurrent.ThreadSafe;
+
+/**
+ * Test implementation of AsyncTaskExecutor.
+ * <p>
+ * This class is thread-safe. As per the contract of the AsyncTaskExecutor, the submit methods must
+ * be called from the main ui thread, however the other public methods may be called from any thread
+ * (most commonly the test thread).
+ * <p>
+ * Tasks submitted to this executor will not be run immediately. Rather they will be stored in a
+ * list of submitted tasks, where they can be examined. They can also be run on-demand using the run
+ * methods, so that different ordering of AsyncTask execution can be simulated.
+ * <p>
+ * The onPreExecute method of the submitted AsyncTask will be called synchronously during the
+ * call to {@link #submit(Object, AsyncTask, Object...)}.
+ */
+@ThreadSafe
+public class FakeAsyncTaskExecutor implements AsyncTaskExecutor {
+    private static final long DEFAULT_TIMEOUT_MS = 10000;
+
+    /** The maximum length of time in ms to wait for tasks to execute during tests. */
+    private final long mTimeoutMs = DEFAULT_TIMEOUT_MS;
+
+    private final Object mLock = new Object();
+    @GuardedBy("mLock") private final List<SubmittedTask> mSubmittedTasks = Lists.newArrayList();
+
+    private final DelayedExecutor mBlockingExecutor = new DelayedExecutor();
+    private final Instrumentation mInstrumentation;
+
+    /** Create a fake AsyncTaskExecutor for use in unit tests. */
+    public FakeAsyncTaskExecutor(Instrumentation instrumentation) {
+        Assert.assertNotNull(instrumentation);
+        mInstrumentation = instrumentation;
+    }
+
+    /** Encapsulates an async task with the params and identifier it was submitted with. */
+    public interface SubmittedTask {
+        Runnable getRunnable();
+        Object getIdentifier();
+        AsyncTask<?, ?, ?> getAsyncTask();
+    }
+
+    private static final class SubmittedTaskImpl implements SubmittedTask {
+        private final Object mIdentifier;
+        private final Runnable mRunnable;
+        private final AsyncTask<?, ?, ?> mAsyncTask;
+
+        public SubmittedTaskImpl(Object identifier, Runnable runnable,
+                AsyncTask<?, ?, ?> asyncTask) {
+            mIdentifier = identifier;
+            mRunnable = runnable;
+            mAsyncTask = asyncTask;
+        }
+
+        @Override
+        public Object getIdentifier() {
+            return mIdentifier;
+        }
+
+        @Override
+        public Runnable getRunnable() {
+            return mRunnable;
+        }
+
+        @Override
+        public AsyncTask<?, ?, ?> getAsyncTask() {
+            return mAsyncTask;
+        }
+
+        @Override
+        public String toString() {
+            return "SubmittedTaskImpl [mIdentifier=" + mIdentifier + "]";
+        }
+    }
+
+    private class DelayedExecutor implements Executor {
+        private final Object mNextLock = new Object();
+        @GuardedBy("mNextLock") private Object mNextIdentifier;
+        @GuardedBy("mNextLock") private AsyncTask<?, ?, ?> mNextTask;
+
+        @Override
+        public void execute(Runnable command) {
+            synchronized (mNextLock) {
+                Assert.assertNotNull(mNextTask);
+                mSubmittedTasks.add(new SubmittedTaskImpl(mNextIdentifier,
+                        command, mNextTask));
+                mNextIdentifier = null;
+                mNextTask = null;
+            }
+        }
+
+        public <T> AsyncTask<T, ?, ?> submit(Object identifier,
+                AsyncTask<T, ?, ?> task, T... params) {
+            synchronized (mNextLock) {
+                Assert.assertNull(mNextIdentifier);
+                Assert.assertNull(mNextTask);
+                mNextIdentifier = identifier;
+                Assert.assertNotNull("Already had a valid task.\n"
+                        + "Are you calling AsyncTaskExecutor.submit(...) from within the "
+                        + "onPreExecute() method of another task being submitted?\n"
+                        + "Sorry!  Not that's not supported.", task);
+                mNextTask = task;
+            }
+            return task.executeOnExecutor(this, params);
+        }
+    }
+
+    @Override
+    public <T> AsyncTask<T, ?, ?> submit(Object identifier, AsyncTask<T, ?, ?> task, T... params) {
+        AsyncTaskExecutors.checkCalledFromUiThread();
+        return mBlockingExecutor.submit(identifier, task, params);
+    }
+
+    /**
+     * Runs a single task matching the given identifier.
+     * <p>
+     * Removes the matching task from the list of submitted tasks, then runs it. The executor used
+     * to execute this async task will be a same-thread executor.
+     * <p>
+     * Fails if there was not exactly one task matching the given identifier.
+     * <p>
+     * This method blocks until the AsyncTask has completely finished executing.
+     */
+    public void runTask(Object identifier) throws InterruptedException {
+        List<SubmittedTask> tasks = getSubmittedTasksByIdentifier(identifier, true);
+        Assert.assertEquals("Expected one task " + identifier + ", got " + tasks, 1, tasks.size());
+        runTask(tasks.get(0));
+    }
+
+    /**
+     * Runs all tasks whose identifier matches the given identifier.
+     * <p>
+     * Removes all matching tasks from the list of submitted tasks, and runs them. The executor used
+     * to execute these async tasks will be a same-thread executor.
+     * <p>
+     * Fails if there were no tasks matching the given identifier.
+     * <p>
+     * This method blocks until the AsyncTask objects have completely finished executing.
+     */
+    public void runAllTasks(Object identifier) throws InterruptedException {
+        List<SubmittedTask> tasks = getSubmittedTasksByIdentifier(identifier, true);
+        Assert.assertTrue("There were no tasks with identifier " + identifier, tasks.size() > 0);
+        for (SubmittedTask task : tasks) {
+            runTask(task);
+        }
+    }
+
+    /**
+     * Executes a single {@link SubmittedTask}.
+     * <p>
+     * Blocks until the task has completed running.
+     */
+    private <T> void runTask(final SubmittedTask submittedTask) throws InterruptedException {
+        submittedTask.getRunnable().run();
+        // Block until the onPostExecute or onCancelled has finished.
+        // Unfortunately we can't be sure when the AsyncTask will have posted its result handling
+        // code to the main ui thread, the best we can do is wait for the Status to be FINISHED.
+        final CountDownLatch latch = new CountDownLatch(1);
+        class AsyncTaskHasFinishedRunnable implements Runnable {
+            @Override
+            public void run() {
+                if (submittedTask.getAsyncTask().getStatus() == AsyncTask.Status.FINISHED) {
+                    latch.countDown();
+                } else {
+                    mInstrumentation.waitForIdle(this);
+                }
+            }
+        }
+        mInstrumentation.waitForIdle(new AsyncTaskHasFinishedRunnable());
+        Assert.assertTrue(latch.await(mTimeoutMs, TimeUnit.MILLISECONDS));
+    }
+
+    private List<SubmittedTask> getSubmittedTasksByIdentifier(
+            Object identifier, boolean remove) {
+        Assert.assertNotNull(identifier);
+        List<SubmittedTask> results = Lists.newArrayList();
+        synchronized (mLock) {
+            Iterator<SubmittedTask> iter = mSubmittedTasks.iterator();
+            while (iter.hasNext()) {
+                SubmittedTask task = iter.next();
+                if (identifier.equals(task.getIdentifier())) {
+                    results.add(task);
+                    iter.remove();
+                }
+            }
+        }
+        return results;
+    }
+
+    /** Get a factory that will return this instance - useful for testing. */
+    public AsyncTaskExecutors.AsyncTaskExecutorFactory getFactory() {
+        return new AsyncTaskExecutors.AsyncTaskExecutorFactory() {
+            @Override
+            public AsyncTaskExecutor createAsyncTaskExeuctor() {
+                return FakeAsyncTaskExecutor.this;
+            }
+        };
+    }
+}
diff --git a/tests/src/com/android/dialer/util/LocaleTestUtils.java b/tests/src/com/android/dialer/util/LocaleTestUtils.java
new file mode 100644
index 0000000..b893ccb
--- /dev/null
+++ b/tests/src/com/android/dialer/util/LocaleTestUtils.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.util;
+
+import android.content.Context;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+
+import java.util.Locale;
+
+/**
+ * Utility class to save and restore the locale of the system.
+ * <p>
+ * This can be used for tests that assume to be run in a certain locale, e.g., because they
+ * check against strings in a particular language or require an assumption on how the system
+ * will behave in a specific locale.
+ * <p>
+ * In your test, you can change the locale with the following code:
+ * <pre>
+ * public class CanadaFrenchTest extends AndroidTestCase {
+ *     private LocaleTestUtils mLocaleTestUtils;
+ *
+ *     &#64;Override
+ *     public void setUp() throws Exception {
+ *         super.setUp();
+ *         mLocaleTestUtils = new LocaleTestUtils(getContext());
+ *         mLocaleTestUtils.setLocale(Locale.CANADA_FRENCH);
+ *     }
+ *
+ *     &#64;Override
+ *     public void tearDown() throws Exception {
+ *         mLocaleTestUtils.restoreLocale();
+ *         mLocaleTestUtils = null;
+ *         super.tearDown();
+ *     }
+ *
+ *     ...
+ * }
+ * </pre>
+ * Note that one should not call {@link #setLocale(Locale)} more than once without calling
+ * {@link #restoreLocale()} first.
+ * <p>
+ * This class is not thread-safe. Usually its methods should be invoked only from the test thread.
+ */
+public class LocaleTestUtils {
+    private final Context mContext;
+    private boolean mSaved;
+    private Locale mSavedContextLocale;
+    private Locale mSavedSystemLocale;
+
+    /**
+     * Create a new instance that can be used to set and reset the locale for the given context.
+     *
+     * @param context the context on which to alter the locale
+     */
+    public LocaleTestUtils(Context context) {
+        mContext = context;
+        mSaved = false;
+    }
+
+    /**
+     * Set the locale to the given value and saves the previous value.
+     *
+     * @param locale the value to which the locale should be set
+     * @throws IllegalStateException if the locale was already set
+     */
+    public void setLocale(Locale locale) {
+        if (mSaved) {
+            throw new IllegalStateException(
+                    "call restoreLocale() before calling setLocale() again");
+        }
+        mSavedContextLocale = setResourcesLocale(mContext.getResources(), locale);
+        mSavedSystemLocale = setResourcesLocale(Resources.getSystem(), locale);
+        mSaved = true;
+    }
+
+    /**
+     * Restores the previously set locale.
+     *
+     * @throws IllegalStateException if the locale was not set using {@link #setLocale(Locale)}
+     */
+    public void restoreLocale() {
+        if (!mSaved) {
+            throw new IllegalStateException("call setLocale() before calling restoreLocale()");
+        }
+        setResourcesLocale(mContext.getResources(), mSavedContextLocale);
+        setResourcesLocale(Resources.getSystem(), mSavedSystemLocale);
+        mSaved = false;
+    }
+
+    /**
+     * Sets the locale for the given resources and returns the previous locale.
+     *
+     * @param resources the resources on which to set the locale
+     * @param locale the value to which to set the locale
+     * @return the previous value of the locale for the resources
+     */
+    private Locale setResourcesLocale(Resources resources, Locale locale) {
+        Configuration contextConfiguration = new Configuration(resources.getConfiguration());
+        Locale savedLocale = contextConfiguration.locale;
+        contextConfiguration.locale = locale;
+        resources.updateConfiguration(contextConfiguration, null);
+        return savedLocale;
+    }
+}
diff --git a/tests/src/com/android/dialer/util/TestConstants.java b/tests/src/com/android/dialer/util/TestConstants.java
new file mode 100644
index 0000000..a3dd051
--- /dev/null
+++ b/tests/src/com/android/dialer/util/TestConstants.java
@@ -0,0 +1,5 @@
+package com.android.dialer.util;
+
+public class TestConstants {
+    public static final String CALL_INTENT_ACTION = IntentUtil.CALL_ACTION;
+}
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java b/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
new file mode 100644
index 0000000..630789c
--- /dev/null
+++ b/tests/src/com/android/dialer/voicemail/VoicemailPlaybackTest.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2015 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.dialer.voicemail;
+
+import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_FOR_CONTENT;
+import static com.android.dialer.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_CONTENT_AFTER_CHANGE;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.res.AssetManager;
+import android.net.Uri;
+import android.provider.VoicemailContract;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.test.suitebuilder.annotation.Suppress;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.dialer.R;
+import com.android.dialer.calllog.CallLogActivity;
+import com.android.dialer.util.AsyncTaskExecutors;
+import com.android.dialer.util.FakeAsyncTaskExecutor;
+import com.android.dialer.util.LocaleTestUtils;
+import com.android.dialer.voicemail.VoicemailPlaybackLayout;
+import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Unit tests for the {@link VoicemailPlaybackPresenter} and {@link VoicemailPlaybackLayout}.
+ */
+@LargeTest
+public class VoicemailPlaybackTest extends ActivityInstrumentationTestCase2<CallLogActivity> {
+    private static final String TEST_ASSET_NAME = "quick_test_recording.mp3";
+    private static final String MIME_TYPE = "audio/mp3";
+    private static final String CONTACT_NUMBER = "+1412555555";
+    private static final String VOICEMAIL_FILE_LOCATION = "/sdcard/sadlfj893w4j23o9sfu.mp3";
+
+    private Activity mActivity;
+    private VoicemailPlaybackPresenter mPresenter;
+    private VoicemailPlaybackLayout mLayout;
+
+    private Uri mVoicemailUri;
+    private LocaleTestUtils mLocaleTestUtils;
+    private FakeAsyncTaskExecutor mFakeAsyncTaskExecutor;
+
+    public VoicemailPlaybackTest() {
+        super(CallLogActivity.class);
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        mFakeAsyncTaskExecutor = new FakeAsyncTaskExecutor(getInstrumentation());
+        AsyncTaskExecutors.setFactoryForTest(mFakeAsyncTaskExecutor.getFactory());
+
+        // Some of the tests rely on the text - safest to force a specific locale.
+        mLocaleTestUtils = new LocaleTestUtils(getInstrumentation().getTargetContext());
+        mLocaleTestUtils.setLocale(Locale.US);
+
+        mActivity = getActivity();
+        mLayout = new VoicemailPlaybackLayout(mActivity);
+        mLayout.onFinishInflate();
+
+        mPresenter = VoicemailPlaybackPresenter.getInstance(mActivity, null);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        cleanUpVoicemailUri();
+
+        mLocaleTestUtils.restoreLocale();
+        mLocaleTestUtils = null;
+
+        mPresenter.clearInstance();
+        AsyncTaskExecutors.setFactoryForTest(null);
+
+        mActivity = null;
+        mPresenter = null;
+        mLayout = null;
+
+        super.tearDown();
+    }
+
+    public void testFetchingVoicemail() throws Throwable {
+        setUriForUnfetchedVoicemailEntry();
+        setPlaybackViewForPresenter();
+
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                mPresenter.resumePlayback();
+                assertStateTextContains("Loading voicemail");
+            }
+        });
+    }
+
+    @Suppress
+    public void testWhenCheckForContentCompletes() throws Throwable {
+        setUriForRealFileVoicemailEntry();
+        setPlaybackViewForPresenter();
+
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                mPresenter.resumePlayback();
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
+        getInstrumentation().waitForIdleSync();
+
+        assertStateTextContains("Loading voicemail");
+    }
+
+    @Suppress
+    public void testInvalidVoicemailShowsErrorMessage() throws Throwable {
+        setUriForInvalidVoicemailEntry();
+        setPlaybackViewForPresenter();
+
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                mPresenter.resumePlayback();
+            }
+        });
+        mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
+        getInstrumentation().waitForIdleSync();
+
+        // The media player will have thrown an IOException since the file doesn't exist.
+        // This should have put a failed to play message on screen, buffering is gone.
+        assertStateTextContains("Couldn't play voicemail");
+        assertStateTextNotContains("Buffering");
+    }
+
+    public void testClickingSpeakerphoneButton() throws Throwable {
+        setUriForRealFileVoicemailEntry();
+        setPlaybackViewForPresenter();
+
+        // Check that the speakerphone is false to start.
+        assertFalse(mPresenter.isSpeakerphoneOn());
+
+        View speakerphoneButton = mLayout.findViewById(R.id.playback_speakerphone);
+        speakerphoneButton.performClick();
+        assertTrue(mPresenter.isSpeakerphoneOn());
+    }
+
+    private void cleanUpVoicemailUri() {
+        if (mVoicemailUri != null) {
+            getContentResolver().delete(VoicemailContract.Voicemails.CONTENT_URI,
+                    "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mVoicemailUri)) });
+            mVoicemailUri = null;
+        }
+    }
+
+    private void setUriForRealFileVoicemailEntry() throws IOException {
+        assertNull(mVoicemailUri);
+        ContentValues values = new ContentValues();
+        values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
+        values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
+        values.put(VoicemailContract.Voicemails.MIME_TYPE, MIME_TYPE);
+        values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
+        String packageName = getInstrumentation().getTargetContext().getPackageName();
+        mVoicemailUri = getContentResolver().insert(
+                VoicemailContract.Voicemails.buildSourceUri(packageName), values);
+        AssetManager assets = getAssets();
+        try (InputStream inputStream = assets.open(TEST_ASSET_NAME);
+             OutputStream outputStream = getContentResolver().openOutputStream(mVoicemailUri)) {
+            copyBetweenStreams(inputStream, outputStream);
+        }
+    }
+
+    private void setUriForUnfetchedVoicemailEntry() {
+        assertNull(mVoicemailUri);
+        ContentValues values = new ContentValues();
+        values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
+        values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
+        values.put(VoicemailContract.Voicemails.MIME_TYPE, MIME_TYPE);
+        values.put(VoicemailContract.Voicemails.HAS_CONTENT, 0);
+        String packageName = getInstrumentation().getTargetContext().getPackageName();
+        mVoicemailUri = getContentResolver().insert(
+                VoicemailContract.Voicemails.buildSourceUri(packageName), values);
+    }
+
+    private void setUriForInvalidVoicemailEntry() {
+        assertNull(mVoicemailUri);
+        ContentResolver contentResolver = getContentResolver();
+        ContentValues values = new ContentValues();
+        values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
+        values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
+        // VoicemailContract.Voicemails._DATA
+        values.put("_data", VOICEMAIL_FILE_LOCATION);
+        mVoicemailUri = contentResolver.insert(VoicemailContract.Voicemails.CONTENT_URI, values);
+    }
+
+    private void setPlaybackViewForPresenter() {
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                mPresenter.setPlaybackView(mLayout, mVoicemailUri, false);
+            }
+        });
+    }
+
+    public void copyBetweenStreams(InputStream in, OutputStream out) throws IOException {
+        byte[] buffer = new byte[1024];
+        int bytesRead;
+        while ((bytesRead = in.read(buffer)) > 0) {
+            out.write(buffer, 0, bytesRead);
+        }
+    }
+
+    private void assertStateTextContains(String text) {
+        assertNotNull(mLayout);
+        assertTrue(mLayout.getStateText().contains(text));
+    }
+
+    private void assertStateTextNotContains(String text) {
+        assertNotNull(mLayout);
+        assertFalse(mLayout.getStateText().contains(text));
+    }
+
+    private ContentResolver getContentResolver() {
+        return getInstrumentation().getTargetContext().getContentResolver();
+    }
+
+    private AssetManager getAssets() {
+        return getInstrumentation().getContext().getAssets();
+    }
+}
diff --git a/tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java b/tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java
new file mode 100644
index 0000000..0377644
--- /dev/null
+++ b/tests/src/com/android/dialer/voicemail/VoicemailStatusHelperImplTest.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.voicemail;
+
+import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE;
+import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_CAN_BE_CONFIGURED;
+import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_NOT_CONFIGURED;
+import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE;
+import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_NO_CONNECTION;
+import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_OK;
+import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE;
+import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING;
+import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION;
+import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.VoicemailContract.Status;
+import android.test.AndroidTestCase;
+
+import com.android.dialer.R;
+import com.android.dialer.voicemail.VoicemailStatusHelper.StatusMessage;
+
+import java.util.List;
+
+/**
+ * Unit tests for {@link VoicemailStatusHelperImpl}.
+ */
+public class VoicemailStatusHelperImplTest extends AndroidTestCase {
+    private static final String[] TEST_PACKAGES = new String[] {
+        "com.test.package1",
+        "com.test.package2"
+    };
+
+    private static final Uri TEST_SETTINGS_URI = Uri.parse("http://www.visual.voicemail.setup");
+    private static final Uri TEST_VOICEMAIL_URI = Uri.parse("tel:901");
+
+    private static final int ACTION_MSG_CALL_VOICEMAIL =
+            R.string.voicemail_status_action_call_server;
+    private static final int ACTION_MSG_CONFIGURE = R.string.voicemail_status_action_configure;
+
+    private static final int STATUS_MSG_NONE = -1;
+    private static final int STATUS_MSG_VOICEMAIL_NOT_AVAILABLE =
+            R.string.voicemail_status_voicemail_not_available;
+    private static final int STATUS_MSG_AUDIO_NOT_AVAIALABLE =
+            R.string.voicemail_status_audio_not_available;
+    private static final int STATUS_MSG_MESSAGE_WAITING = R.string.voicemail_status_messages_waiting;
+    private static final int STATUS_MSG_INVITE_FOR_CONFIGURATION =
+            R.string.voicemail_status_configure_voicemail;
+
+    // Object under test.
+    private VoicemailStatusHelper mStatusHelper;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mStatusHelper = new VoicemailStatusHelperImpl();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        for (String sourcePackage : TEST_PACKAGES) {
+            deleteEntryForPackage(sourcePackage);
+        }
+        // Set member variables to null so that they are garbage collected across different runs
+        // of the tests.
+        mStatusHelper = null;
+        super.tearDown();
+    }
+
+
+    public void testNoStatusEntries() {
+        assertEquals(0, getStatusMessages().size());
+    }
+
+    public void testAllOK() {
+        insertEntryForPackage(TEST_PACKAGES[0], getAllOkStatusValues());
+        insertEntryForPackage(TEST_PACKAGES[1], getAllOkStatusValues());
+        assertEquals(0, getStatusMessages().size());
+    }
+
+    public void testNotAllOKForOnePackage() {
+        insertEntryForPackage(TEST_PACKAGES[0], getAllOkStatusValues());
+        insertEntryForPackage(TEST_PACKAGES[1], getAllOkStatusValues());
+
+        ContentValues values = new ContentValues();
+        // Good data channel + no notification
+        // action: call voicemail
+        // msg: voicemail not available in call log page & none in call details page.
+        values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
+        values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_OK);
+        updateEntryForPackage(TEST_PACKAGES[1], values);
+        checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_VOICEMAIL_NOT_AVAILABLE,
+                STATUS_MSG_NONE, ACTION_MSG_CALL_VOICEMAIL);
+
+        // Message waiting + good data channel - no action.
+        values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING);
+        values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_OK);
+        updateEntryForPackage(TEST_PACKAGES[1], values);
+        checkNoMessages(TEST_PACKAGES[1], values);
+
+        // No data channel + no notification
+        // action: call voicemail
+        // msg: voicemail not available in call log page & audio not available in call details page.
+        values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_OK);
+        values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
+        updateEntryForPackage(TEST_PACKAGES[1], values);
+        checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_VOICEMAIL_NOT_AVAILABLE,
+                STATUS_MSG_AUDIO_NOT_AVAIALABLE, ACTION_MSG_CALL_VOICEMAIL);
+
+        // No data channel + Notification OK
+        // action: call voicemail
+        // msg: voicemail not available in call log page & audio not available in call details page.
+        values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
+        values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
+        updateEntryForPackage(TEST_PACKAGES[1], values);
+        checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_VOICEMAIL_NOT_AVAILABLE,
+                STATUS_MSG_AUDIO_NOT_AVAIALABLE, ACTION_MSG_CALL_VOICEMAIL);
+
+        // No data channel + Notification OK
+        // action: call voicemail
+        // msg: message waiting in call log page & audio not available in call details page.
+        values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING);
+        values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
+        updateEntryForPackage(TEST_PACKAGES[1], values);
+        checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_MESSAGE_WAITING,
+                STATUS_MSG_AUDIO_NOT_AVAIALABLE, ACTION_MSG_CALL_VOICEMAIL);
+
+        // Not configured. No user action, so no message.
+        values.put(CONFIGURATION_STATE, CONFIGURATION_STATE_NOT_CONFIGURED);
+        updateEntryForPackage(TEST_PACKAGES[1], values);
+        checkNoMessages(TEST_PACKAGES[1], values);
+
+        // Can be configured - invite user for configure voicemail.
+        values.put(CONFIGURATION_STATE, CONFIGURATION_STATE_CAN_BE_CONFIGURED);
+        updateEntryForPackage(TEST_PACKAGES[1], values);
+        checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_INVITE_FOR_CONFIGURATION,
+                STATUS_MSG_NONE, ACTION_MSG_CONFIGURE, TEST_SETTINGS_URI);
+    }
+
+    // Test that priority of messages are handled well.
+    public void testMessageOrdering() {
+        insertEntryForPackage(TEST_PACKAGES[0], getAllOkStatusValues());
+        insertEntryForPackage(TEST_PACKAGES[1], getAllOkStatusValues());
+
+        final ContentValues valuesNoNotificationGoodDataChannel = new ContentValues();
+        valuesNoNotificationGoodDataChannel.put(NOTIFICATION_CHANNEL_STATE,
+                NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
+        valuesNoNotificationGoodDataChannel.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_OK);
+
+        final ContentValues valuesNoNotificationNoDataChannel = new ContentValues();
+        valuesNoNotificationNoDataChannel.put(NOTIFICATION_CHANNEL_STATE,
+                NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
+        valuesNoNotificationNoDataChannel.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
+
+        // Package1 with valuesNoNotificationGoodDataChannel and
+        // package2 with  valuesNoNotificationNoDataChannel. Package2 should be above.
+        updateEntryForPackage(TEST_PACKAGES[0], valuesNoNotificationGoodDataChannel);
+        updateEntryForPackage(TEST_PACKAGES[1], valuesNoNotificationNoDataChannel);
+        List<StatusMessage> messages = getStatusMessages();
+        assertEquals(2, messages.size());
+        assertEquals(TEST_PACKAGES[0], messages.get(1).sourcePackage);
+        assertEquals(TEST_PACKAGES[1], messages.get(0).sourcePackage);
+
+        // Now reverse the values - ordering should be reversed as well.
+        updateEntryForPackage(TEST_PACKAGES[0], valuesNoNotificationNoDataChannel);
+        updateEntryForPackage(TEST_PACKAGES[1], valuesNoNotificationGoodDataChannel);
+        messages = getStatusMessages();
+        assertEquals(2, messages.size());
+        assertEquals(TEST_PACKAGES[0], messages.get(0).sourcePackage);
+        assertEquals(TEST_PACKAGES[1], messages.get(1).sourcePackage);
+    }
+
+    /** Checks that the expected source status message is returned by VoicemailStatusHelper. */
+    private void checkExpectedMessage(String sourcePackage, ContentValues values,
+            int expectedCallLogMsg, int expectedCallDetailsMsg, int expectedActionMsg,
+            Uri expectedUri) {
+        List<StatusMessage> messages = getStatusMessages();
+        assertEquals(1, messages.size());
+        checkMessageMatches(messages.get(0), sourcePackage, expectedCallLogMsg,
+                expectedCallDetailsMsg, expectedActionMsg, expectedUri);
+    }
+
+    private void checkExpectedMessage(String sourcePackage, ContentValues values,
+            int expectedCallLogMsg, int expectedCallDetailsMessage, int expectedActionMsg) {
+        checkExpectedMessage(sourcePackage, values, expectedCallLogMsg, expectedCallDetailsMessage,
+                expectedActionMsg, TEST_VOICEMAIL_URI);
+    }
+
+    private void checkMessageMatches(StatusMessage message, String expectedSourcePackage,
+            int expectedCallLogMsg, int expectedCallDetailsMsg, int expectedActionMsg,
+            Uri expectedUri) {
+        assertEquals(expectedSourcePackage, message.sourcePackage);
+        assertEquals(expectedCallLogMsg, message.callLogMessageId);
+        assertEquals(expectedCallDetailsMsg, message.callDetailsMessageId);
+        assertEquals(expectedActionMsg, message.actionMessageId);
+        if (expectedUri == null) {
+            assertNull(message.actionUri);
+        } else {
+            assertEquals(expectedUri, message.actionUri);
+        }
+    }
+
+    private void checkNoMessages(String sourcePackage, ContentValues values) {
+        assertEquals(1, updateEntryForPackage(sourcePackage, values));
+        List<StatusMessage> messages = getStatusMessages();
+        assertEquals(0, messages.size());
+    }
+
+    private ContentValues getAllOkStatusValues() {
+        ContentValues values = new ContentValues();
+        values.put(Status.SETTINGS_URI, TEST_SETTINGS_URI.toString());
+        values.put(Status.VOICEMAIL_ACCESS_URI, TEST_VOICEMAIL_URI.toString());
+        values.put(Status.CONFIGURATION_STATE, Status.CONFIGURATION_STATE_OK);
+        values.put(Status.DATA_CHANNEL_STATE, Status.DATA_CHANNEL_STATE_OK);
+        values.put(Status.NOTIFICATION_CHANNEL_STATE, Status.NOTIFICATION_CHANNEL_STATE_OK);
+        return values;
+    }
+
+    private void insertEntryForPackage(String sourcePackage, ContentValues values) {
+        // If insertion fails then try update as the record might already exist.
+        if (getContentResolver().insert(Status.buildSourceUri(sourcePackage), values) == null) {
+            updateEntryForPackage(sourcePackage, values);
+        }
+    }
+
+    private void deleteEntryForPackage(String sourcePackage) {
+        getContentResolver().delete(Status.buildSourceUri(sourcePackage), null, null);
+    }
+
+    private int updateEntryForPackage(String sourcePackage, ContentValues values) {
+        return getContentResolver().update(
+                Status.buildSourceUri(sourcePackage), values, null, null);
+    }
+
+    private List<StatusMessage> getStatusMessages() {
+        // Restrict the cursor to only the the test packages to eliminate any side effects if there
+        // are other status messages already stored on the device.
+        Cursor cursor = getContentResolver().query(Status.CONTENT_URI,
+                VoicemailStatusHelperImpl.PROJECTION, getTestPackageSelection(), null, null);
+        return mStatusHelper.getStatusMessages(cursor);
+    }
+
+    private String getTestPackageSelection() {
+        StringBuilder sb = new StringBuilder();
+        for (String sourcePackage : TEST_PACKAGES) {
+            if (sb.length() > 0) {
+                sb.append(" OR ");
+            }
+            sb.append(String.format("(source_package='%s')", sourcePackage));
+        }
+        return sb.toString();
+    }
+
+    private ContentResolver getContentResolver() {
+        return getContext().getContentResolver();
+    }
+}
diff --git a/tests/src/com/android/dialer/widget/ActionBarControllerTest.java b/tests/src/com/android/dialer/widget/ActionBarControllerTest.java
new file mode 100644
index 0000000..316c155
--- /dev/null
+++ b/tests/src/com/android/dialer/widget/ActionBarControllerTest.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2014 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.dialer.widget;
+
+import android.content.Context;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.dialer.widget.ActionBarController.ActivityUi;
+
+@SmallTest
+public class ActionBarControllerTest extends InstrumentationTestCase {
+
+    private static final int ACTION_BAR_HEIGHT = 100;
+    private ActionBarController mActionBarController;
+    private SearchEditTextLayout mSearchBox;
+    private MockActivityUi mActivityUi;
+
+    private class MockActivityUi implements ActivityUi {
+        boolean isInSearchUi;
+        boolean hasSearchQuery;
+        boolean shouldShowActionBar;
+        int actionBarHideOffset;
+
+        @Override
+        public boolean isInSearchUi() {
+            return isInSearchUi;
+        }
+
+        @Override
+        public boolean hasSearchQuery() {
+            return hasSearchQuery;
+        }
+
+        @Override
+        public boolean shouldShowActionBar() {
+            return shouldShowActionBar;
+        }
+
+        @Override
+        public int getActionBarHeight() {
+            return ACTION_BAR_HEIGHT;
+        }
+
+        @Override
+        public int getActionBarHideOffset() {
+            return actionBarHideOffset;
+        }
+
+        @Override
+        public void setActionBarHideOffset(int offset) {
+            actionBarHideOffset = offset;
+        }
+    }
+
+    /**
+     * Mock version of the searchbox, that updates its state immediately instead of animating
+     */
+    private class MockSearchBox extends SearchEditTextLayout {
+
+        public MockSearchBox(Context context) {
+            super(context, null);
+        }
+
+        @Override
+        public void expand(boolean animate, boolean requestFocus) {
+            mIsExpanded = true;
+        }
+
+        @Override
+        public void collapse(boolean animate) {
+            mIsExpanded = false;
+        }
+    }
+
+    @Override
+    protected void setUp() {
+        mActivityUi = new MockActivityUi();
+        mSearchBox = new MockSearchBox(this.getInstrumentation().getContext());
+        mActionBarController = new ActionBarController(mActivityUi, mSearchBox);
+    }
+
+    // Tapping the search box should only do something when the activity is not in the search UI
+    public void testSearchBoxTapped() {
+        mSearchBox.collapse(false);
+        mActivityUi.isInSearchUi = false;
+        mActionBarController.onSearchBoxTapped();
+        assertActionBarState(true, false, false);
+
+        // Collapse the search box manually again. This time tapping on the search box should not
+        // expand the search box because isInSearchUi is not true.
+        mSearchBox.collapse(false);
+        mActivityUi.isInSearchUi = true;
+        mActionBarController.onSearchBoxTapped();
+        assertActionBarState(false, false, false);
+    }
+
+    // The search box should always end up being faded in and collapsed. If necessary, it should
+    // be slid down or up depending on what the state of the action bar was before that.
+    public void testOnSearchUiExited() {
+        // ActionBar shown previously before entering searchUI
+        mSearchBox.expand(true, false);
+        mSearchBox.setVisible(false);
+        mActivityUi.shouldShowActionBar = true;
+        mActionBarController.onSearchUiExited();
+        assertActionBarState(false, false, false);
+
+        // ActionBar slid up previously before entering searchUI
+        mSearchBox.collapse(false);
+        mSearchBox.setVisible(false);
+        mActivityUi.shouldShowActionBar = false;
+        mActionBarController.onSearchUiExited();
+        assertActionBarState(false, false, true);
+    }
+
+    // Depending on what state the UI was in previously, sliding the dialpad down can mean either
+    // displaying the expanded search box by sliding it down, displaying the unexpanded search box,
+    // or nothing at all.
+    public void testOnDialpadDown() {
+        // No search query typed in the dialpad and action bar was showing before
+        mActivityUi.shouldShowActionBar = true;
+        mActivityUi.isInSearchUi = true;
+        mSearchBox.setVisible(false);
+        mActionBarController.onDialpadDown();
+        assertActionBarState(false, false, false);
+
+        // No search query typed in the dialpad, but action bar was not showing before
+        mActionBarController.slideActionBar(true /* slideUp */, false /* animate */);
+        mActivityUi.shouldShowActionBar = false;
+        mSearchBox.setVisible(false);
+        mActionBarController.onDialpadDown();
+        assertActionBarState(false, false, true);
+
+        // Something typed in the dialpad - so remain in search UI and slide the expanded search
+        // box down
+        mActionBarController.slideActionBar(true /* slideUp */, false /* animate */);
+        mActivityUi.shouldShowActionBar = true;
+        mActivityUi.hasSearchQuery= true;
+        mSearchBox.setVisible(false);
+        mSearchBox.expand(false, false);
+        mActionBarController.onDialpadDown();
+        assertActionBarState(true, false, false);
+    }
+
+    // Sliding the dialpad up should fade out the search box if we weren't already in search, or
+    // slide up the search box otherwise
+    public void testOnDialpadUp() {
+        mActivityUi.isInSearchUi = false;
+        mActionBarController.onDialpadUp();
+        assertActionBarState(false, true, false);
+
+        // In Search UI, with expanded search box and something currently typed in the search box
+        mActivityUi.isInSearchUi = true;
+        mActivityUi.hasSearchQuery = true;
+        mSearchBox.expand(true, false);
+        mSearchBox.setVisible(true);
+        mActionBarController.slideActionBar(true /* slideUp */, false /* animate */);
+        mActionBarController.onDialpadUp();
+        assertActionBarState(true, false, true);
+    }
+
+    private void assertActionBarState(boolean isExpanded, boolean isFadedOut, boolean isSlidUp) {
+        assertEquals(isExpanded, mSearchBox.isExpanded());
+        assertEquals(isFadedOut, mSearchBox.isFadedOut());
+        assertEquals(isSlidUp, mActionBarController.getIsActionBarSlidUp());
+    }
+}